Pfeiltaste in der console.
-
Hallo. ich (muss) für dos/eingabeaufforderung(cmd.exe) schreiben; mit borland compiler5.0.
im programm müssen, um den cursor zu navigieren die pfeiltasten benutzt werden.
leider kann ich nicht ordentlich abfangen, was z.b. scanf zuirückliefert, wenn ich eine pfeiltaste drücke. looks like "0\r72" "0\r75" "0\r80" "0\r77"
lieg ich da falsch? wie cann ich die eingaben denn ordetlich abfangen und auswertén.danke!
für schnelle: m.stolze@passus.dek(r)eep on the rigth way!
-
Von der von dir genutzten Sprache habe ich in dem Zusammenhang keine Ahnung, aber vielleicht kann ich dir trotzdem helfen.
Die Pfeiltasten senden 2 Bytes an Tastaturcodes. Zuerst eine 0, daran erkennt man, dass es keine "normale" Taste ist, sondern sowas wie die F-Tasten oder eben der Cursorblock.
Danach folgt der eigentliche Tastencode, den du dann auswerten musst.Falls es hilft: In Turbo Pascal musste man immer zweimal readkey machen. Mit dem ersten kam die 0 und dann der Tastencode.
Verstanden, was ich meine? Ich bin nämlich der Meinung, das deine Werte schon so richtig aussehen - habe allerdings nicht die genauen Zahlen zur Hand.
-
Vielleciht hilft dir ja das hier weiter:
http://ciips.ee.uwa.edu.au/~morris/Year1/CLP110/Labs/kbhit.html
-
estartu_de schrieb:
Falls es hilft: In Turbo Pascal musste man immer zweimal readkey machen. Mit dem ersten kam die 0 und dann der Tastencode.
ja. das geht bestimmt auch(heisst bei c++ getch();).
nur ist das doch irgendwie 'unsauber'. weill es können ja eben auch eingaben gemacht werden die nur ein byte haben.aber klar.
int pfeiltaste; if(getch()==0) pfeiltast=getch();
maybe...??
-
Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Was meinst Du mit unsauber?
Du kannst den Rückgabewert von getch() ja auch in einer Variable speichern und dann überprüfen. Somit ist der Wert, den getch geliefert hat, nicht verloren, wie es bei Deiner if-Anweisung der Fall ist, wenn etwas != 0 zurückgegeben wird.
Oder was meintest Du?
-
Gut, dass es auch die Konsolen-FAQ gibt
http://www.c-plusplus.net/forum/viewtopic.php?t=39324
Da steht alles drin, was hier gebraucht wird.
PS: Noch ein kleines Beispiel zum Abfangen
switch(getch()) { case 0: switch(getch()) { case 72: //Cursortaste nach oben printf("Es wurde die Cursortaste Oben gedrückt!"); break; default: printf("Sondertaste wird nicht interpretiert!"); break; } break; case 27: printf("Es wurde Escape gedrückt!"); break; default: printf("Taste wird nicht interpretiert!"); break; }
-
THX a Lot m8s!!
ich hab mir das auch so ausgedacht wie hier das letzte beispiel...
dank. bis demnächst!