Personagens estranhos no GNU Screen ao clicar

13

Eu tenho um pequeno problema na tela do GNU. Uma sessão de tela GNU é executada no meu RaspberryPi. Agora, às vezes, quando eu entro nele, se eu clicar no terminal (estou usando o terminador no Fedora), vejo caracteres estranhos escritos. Esses caracteres dependem das coordenadas do meu mouse ... Parece uma decodificação incorreta do evento click enviado para o GNU Screen. Esses personagens incluem coisas como

kM#kM -  Z3#Z3  -  q-#q-

etc…

Primeiro pensei que era um problema com o meu tty , então fui abrir uma nova sessão do GNU Screen no meu RaspberryPi: não há problema algum. Eu fiz um stty -a em ambas as sessões e vi que havia diferença. Eu então fiz um stty -g > ~/stty-good-settings na boa sessão e carreguei no ruim com stty 'cat ~/stty-good-settings' (eu comparei os valores depois disso, as configurações foram carregadas com sucesso) mas ainda tenho o problema em uma das sessões de tela e não o outro!

Não sei ao certo o que está acontecendo, se isso se deve ao meu valor TERM (igual em ambos), minhas tty configurações, meu terminal…

    
por Noé Malzieu 21.05.2013 / 22:55

2 respostas

8

Algo que roda dentro tela GNU decidiu que estava rodando em um xterm (ou similar) e ativou o modo Mouse de Aplicativo. (Ou algo que você executa naquele terminal antes de anexar a tela do GNU, possivelmente antes mesmo do ssh, que não se reinicializou corretamente.) Esse é frequentemente o caso se $ TERM não for "tela", mas, por exemplo, “Xterm” ou “screen.xterm”. Este último é visto nos sistemas Debian (e derivados) que possuem ncurses-term instalado; tente limpar esse pacote (no host e no raspi).

Caso contrário, reset (como já foi dito) ou printf \x033c podem ajudar temporariamente. Ou, claro, as seqüências de escape adequadas para informar ao emulador de terminal para desativar o modo de mouse.

    
por 06.12.2013 / 14:35
5

reset tem o seu lugar, mas limpa sua tela. Se você estiver executando xterm ou qualquer coisa compatível , a coisa mais curta e menos intrusiva a ser usada seria

printf '3[?9l'

Isso não é explicitamente indicado no Rastreamento de mouse seção de Sequências de controle XTerm , mas xterm permite que você redefina (desative) o modo de mouse, desativando qualquer um dos modos possíveis que podem ser ativados. Aqueles são documentados como constantes nomeadas:

 #define SET_X10_MOUSE               9
 #define SET_VT200_MOUSE             1000
 #define SET_VT200_HIGHLIGHT_MOUSE   1001
 #define SET_BTN_EVENT_MOUSE         1002
 #define SET_ANY_EVENT_MOUSE         1003

e 9 é o mais curto.

O modo de mouse é ativado por muitos aplicativos. Se alguém sai sem desligá-lo, isso produz os caracteres ímpares que você viu. aplicativos ncurses desativar o modo de mouse em endwin , que todos bem- Comportamento de aplicativo de curses comportado. Outros aplicativos não podem usar (n) maldições, ou podem esquecer de chamar endwin .

ncurses aplicações verificam se o modo xterm-mouse está disponível testando a capacidade kmous (que é parte do screen descrição do terminal). Essa tem sido a maneira padrão de testar o recurso desde 1999 , portanto, é improvável que um aplicativo seja ativado modo de mouse acidentalmente. Em vez disso, indica um aplicativo que esqueceu de fazer o seu trabalho.

Não há, por acaso, entrada screen.xterm no pacote ncurses-term do Debian ( mantê-lo é mais útil do que removê-lo). Aqui está uma lista de todas as entradas relacionadas à tela nesse pacote. A maioria é usada para corrigir discrepâncias no comportamento screen para vários terminais:

/usr/share/terminfo/s/screen.konsole
/usr/share/terminfo/s/screen-16color-bce
/usr/share/terminfo/s/screen-16color
/usr/share/terminfo/s/screen3
/usr/share/terminfo/s/screen.mrxvt
/usr/share/terminfo/s/screen-bce.Eterm
/usr/share/terminfo/s/screen-bce.gnome
/usr/share/terminfo/s/screen.xterm-xfree86
/usr/share/terminfo/s/screen-bce.konsole
/usr/share/terminfo/s/screen-bce.mlterm
/usr/share/terminfo/s/screen-256color-s
/usr/share/terminfo/s/screen-bce.mrxvt
/usr/share/terminfo/s/screen-bce.rxvt
/usr/share/terminfo/s/screen.linux
/usr/share/terminfo/s/screen.vte
/usr/share/terminfo/s/screen-bce.xterm-new
/usr/share/terminfo/s/screen.teraterm
/usr/share/terminfo/s/screen-16color-bce-s
/usr/share/terminfo/s/screen.xterm-r6
/usr/share/terminfo/s/screen+fkeys
/usr/share/terminfo/s/screen-256color-bce-s
/usr/share/terminfo/s/screen.mlterm
/usr/share/terminfo/s/screen-16color-s
/usr/share/terminfo/s/screen-bce.linux
/usr/share/terminfo/s/screen.gnome
/usr/share/terminfo/s/screen.rxvt
/usr/share/terminfo/s/screen2
/usr/share/terminfo/s/screen.Eterm
/usr/share/terminfo/s/screen.xterm-new
    
por 08.04.2016 / 01:27