Warum zeigt das Terminal "^ [[A" "^ [[B" "^ [[C" "^ [[D] beim Drücken der Pfeiltasten in Ubuntu?

Ich geschrieben habe ein klitzekleines Programm in Ansi-C unter Windows erste, und ich es kompiliert unter Ubuntu mit dem integrierten GCC jetzt.

Das Programm ist einfach:

  • Lesen Sie die Zeile von der Konsole mit scanf().
  • Analysieren Sie die Zeichenfolge und berechnen.

Aber etwas seltsam passiert, wenn ich will, um den cursor zu bewegen, es werde vier Charaktere:

  • drücken Sie - "^[[A"
  • drücken Sie Dn - "^[[B"
  • drücken Sie Rt - "^[[C"
  • drücken Sie Lt - "^[[D"

Warum zeigt das Terminal

  • Wie man diese vermeiden?
  • Warum druckt es 4 Zeichen anstelle von beweglichen cursor?
Kommentar zu dem Problem
Sonderzeichen wie ^U und Backspace funktionieren wird, da die Tastatur-Treiber verarbeitet diese. Aber die Pfeil-Taste Verhalten, das Sie verwendet, um darauf programmiert ist in die shell. Wenn Sie Ihr eigenes Programm schreiben, müssen Sie es behandeln sich selbst, oder Sie installieren könnte rlwrap und führen Sie das Programm rlwrap my_prog und es wird tun, was Sie erwarten. Die Zeichen, die Sie sehen, sind die escape-Sequenzen, erzeugt durch jene Taste drückt. Kommentarautor: lurker
Das sind die traditionellen ANSI-escape-Sequenzen, die repräsentieren die cursor-Tasten. Siehe stackoverflow.com/questions/4130048/... Kommentarautor: keshlam

InformationsquelleAutor der Frage Kevin Dong | 2014-01-27

Schreibe einen Kommentar