Sie werden sich in einem X11 Emacs wohler fühlen, der Tastatureingaben empfangen und Text anzeigen kann, ohne das Terminal zu codieren und zu decodieren . Der Hauptgrund für die Verwendung eines Textmodus-Editors besteht darin, ihn in screen oder tmux auf einem Remote-Computer auszuführen. Dank Tramp ist es jedoch in der Regel einfacher, die Remote-Datei in Ihrem lokalen Emacs zu bearbeiten. Abgesehen davon können Sie tun, was Sie wollen, solange Ihr Terminal-Emulator zusammenarbeitet, was bei Xterm der Fall ist.
Wenn Sie eine Taste oder Tastenkombination in einem Terminal drücken, wird diese als Folge von einem oder mehreren Zeichen an die im Terminal ausgeführte Anwendung übertragen. Wenn Sie beispielsweise drücken a, empfängt die Anwendung a. Wenn Sie auf drücken Enter, erhält die Anwendung das Zeichen CR(aka ^M(ausgesprochen „control-emm“), aka Zeichen Nummer 13, aka \roder \015). Tastenkombinationen mit Altwerden normalerweise als Zeichen ESC(a.ka. ^[aka \eoder \033) übertragen, gefolgt von der Sequenz für die Taste oder Tastenkombination ohne Alt. Funktionstasten und andere Tastenkombinationen werden als Escape-Sequenzen beginnend mit \e[oder übertragen \eO.
Die Escape-Sequenzen sind nicht vollständig standardisiert, und Terminals ignorieren normalerweise bestimmte Attribute für bestimmte Schlüssel. Beispielsweise werden die Modifikatoren hyper und super normalerweise ignoriert. Sie können sehen, was Ihr Terminal für eine Tastenkombination sendet, indem Sie Ctrl+ Vgefolgt von dieser Tastenkombination in einer Shell-Eingabeaufforderung C-qoder C-h cgefolgt von der Tastenkombination in Emacs drücken.
Mit Xterm können Sie die Escape-Sequenzen für jeden Schlüssel über X-Ressourcen konfigurieren . Die meisten Setups lesen Ressourcen ab dem ~/.XresourcesZeitpunkt, an dem X gestartet wird, und Sie können die Datei manuell mit laden xrdb -merge ~/.Xresources.
XTerm.VT100.translations: #override \n\
Ctrl ~Shift ~Meta <Key> Return: string("\033[73;5~") \n\
Ctrl Shift ~Meta <Key> percent: string("\033[37;6~")
Eine übliche Konvention verwendet Escape-Sequenzen der Form ESC [ number1 ; number2 ~für Funktionstasten mit Modifikatoren. number1gibt die Funktionstaste an ( 15bis 24für F5bis F12- aus historischen Gründen haben F1 bis F4unterschiedliche Escape-Sequenzen) und number2gibt den Modifikator an ( 2für Shift, 5für Ctrl, 3für Meta, 8für Ctrl+ Metaund addiere 1 für + Shift- nein, es ist nicht sehr konsistent).
Sie müssen die Hyper- und Super-Modifikatoren durch ihre Nummer wie Mod1durch angeben Mod5. Führen xmodmap -pmSie den Befehl aus, um die Zuordnung von Keysyms zu Modifikatoren anzuzeigen. Wenn zum Beispiel Super_Lan Mod5 gebunden ist, definiert die folgende Zeile (genau in diesem Fall) eine Bindung für Super+ Space:
~Ctrl ~Meta Mod5 <Key> space: string("\033[32;16~") \n\
Emacs übersetzt Escape-Sequenzen durch input-decode-mapoderlocal-function-key-map (oder function-key-mapvor Emacs 23) in ihre interne Tastendarstellung.
(define-key local-function-key-map "\033[32;16~" [(super ?\ )])
Dieser Pfosten besteht zu 80% aus recyceltem Material von Gibt es Linux-Terminals, die alle Tastenkombinationen verarbeiten können?