Imagine que você altere o layout do teclado. Você tem que gastar tempo treinando seus músculos para encontrar as teclas que deseja digitar, isso já é bastante difícil.
Mas você também precisará gastar tempo treinando seus músculos para encontrar as teclas que deseja inserir como parte dos atalhos, o que é ridículo (geralmente você as escolhe por serem fáceis de alcançar, não por causa da letra *).
Existe uma maneira de essas definições de teclas não se moverem quando você altera o layout do teclado?
Por exemplo, se eu estiver azerty e quiser aprender qwerty, gostaria de beginning-of-line
remapear de C-a
para C-q
, para que fique onde está no meu teclado (primeira tecla à direita de TAB
).
Pelo que entendi, é parcialmente implementado por meio de métodos de entrada, mas segue o caminho oposto: muda a maneira como o emacs interpreta os caracteres de entrada para o texto. Mas não funcionará se você quiser alterar o layout do teclado em todo o sistema, por exemplo.
Entendo que existem várias maneiras de definir associações de teclas, mas, por exemplo, eu consideraria aceitável uma solução que cuide de todas as associações de teclas convertidas de cadeias humanas com a kbd
função
* Não é verdade para determinadas chaves usadas com menos frequência. Por exemplo, o C-c
mapa da maioria dos principais modos usa nomes de teclas fáceis de lembrar, e não fáceis de acessar. Como uma questão de bônus, seria bom poder preservar (remapear para que a chave física não se movesse) algumas combinações de teclas e mover (não remapear, a letra associada à chave não muda) outras. O usuário pode selecionar uma opção ou outra usando duas funções diferentes em vez de kbd
definir suas combinações de teclas.
fonte
Respostas:
Tanto quanto eu entendo sua pergunta,
key-translation-map
parece uma boa alma para o seu problema. Por exemplo, se você gostaria deC-q
agir comoC-a
no seu exemplo, você definiria o seguinte:fonte