Desativa o relatório do mouse em uma sessão de terminal depois que o tmux sai inesperadamente

2

Eu atualmente uso o iTerm2 e freqüentemente SSH em servidores remotos e inicio uma sessão do tmux. Em todos esses servidores, ao conectá-los ao SSH, eu automaticamente criei uma configuração do tmux que permite o relatório do mouse com o seguinte em ~/.tmux.conf : setw -g mode-mouse on

No entanto, se minha sessão SSH terminar abruptamente e o tmux não tiver a chance de desativar o relatório do mouse, usar o mouse em qualquer lugar nas janelas do terminal introduz códigos estranhos como:

$ 0;94;18M0;94;18m0;19;33M0;14;33m

Vejo que não sou o único a ter este problema, consulte link

Eu acredito que uma solução fácil para este problema seria criar um trap em um script bash que é usado para abrir minhas sessões SSH. A armadilha pode então desabilitar o relatório do mouse sempre que a sessão do SSH para o tmux terminar.

O problema é que não tenho ideia de como desabilitar o relatório do mouse de dentro do bash. Eu encontrei um artigo descrevendo os códigos do console , mas eu não tive sorte com isso .

Como posso enviar um comando para o terminal para desativar o relatório do mouse?

    
por Matthew O'Riordan 25.08.2014 / 15:31

1 resposta

3

Para enviar códigos para o terminal do bash você pode usar o comando printf . (Você também pode usar echo , é claro, mas printf geralmente é mais adequado para enviar comandos de terminal, pois tem suporte explícito para enviar ESC e facilita separar os caracteres de comando dos parâmetros, etc.)

O Tmux, bem como os programas mais populares que suportam rastreamento de mouse por terminal, usam o XTerm Mouse Reporting (também conhecido como "X11 Mouse Reporting").

Para desativar o Mouse Reporting do bash, use este código:

printf '\e[?1000l'

ESC [ ? … l significa “DEC Private Mode Reset (DECRST)” (o mesmo código que termina com um h em vez de um l ativa o recurso).

Existe também um protocolo antigo de "Relatório de Rato X10", que usa 9 em vez de 1000 , que pode ser desativado com ESC [ ? 9 l , mas, tanto quanto sei, é improvável que você veja isso recurso usado para rastreamento de mouse.

Eu normalmente uso a documentação Seqüências de controle Xterm como minha referência canônica para códigos de terminal e recomendo , uma vez que é um guia prático para o que o XTerm suporta e é também a documentação mais abrangente de códigos comumente suportados que eu encontrei.

    
por 22.03.2015 / 09:08