Supponendo che si esegua Emacs direttamente sotto un sistema di finestre (Cocoa, MS-DOS, Windows, X, ...) e non all'interno di un terminale di testo (gnome-terminal, konsole, rxvt, xterm, ...), è possibile .
(define-key key-translation-map [?\C-\[] [(control left_bracket)])
(define-key key-translation-map [escape] [?\e])
(define-key function-key-map [escape] nil)
(define-key function-key-map [?\e] nil)
(when (boundp 'local-function-key-map)
;;(define-key local-function-key-map [escape] nil)
(defun remove-escape-from-local-function-key-map ()
(define-key local-function-key-map [?\e] nil)
(define-key local-function-key-map [escape] nil))
(add-hook 'term-setup-hook 'remove-escape-from-local-function-key-map))
Qui ci sono tre diversi eventi di input:
Ctrl + [ , cioè il control
modificatore insieme a un tasto che invia il personaggio [
. Emacs lo mostrerebbe normalmente come C-[
(e C-[
accettato da kbd
), se non ha avuto un caso particolare per questo, come spiegato di seguito.
Numero di carattere 27, che viene inviato dal Esc chiave su alcuni sistemi. Emacs lo dimostra come ESC
quando si visualizzano sequenze di tasti, e \e
nelle stringhe.
Il Esc tasto stesso (in X Window, questo significa il Escape
keysym). Emacs lo dimostra come escape
se non tradotto (vedi sotto).
Emacs normalmente si traduce escape
in ESC
, ma questo è fatto ad un livello relativamente alto, in function-key-map
, quindi può essere sovrascritto modificando function-key-map
o definendo un legame per escape
nella keymap globale o in una keymap locale. GNU Emacs 23 introduce local-function-key-map
che si applica per tipo di terminale.
Emacs si traduce sempre C-[
in ESC
, ad un livello molto basso (in keyboard.c
). Questo non è configurabile.
Tuttavia Emacs fornisce un modo per tradurre le chiavi a un livello relativamente basso: key-translation-map
. Ciò vale prima di qualsiasi associazione globale o locale, ma solo per le chiavi non presenti function-key-map
. Quindi il trucco è scambiare ESC
e escape
a quel punto.
Questi meccanismi sono descritti nel manuale di Emacs Lisp sotto l'intestazione "Keymap di traduzione".
A proposito, si applicano principi simili a
C-i
, TAB
, \t
tab
C-m
, RET
, \r
, return