A combinação de teclas C-c
não é conveniente para digitar o layout do teclado que eu uso e estou tentando alterá-lo globalmente. O objetivo é substituir cada ocorrência de C-c
por outra ligação <apps> d
, de modo que o envio de uma mensagem no Gnus seja <apps> d <apps> d
, a compilação no auxtex seja a mesma e a chave de prefixo do usuário C-c
também seja sempre <apps> d
. A tecla <apps>
está <f19>
no meu teclado.
Lendo o manual, parece que eu preciso usar key-translation map
. Funciona muito bem com a tradução de <f19>
para<apps>
(define-key key-translation-map (kbd "<f19>") (kbd "<apps>"))
(global-set-key (kbd "<apps> s") 'save-buffer)
Infelizmente, ele não funciona quando quero fazer isso C-c
.
(define-key key-translation-map (kbd "<apps> d") (kbd "C-c"))
Quando tento usá-lo, recebo
<apps> d is undefined
e se eu procurar ( C-h k
), eu vejo
<apps> d (translated from <f19> d) is undefined
Existe uma maneira de fazer isso funcionar?
input-decode-map
) tem isso em sua documentação: "Os eventos que vêm das ligações em` input-decode-map '' não são eles mesmos pesquisados em `input-decode-map '." O que faz sentido, se você pensar sobre isso: essa seria uma maneira de impedir traduções infinitas.Respostas:
O problema em sua tentativa é que
apps
vem de uma tradução viakey-translation-map
e essa saída não é pesquisadakey-translation-map
recursivamente. Se você omitirapps
completamente e trabalharf19
diretamente, isso funcionará.Se você deseja usar o
apps
alias, pode usar o fato de que existem dois mapas de tradução semelhantes:input-decode-map
ekey-translation-map
. Useinput-decode-map
para declarar as teclas de função virtual correspondentes às seqüências de teclas enviadas pelo teclado, por exemplo, a tradução def19
paraapps
. Usekey-translation-map
para fazer uma tradução interna no Emacs, por exemplo, deapps d
paraC-c
.fonte
local-function-key-map
e também funciona. Existe uma razão para usar um sobre o outro?local-function-key-map
é que issolocal-function-key-map
pode ser substituído por uma ligação global ou local paraapps d
. Que venha a pensar nisso pode ser um recurso, e não um bug.