Como fazer o xterm enviar a tecla Alt para o emacs como Meta?

9

Vejo que essa pergunta foi feita várias vezes . As soluções fornecidas aqui não parecem se aplicar à minha configuração. Aqui está a minha história:

Eu uso o ubuntu 12.0.04 LTS, com xmonad (não acima do gnome), e uso o xterm para o meu trabalho. Eu preferiria usar o xterm em vez de um terminal diferente ou a própria janela do emacs. Ao usar o emacs -nw, vejo que o Alt não é reconhecido. Eu verifiquei usando xev que Alt está realmente sendo gerado. Além disso, se eu estiver usando o rxvt, vejo que o Alt está sendo reconhecido pelo emacs -nw. Estou usando o modo maligno (como um usuário vim de longa data e um emacs newbee) e eu realmente preferiria não ter minha chave de escape recuperada como alt (que foi a solução fornecida em outro thread). O que devo fazer? (Se ajudar, Alt-x na janela do xterm sem o emacs executando gera "ø" ou se eu executar emacs -nw -Q).

rahul
fonte
Se não me engano, Alt está sendo lido como M.
Braiam
Eu não entendi, você quer dizer M, e não Meta, certo? Por que você diz isso?
Rahul
Tecla Emacs Meta. Você não pode pressionar Mx?
Braiam
Oh, esse é o meu problema. Eu esperava que o Alt-x gere Mx (como no modo gráfico), mas isso não ocorre no xterm para mim. Em vez disso, gera (ø)
rahul 03/04

Respostas:

13

Como visto no Arch Wiki , você precisa fazer o Xterm para enviar a chave de escape correta para o programa:

Se você usar a Alttecla para atalhos de teclado, será necessário no seu arquivo de recursos:

XTerm*metaSendsEscape: true

Então, faça:

echo 'XTerm*metaSendsEscape: true' >> ~/.Xresources

E reinicie sua sessão do Xterm.

Braiam
fonte
Obrigado, isso funcionou. Portanto, se Alt envia escape agora, como o xterm lida com Escape? (Escape funciona também, eu estou pedindo para o meu entendimento.)
rahul
@rahul eu não disse "Esc" escape, mas escapou pressione a tecla "^ M"
Braiam
4
em vez de reiniciar a sua sessão você também pode executarxrdb -merge ~/.Xresources
Christian Fritz
2

Se a atualização de ~ / .Xresources não funcionar, faça o que a documentação diz e atualize-a em ~/.Xdefaults

http://frequal.com/linux/XTermMetaSendsEscape.html

Adão
fonte
Isso funcionou para mim no servidor X vazio, como com startx /usr/bin/xterm, onde ~/.Xresourcesfoi ignorado.
Ruslan
1

Existe uma alternativa interessante para gerenciar seus arquivos .Xdefaults/ .Xresources, fornecendo a cadeia de recursos diretamente como xtermopção de linha de comando:

xterm -xrm 'xterm*VT100.metaSendsEscape: true'

Isso é útil, por exemplo, se você tiver um alias personalizado de x-terminal-emulatorqualquer maneira.

vog
fonte