La combinación de teclas C-c
no es conveniente para escribir la distribución del teclado que uso, y estoy tratando de cambiarla globalmente. El objetivo es reemplazar cada aparición de C-c
con otro enlace <apps> d
, de modo que enviar un mensaje en Gnus sería <apps> d <apps> d
, compilar en auxtex sería lo mismo, y la clave de prefijo del usuario C-c
también sería siempre <apps> d
. La tecla <apps>
está <f19>
en mi teclado.
Al leer el manual, parece que necesito usarlo key-translation map
. Funciona muy bien con la traducción de <f19>
a<apps>
(define-key key-translation-map (kbd "<f19>") (kbd "<apps>"))
(global-set-key (kbd "<apps> s") 'save-buffer)
Desafortunadamente, no funciona cuando quiero hacer esto C-c
.
(define-key key-translation-map (kbd "<apps> d") (kbd "C-c"))
Cuando trato de usarlo, obtengo
<apps> d is undefined
y si lo busco ( C-h k
), veo
<apps> d (translated from <f19> d) is undefined
¿Hay alguna manera de hacer que esto funcione?
input-decode-map
) tiene esto en su documentación: "Los eventos que provienen de enlaces en 'input-decode-map' no se miran en 'input-decode-map'". Lo que tiene sentido, si lo piensas: esta sería una forma de evitar traducciones infinitas.Respuestas:
El problema en su intento es que
apps
proviene de una traducción víakey-translation-map
, y esta salida no se busca de formakey-translation-map
recursiva. Si omite porapps
completo y trabajaf19
directamente, funciona.Si desea utilizar el
apps
alias, puede aprovechar el hecho de que hay dos mapas de traducción similares:input-decode-map
ykey-translation-map
. Utilíceloinput-decode-map
para declarar teclas de función virtuales correspondientes a secuencias de teclas enviadas por su teclado, por ejemplo, la traducción def19
aapps
. Se usakey-translation-map
para hacer una traducción interna en Emacs, por ejemplo, deapps d
aC-c
.fuente
local-function-key-map
y también funciona. ¿Hay alguna razón para usar uno sobre el otro?local-function-key-map
es quelocal-function-key-map
se puede anular con un enlace global o local paraapps d
. Pensar en ello podría ser una característica más que un error.