CTRL + ALT + Serial
« | 06 Jun 2020 | »Man klemmt auf der einen Seite TX, RX und Ground an die PINs eines Systems und auf der anderen Seite alles an einen USB-to- Serial Konverter.
Schon kann man fast jedes Linux-System “fernwarten”. Vorausgesetzt, dieses Linux ist mit einer seriellen Konsole konfiguriert.
Tja, aber wie unterbricht man dort einen laufenden Prozess?
CTRL + C
würde normalerweise helfen.
… aber wie überträgt man die Tasten CTRL + C
über eine serielle
Verbindung?
Die Lösung lautet einfach: ASCII Code 3.
Alle CTRL
+ Buchstabe Kombinationen werden auf die ASCII-Codes 1 bis 26
abgebildet.
… wieder was gelernt.
Ctrl + ? == ? - 64
Das bedeutet natürlich, dass manche Tastenkombinationen etwas Besonderes
bedeuten, z.B.: hat Ctrl + M
dann den Code 13
und ist damit der
ENTER
Taste gleichgesetzt.
Eigentlich läuft alles nach der Formel: Ctrl + {chr} = ASCII({chr}) - 64
Und das hört nicht bei Z -> 26
auf sondern geht bis _ -> 31
weiter.
ASCII | Kombination | Taste | Bedeutung |
---|---|---|---|
3 | CTRL + C | Programm abbrechen | |
7 | CTRL + G | \a Bell, akustisches Signal | |
8 | CTRL + H | BACKSPACE | \b Zeichen löschen |
9 | CTRL + I | TAB | \t Tabulator einrücken |
10 | CTRL + J | \n Line Feed | |
11 | CTRL + K | \v Vertikaler Tabulator | |
12 | CTRL + L | \f Form feed, neue Seite | |
13 | CTRL + M | ENTER | \r Wagenrücklauf |
26 | CTRL + Z | Substitute, Eingabe-Ende | |
27 | CTRL + [ | ESCAPE | Escape-Sequenz einleiten |
28 | CTRL + \ | ||
29 | CTRL + ] | ||
30 | CTRL + ^ | ||
31 | CTRL + _ |
Weitere Kombinationen
Wenn es um die F-Tasten, Pfeiltasten oder Alt + *
geht, wird es leider
kompliziert. Hier hängt es nämlich vom Terminal-Standard der Zielkonsole
ab. Linux setzt hier auf VT-100
und das generiert Escape-Codes für alle möglichen Tasten und
Tastenkombinationen.
Schlimmer ist es beim Einlesen dieser Zeichen über STDIN, denn hier findet ein Mapping von den Sondertasten auf Buchstaben statt, die mit einem Präfix Code eingeleitet werden, oft der ASCII Code 0 (NUL). Oder es werden ebenso Escape-Codes erzeugt.
Fazit
Die CTRL - Formel ist super und auch schon im GATE Projekt zum Teil
in system/keyboards.h
und system/terminals.h
implementiert.
Die Sondertasten und Alt
bleiben für mich noch offen. Da ist es
wichtig eine gutes generisches Mapping zu finden, in welches von
den nativen APIs aus übersetzt wird, damit man gut damit weiterarbeiten
kann.
CTRL + C ist aber so ziemlich die wichtigste Kombination überhaupt, denn ohne sie ist es schwierig laufende (oder bockige) Konsolenprogramm zu beenden.