Guten Abend,
wenn man auf der Tastatur eine Pfeiltaste drückt, wird ja normal die folgenden Sequenz in stdin geschrieben:
'\033' (esc)
'['
und 'A', 'B', 'C' oder 'D' -- je nach gedrückter Pfeiltaste.
Unter Linux kann man so ganz einfach die Pfeiltaste herausfinden, die gedrückt wurde:
while(1){
// Erstes Zeichen ist ESC
if(getch() == '\033'){
// Zeichen '[' überspringen
getch();
// Pfeiltaste auslesen
switch(getch()){
case 'A': /* Pfeil hoch */ break;
case 'B': /* Pfeil runter */ break;
case 'C': /* Pfeil rechts */ break;
case 'D': /* Pfeil links */ break;
}
}
Unter Windows werden aber nur zwei Zeichen in stdin geschrieben:
Hoch - ÓH
Runter - ÓP
Rechts - ÓM
Links - ÓK
Das erste Zeichen hat jetzt aber 4 Bytes. Wenn ich die entpackten Bytes wieder in zwei Zeichenkette packe, bekomme ich aber andere Zeichen (Ã und ein Steuerzeichen, möglicherweise Esc, konnte nicht validiert werden) heraus.
Hat jemand eine Idee, wie man in C unter Windows feststellen kann, welche Pfeiltaste gedrückt wurde?
Liebe Grüße
Win7User