Os terminais conhecem caracteres, não chaves, portanto, chaves sem caractere correspondente precisam ser traduzidas em seqüências de escape e de volta. Quando você pressiona Alt + Esquerda , ela é convertida na seqüência de caracteres \eO3d
, em que \e
é um caractere de escape. Infelizmente, algumas dessas seqüências de caracteres não são padronizadas, então você precisa declarar o que seu terminal envia ao Emacs.
Pressione Ctrl + Q e depois a combinação de teclas (ex. Alt + Esquerda ) para inserir a sequência de teclas em um buffer. O comando Ctrl + Q diz ao Emacs para interpretar literalmente o caracter de escape inicial. Você verá algo como ^[O3d
em que ^[
não é os dois caracteres ^[
, mas um caractere de escape, melhor escrito em uma string Emacs Lisp como \e
.
Adicione a seqüência de escape de cada combinação de chaves a input-decode-map
. Por exemplo (esse código entra no seu .emacs
):
(define-key input-decode-map "\eO3a" [M-up])
(define-key input-decode-map "\eO3b" [M-down])
(define-key input-decode-map "\eO3c" [M-right])
(define-key input-decode-map "\eO3d" [M-left])
(kbd "M-<up>")
ou (kbd "<M-up>")
são formas alternativas de escrever [M-up]
.
Depois de declarar essas traduções, o Emacs saberá que quando o terminal for enviado, por exemplo, ^[O3d
significa a combinação de teclas Alt + Esquerda e suas ligações funcionarão.