Schermata GNU strani personaggi al clic


21

Ho un piccolo problema nella schermata GNU. Una sessione dello schermo GNU viene eseguita sul mio RaspberryPi. Ora a volte, quando mi unisco ad esso, se faccio clic sul terminale (sto usando un terminatore su Fedora) vedo strani caratteri scritti. Questi personaggi dipendono dalle coordinate del mio mouse ... Sembra una decodifica errata dell'evento click inviato alla schermata GNU. Questi personaggi includono cose come

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

eccetera…

Ho pensato che fosse un problema con il mio, ttyquindi sono andato e ho aperto una nuova sessione GNU Screen sul mio RaspberryPi: nessun problema.
Ho fatto stty -aentrambe le sessioni e ho visto che c'erano delle differenze. Poi ho fatto una stty -g > ~/stty-good-settingsbuona sessione e l'ho caricata con quella cattiva stty `cat ~/stty-good-settings`(dopo ho confrontato i valori, le impostazioni sono state caricate correttamente) ma ho ancora il problema in una delle sessioni dello schermo e non nell'altra!

Non sono sicuro di cosa stia accadendo, se ciò è dovuto al mio TERMvalore (lo stesso in entrambi), alle mie ttyimpostazioni, al mio terminale ...


2
Lo vedo anche tmuxdi volta in volta. Ad un certo punto i multiplexer terminali sembrano andare a banana e decodificare gli input in modo errato ( xtermpotrebbe anche avere qualcosa da dire qui). resetdi solito risolve questo per me.
peterph

Anzi, resetfunziona anche sullo schermo! Grazie per la correzione, tuttavia, mi piacerebbe avere un'idea del perché ...
Noé Malzieu,

Anch'io ... :) Sospetto che sia una sorta di cattiva interazione tra i multiplexer terminali e il terminale contenitore.
peterph

Vedo .. Puoi rispondere alla domanda, convaliderò questa risposta!
Noé Malzieu,

Risposte:


14

Qualcosa che gira all'interno della schermata GNU ha deciso che invece era in esecuzione in un xterm (o simile) e ha abilitato la modalità Mouse dell'applicazione. (O qualcosa che si esegue in quel terminale prima di collegarsi allo schermo GNU, possibilmente anche prima di ssh, che non si è ripristinato correttamente.) Questo è spesso il caso se $ TERM non è "schermo" ma ad esempio "xterm" o "schermo. xterm”. Quest'ultimo è visto sui sistemi Debian (e derivati) che sono stati ncurses-terminstallati; prova a eliminare quel pacchetto (su host e raspi).

Altrimenti, reset(come già detto) o printf \\x033cpuò aiutare temporaneamente. O, ovviamente, le sequenze di escape appropriate per dire all'emulatore di terminale di disabilitare la modalità mouse.


resetha fatto il trucco. Grazie.
AlikElzin-Kilaka,

9

resetha il suo posto, ma cancella lo schermo. Se stai correndo xtermo qualcosa di compatibile , la cosa più breve e meno invadente da usare sarebbe

printf '\033[?9l'

Ciò non è esplicitamente dichiarato nella sezione Tracciamento mouse di Sequenze di controllo XTerm , ma xtermconsente di ripristinare (disabilitare) la modalità mouse disattivando una delle possibili modalità che potrebbero essere attivate. Quelli sono documentati come costanti nominate:

 #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

ed 9è il più corto.

La modalità mouse è attivata da molte applicazioni. Se uno esce senza spegnerlo, questo produce i caratteri dispari che hai visto. Le applicazioni ncurses disattivano la modalità mouse endwin, che tutte le applicazioni maledizioni ben educate chiamano. Altre applicazioni non possono usare (n) maledizioni o possono dimenticare di chiamare endwin.

Le applicazioni di ncurses controllano se la modalità xterm-mouse è disponibile testando la kmousfunzionalità (che fa parte della screendescrizione del terminale). Questo è stato il modo standard per testare la funzionalità dal 1999 , quindi è improbabile che un'applicazione abbia attivato la modalità mouse accidentalmente. Piuttosto, indica un'applicazione che ha dimenticato di fare il suo lavoro.

A proposito, non c'è alcuna screen.xtermvoce nel ncurses-termpacchetto di Debian (tenerlo è più utile che rimuoverlo). Ecco un elenco di tutte le voci relative allo schermo in quel pacchetto. La maggior parte viene utilizzata per correggere discrepanze nel screencomportamento di vari terminali:

/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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.