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.
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.

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