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, wird die Anwendung empfangen a. Wenn Sie drücken Enter, erhält die Anwendung das Zeichen CR(aka ^M(ausgesprochen "control-emm"), aka Zeichen Nummer 13, aka \roder \015). Tastenkombinationen 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 übertragen, die mit \e[oder beginnen \eO.
Die Escape-Sequenzen sind nicht vollständig standardisiert, und Terminals ignorieren normalerweise bestimmte Attribute für bestimmte Schlüssel. Beispielsweise wird Ctrl+ Shift+ letterhäufig standardmäßig genau wie Ctrl+ übertragen letter.
Sie können sehen, was Ihr Terminal für eine Tastenkombination sendet, indem Sie Ctrl+ Vgefolgt von dieser Tastenkombination in einer Shell-Eingabeaufforderung oder C-qoder C-h cgefolgt von der Tastenkombination in Emacs drücken.
Mit einigen Terminalemulatoren können Sie die Escape-Sequenzen für jeden Schlüssel konfigurieren. Unter Xterm erfolgt dies über X-Ressourcen . Die meisten Setups lesen Ressourcen ab ~/.Xresourcesdem Start von X, und Sie können die Datei manuell mit laden xrdb -merge ~/.Xresources.
Term.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 des Formulars ESC [ number1 ; number2 ~für Funktionstasten mit Modifikatoren. number1gibt die Funktionstaste ( 15auf 24für F5zu F12- aus historischen Gründen F1 durch F4verschiedene Escape - Sequenzen haben) und number2gibt den Modifikator ( 2für Shift, 5für Ctrl, 3für Meta, 8für Ctrl+ Meta, und fügen Sie 1 für + Shift- nein, ist es nicht sehr konsistent).
Emacs übersetzt Escape-Sequenzen durch input-decode-mapoderlocal-function-key-map (oder function-key-mapvor Emacs 23) in seine interne Schlüsseldarstellung .
(define-key local-function-key-map "\033[73;5~" [(control return)])
(define-key local-function-key-map "\033[37;6~" [(control ?L)])
infocmp $TERM?