Frage Precedent für Terminal-Tastenbelegungen für Windows oder Mac Cmd-Taste


Unix-Terminals senden ASCII-Codes unter 32 für Strg + einen anderen Schlüssel, und haben mindestens zwei Möglichkeiten, "Meta" zu senden (entweder Voranstellen von Code 27 oder Setzen des High-Bits eines ASCII-Zeichens). Gibt es einen Präzedenzfall für eine Möglichkeit, die Verwendung anderer Zusatztasten wie "Super" oder die Windows-Logo-Taste oder den Mac zu verschlüsseln Befrage Schlüssel?

Ich würde gerne mappen Befrage+ Pfeiltasten in iTerm2, aber ich weiß nicht, welche Codes zugewiesen werden sollen. Ich benutze bereits die Möglichkeit Schlüssel für "Meta" mit den Pfeiltasten.


0
2018-05-30 00:02


Ursprung




Antworten:


Die Konvention, das 8. Bit zu setzen, wenn Meta gedrückt wird, ist ziemlich archaisch und wird nicht mehr oft oder tatsächlich in irgendeinem modernen Terminal verwendet, das mehr Zeichen als nur ASCII unterstützt. Die Konvention, ESC voranzustellen, ist auch heute noch ungewöhnlich.

Die 32 ASCII-Steuerzeichen werden zwar als ASCII-Steuerzeichen gesendet (Codepunkte kleiner als 32), aber das deckt nur die Tastenkombination STRG- @, STRG-A bis STRG-Z, ESC, STRG- \, STRG-], STRG- ^ und ab Strg-_. Alles andere, wie zum Beispiel Ctrl-4, existiert nicht in ASCII und es gibt keine Konvention, um es durch ein Terminal zu senden.

Im Grunde genommen ist dies das Endergebnis: Alles, was nicht als einfaches Zeichen gesendet werden kann (d. H. Unicode für moderne Unicode-unterstützende Terminals existiert), muss als Escape-Sequenz gesendet werden. Escape-Sequenzen werden durch das Terminal-Emulationsprotokoll definiert. Fast alle heute verwendeten Terminalemulationsprotokolle sind von VT100 abgeleitet oder ähnlich, und Escape-Sequenzen sind für allgemeine Tasten verfügbar, die auf Tastaturen gefunden werden, die nicht als Zeichen existieren: Pfeiltasten, Funktionstasten usw.

VT100 und zugehörige Terminalemulationsprotokolle enthalten keine Konventionen für die Übertragung von Modifikatortasten, nicht einmal die Standardschaltflächen wie Shift und Control. Software, die auf einem TTY läuft, kann den Unterschied zwischen einer Enter-Taste und einer Shift-Enter-Taste nicht unterscheiden. Es kann nicht einmal den Unterschied zwischen einem Enter-Tastendruck und einem Control-M-Tastendruck unterscheiden.

Die Tatsache, dass diese Modifikatorsequenzen nicht durch ein Terminal übertragen werden können, kann als eine gute Sache angesehen werden. Zum Beispiel kann die MacOS-Terminal-Anwendung den keysV-Tastenanschlag für seine eigene Verwendung (Einfügen) beanspruchen, da er sowieso nicht an das tty gesendet werden kann.


0
2018-05-30 13:48