Ich möchte den ASCII-Code der letzten Taste, die ich gedrückt habe, jede x Sekunde ausgeben.Alle x Sekunden mit einem anderen Ausgang anzeigen
Als Beispiel:
Wenn ich ein (97) drücken, sollte das Terminal zeigt die 97 jede x Sekunde. Wenn ich jetzt das w (119) drücke, sollte das Programm jetzt die 119 statt der 97 drucken. Bis jetzt druckt mein Programm nur die erste Taste, die ich gedrückt habe.
Hier sind die Haupt- und die andere Methode:
int main(int argc, char const *argv[]){
printf("Hello World!");
while(1){
movePlayer();
fflush(stdout);
sleep(1);
}
return 0;
}
void movePlayer(){
system("/bin/stty raw");
int input = getchar(); //support_readkey(1000);
//fprintf(stdout, "\033[2J");
//fprintf(stdout, "\033[1;1H");
printf("\b%d",input);
system("/bin/stty cooked");
}
EDIT:
Mit ein wenig von Tests habe ich jetzt ein Verfahren, das mein Problem
int read_the_key(int timeout_ms) {
struct timeval tv = { 0L, timeout_ms * 1000L };
fd_set fds;
FD_ZERO(&fds);
FD_SET(0, &fds);
int r = select(1, &fds, NULL, NULL, &tv);
if (!r) return 0;
return getchar();
}
es ist, weil 'getchar' für genau ein Zeichen wartet; Sie müssen stattdessen 'read' verwenden. –