Encontre a combinação de teclas do terminal OS / sequência de escape para Ctrl- '

1

Um dos meus atalhos de teclado do Emacs é C-' , que funciona bem na GUI. No terminal, no entanto, não está sendo reconhecido. Eu entendo que preciso descobrir os caracteres reais enviados para o terminal por C-' e mapeá-lo na configuração do emacs.

Seguindo o conselho de Onde eu encontro uma lista de códigos de teclas de terminal para remapear atalhos no bash? , sed -n l está retornando para mim uma linha vazia, mesmo sem o final $ . O Terminal não reconhece a seqüência C-' ?

    
por darksky 11.09.2015 / 20:15

2 respostas

1

Terminais transmitem bytes, não chaves. Teclados como Ctrl + ' precisam ser codificados como seqüências de bytes. Além de caracteres imprimíveis sem modificador ou com apenas Shift , a maioria dos chats não possui caracteres correspondentes e são transmitidos como seqüências de escape, começando com o caractere de escape (o caractere com o valor de byte 27, que você pode escrever como \e em strings do Emacs). Mas muitos keychords não possuem uma seqüência de escape padrão tradicional, e muitos terminais não transmitem estes keychords nem retiram informações sobre modificadores (transmitindo Ctrl + ' como ' character).

Alguns terminais permitem que você configure sequências de escape para cada teclado. No Terminal.app, você pode fazer isso usando as preferências do teclado .

Para Ctrl + ', escolha 3[39;5~ ou 3[27;5;39~ : estes são dois padrões emergentes, o esquema libtermkey e o esquema xterm. Consulte Problemas com atalhos de teclado ao usar o terminal para obter mais informações .

O Emacs traduz seqüências de escape em sua representação de chave interna por meio de input-decode-map or local-function-key-map (ou function-key-map antes do Emacs 23). Coloque qualquer um deles no seu arquivo init:

(define-key input-decode-map "3[39;5~" [(control ?\')])
(define-key input-decode-map "3[27;5;39~" [(control ?\')])
    
por 12.09.2015 / 02:17
0

Eu tentei usar showkey e notei que c-' é idêntico a ' sozinho, e depois de ler a resposta referida e tentar também, testei quase todas as teclas do meu teclado com showkey e encontrei que a maioria deles tem uma saída ^key quando pressionada com controle, como ^C para pressionar c-c , mas apenas poucas chaves não são afetadas pressionando c- , por exemplo, não apenas ' mas , também não é afetado, e o ponto . quando pressionado com c- não imprimiu nem mesmo um ponto, ele simplesmente não fez nada, então eu acho que sua ligação não está funcionando no terminal porque é como pressionar ' que não faz nada! Mas não consigo explicar por que funciona em X , talvez porque possa reconhecê-lo.

Recomendamos que você experimente as chaves com showkey --ascii e espere que essa resposta seja útil.

    
por 12.09.2015 / 01:39