PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeichen von stdin direkt einlesen (ohne Return)



Demonus
23-01-2003, 13:30
Hey,
gibt es unter Linux in C eine Möglichkeit ein Zeichen von der Tastatur einzulesen
ohne das man die Eingaben mit der Enter-Taste bestätigen muss. Wenn ich z.B.
mit der Funktion:

ioctl(fileno(stdin),FIONREAD,&nread);
prüfe, ob ein Zeichen zum lesen vorhanden ist, funktioniert das nur, wenn ich die
Eingabe mit der Enter-Taste bestätige.
Ich hab schon mal daran gedacht die Terminal-Flags zu verändern, hab aber nichts
gefunden, um dieses Problem zu lösen. Weis jemand Rat?

pik7
23-01-2003, 14:55
hallo,

eine Möglichkeit:

#include <stdio.h>
#include <termios.h>
#include <unistd.h>

int main()
{
struct termios alt,neu;
char eingabe;
tcgetattr(fileno(stdin),&alt);
neu=alt;
neu.c_lflag &= ~ICANON;
neu.c_lflag &= ~ECHO;
tcsetattr(fileno(stdin),TCSANOW,&neu);
printf("Ein taste drücken\n");
eingabe=getc(stdin);
printf("Taste %c gedrückt\n" ,eingabe);
tcsetattr(fileno(stdin),TCSANOW,&alt);
}

man kann natürlich auch ncurses benutzen

gruß

Demonus
24-01-2003, 06:49
Danke für die schnelle Antwort. Jetzt funktioniert alles so wie es soll.