Weiterführende Literatur

Weiterführende Literatur

Wenn ich im Terminal einen Pfeil drücke, bewegt sich der Cursor korrekt, aber wenn ich eine einfache Anwendung in C, C++ oder Python erstelle, schreibt er ^[[A, ^[[B... Ich habe ein einfaches Programm in Python geschrieben, damit Sie den Code und die Ergebnisse sehen können.

Bildbeschreibung hier eingeben

Antwort1

Dies ist die Ebene der Terminaleingabedekodierung, die Sie von der Zeilendisziplin im kanonischen Eingabemodus erhalten. Es ist nicht sehr viel.

Jede Anwendung, die eine editierbare Befehlszeileneingabe präsentieren möchte, die Cursortasten, Editiertasten und Funktionstasten berücksichtigt, muss das Terminal in den Roheingabemodus schalten und den ECMA-48-Eingabestrom dekodieren, wobei Terminaltypen (und verschiedene State-Machine-Pfuschereien für RXVT, die Linux-KVTs, die SCO-Konsole und Interix) berücksichtigt werden müssen. Ihr Programm muss dies tun.

Hierfür gibt es verschiedene Bibliotheken, von GNU ReadLine bis libtermkey/AbonnierenUndBearbeitungszeile(auch bekannt als libedit) zu ZLE in der Z-Shell und der Bearbeitungsbibliothek der Korn-Shell.

Weiterführende Literatur

verwandte Informationen