Como as chaves são passadas para o terminal emacs e gnome?

0

Eu quero usar Alt + 6 para alternar para a 6ª guia do terminal do gnome. Mas quando estou no emacs sob uma guia de terminal, a chave será passada para o emacs e não funcionará no terminal.

A chave é capturada primeiro pelo terminal e depois o terminal a passa para o emacs?

Eu não quero mudar as chaves para o emacs ou para o terminal do gnome. Existe alguma maneira que eu possa adicionar uma tecla modificadora de escape antes de Alt + 6, para que não funcione no emacs, mas no terminal do gnome?

Obrigado!

    
por Tim 25.04.2015 / 17:49

1 resposta

2

Versões mais antigas do gnome-terminal, como enviadas até o Ubuntu Utopic, usadas para implementar um comportamento "automático" "dual". Se você tivesse pelo menos 6 abas, Alt + 6 mudaria para o 6º; caso contrário, ele enviaria o pressionamento de tecla para qualquer aplicativo que estivesse sendo executado (por exemplo, emacs).

Versões mais recentes (começando com o Ubuntu Vivid) não têm mais esse comportamento automático. Alt + 1 - Alt + 9 são vinculados por padrão para alternar as guias e, portanto, não fazem nada se você não tiver abas suficientes abertas. Você pode indefini-las em Editar- > Preferências- > Atalhos ou reatribuir essas ações para outras chaves de sua escolha, nesse caso o Alt + 6 será enviado para o aplicativo (emacs).

Alternativamente, você pode se acostumar a pressionar Esc 6.

Is the key first caught by terminal, and then the terminal pass it to emacs?

Sim. O terminal não tem como saber se o aplicativo em execução lidaria com o evento de não, e não consegue descobrir depois de enviar o evento. Então, a abordagem oposta (vamos ver se o emacs faz algo com isso, e se não, então a aba de switches do terminal gnome) não funciona por design.

A única exceção a esse design é eventos de mouse. Um aplicativo precisa sinalizar para o terminal com antecedência se estiver interessado em eventos de mouse. Se for, o gnome-terminal envia o evento, caso contrário, ele o manipula.

Editar: eventos de mouse não é a única exceção :) Outro que me ocorreu é que quando o terminal é alternado para a tela alternativa (aquela que não tem uma barra de rolagem; como feito pela maioria dos aplicativos de tela cheia) as teclas que afetam a barra de rolagem (por exemplo, Shift + PageUp) também são enviadas para o aplicativo como seqüências de escape.

    
por 25.04.2015 / 18:23