É possível impedir que o emacs traduza meus acordes principais?

6

emacs tem o comportamento padrão de adivinhar qual combinação de teclas (acorde) eu pressionei. Ele é automaticamente convertido para um acorde menor quando a combinação de teclas pressionada não está atribuída, por exemplo. <C-M-up> (translated from <C-M-S-up>)

Como posso desligar isso?

Eu realmente não vejo nenhum valor nele, mas deve ser para alguns usuários. Eu também gostaria de saber qual a vantagem que esse recurso (duvidoso) oferece ...

    
por Peter.O 29.11.2011 / 15:37

2 respostas

7

Resposta curta: não existe uma maneira fácil de desativar a tradução para a versão não alterada da ligação.

Se você quiser encontrar sequências de teclas não acopladas, você pode tentar M-xdescrever-não-chaves-de-chaves . E, de fato, descobre que C-S-up está desvinculado (insira 15 quando for solicitada complexidade).

O comando describe-unbound-keys pode ser encontrado na biblioteca unbound , que está disponível aqui na wiki.

Resposta mais longa:

A documentação relevante pode ser encontrada em Entrada de Seqüência de Chaves que afirma:

If an input character is upper-case (or has the shift modifier) and has no key binding, but its lower-case equivalent has one, then read-key-sequence converts the character to lower case. Note that lookup-key does not perform case conversion in this way.

É óbvio que você não gosta desse comportamento, mas para alterar essa tradução específica, você teria que modificar keyboard.c no código-fonte do Emacs - procure o comentário:

  /* If KEY is not defined in any of the keymaps,
     and cannot be part of a function key or translation,
     and is a shifted function key,
     use the corresponding unshifted function key instead.  */

e desative a instrução if que a segue.

Em geral, as traduções de teclado existem por outros motivos (como mencionado no link de documentação no topo desta resposta) e você pode personalizá-las personalizando os vários mapas de teclado mencionados.

    
por 30.11.2011 / 01:23
4

Não há nenhuma configuração que desabilite o comportamento de todas as chaves. Para combinações de teclas específicas, você pode vincular a chave a ignore , o que impedirá o Emacs de automatizar a chave para a versão não deslocada.

Quanto ao motivo pelo qual o automapping existe, uma vantagem deste sistema é que ele permite usar o Emacs em terminais somente em maiúsculas, sem ter que duplicar todas as ligações (normalmente) minúsculas. O GNU Emacs tem idade suficiente para existir quando muitos desses terminais ainda estavam em uso.

    
por 17.02.2012 / 02:22