Hallo zusammen,
ich versuche gerade eine Konsolenanwendung in C unter Linux zu schreiben, die mir nicht nur den Tastendruck, sonder auch das Loslassen der Taste zurückgibt, also Key-Down und Key-Up.
Habe durch googlen und probieren folgenden Code zusammengestellt, für den aber leider sudo-Rechte von Nöten sind und noch viel schlimmer, der die Tastatur global aushebt, d.h. während das Programm läuft, andere Programme keine Tastatur mehr zur Verfügung haben.![Confused :confused: :confused:](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f615.png)
Vielen Dank schonmal!
Stefan
ich versuche gerade eine Konsolenanwendung in C unter Linux zu schreiben, die mir nicht nur den Tastendruck, sonder auch das Loslassen der Taste zurückgibt, also Key-Down und Key-Up.
Habe durch googlen und probieren folgenden Code zusammengestellt, für den aber leider sudo-Rechte von Nöten sind und noch viel schlimmer, der die Tastatur global aushebt, d.h. während das Programm läuft, andere Programme keine Tastatur mehr zur Verfügung haben.
![Confused :confused: :confused:](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f615.png)
Code:
#include <stdio.h>
#include <termios.h>
#include <fcntl.h>
int main() {
struct termios orig, raw;
unsigned char c=0;
int fd, i=0;
if ((fd=open("/dev/console",O_RDONLY)) < 0) perror("console");
tcgetattr(fd, &orig);
raw = orig;
cfmakeraw(&raw);
tcsetattr(fd, TCSANOW, &raw);
sleep(1);
printf("Tasten druecken und mit c abbrechen\n");
do{
read( fd, &c, 1 );
printf( "code = %i\n", c );
i++;
}while( c!=174 && i<50 );
tcsetattr(fd, TCSANOW, &orig);
return 0;
}
Vielen Dank schonmal!
Stefan