GNU Screen personajes extraños al hacer clic

21

Tengo un pequeño problema en la pantalla de GNU. Se ejecuta una sesión de pantalla GNU en mi RaspberryPi. Ahora, a veces, cuando me uno, si hago clic en el terminal (estoy usando el terminador en Fedora) veo caracteres extraños escritos. Estos caracteres dependen de las coordenadas de mi mouse ... Parece una decodificación incorrecta del evento click enviado a la pantalla GNU. Estos personajes incluyen cosas como

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

etc ...

Primero pensé que era un problema con mi, ttyasí que fui y abrí una nueva sesión de GNU Screen en mi RaspberryPi: no hay problema en absoluto.
Hice una stty -aen ambas sesiones y vi que había diferencia. Luego hice una stty -g > ~/stty-good-settingssesión buena y la cargué en la mala stty `cat ~/stty-good-settings`(comparé los valores después de eso, la configuración se cargó con éxito) pero todavía tengo el problema en una de las sesiones de pantalla y no en la otra.

No estoy seguro de lo que está sucediendo, si esto se debe a mi TERMvalor (igual en ambos), mi ttyconfiguración, mi terminal ...

Noé Malzieu
fuente
2
Veo esto tmuxde vez en cuando también. En algún momento, los multiplexores de terminales parecen ir de banana y decodificar las entradas incorrectamente ( xtermtambién podría tener algo que decir aquí). resetpor lo general me arregla esto.
Peter
De hecho, ¡también resetfunciona en la pantalla! Gracias por la solución, sin embargo, me encantaría saber por qué ...
Noé Malzieu
Yo también ... :) Sospecho que es algún tipo de mala interacción entre los multiplexores terminales y el terminal contenedor.
Peter
Ya veo ... Puedes responder la pregunta, ¡validaré esta respuesta!
Noé Malzieu

Respuestas:

14

Algo que se ejecuta dentro de la pantalla de GNU decidió que se estaba ejecutando en un xterm (o similar) y habilitó el modo Application Mouse. (O algo que ejecute en ese terminal antes de conectarlo a la pantalla de GNU, posiblemente incluso antes de ssh, que no se reinició correctamente). Este suele ser el caso si $ TERM no es "pantalla" sino, por ejemplo, "xterm" o "pantalla". xterm ". Esto último se ve en los sistemas Debian (y derivados) que se han ncurses-terminstalado; intente purgar ese paquete (en host y raspi).

De lo contrario, reset(como ya se dijo) o printf \\x033cpuede ayudar temporalmente. O, por supuesto, las secuencias de escape adecuadas para indicarle a su emulador de terminal que desactive el modo de mouse.

mirabilos
fuente
resetHizo el truco. Gracias.
AlikElzin-kilaka
9

resettiene su lugar, pero borra tu pantalla. Si está ejecutando xtermo algo compatible , lo más corto y menos intrusivo para usar sería

printf '\033[?9l'

Esto no se dice explícitamente en el seguimiento del ratón sección de XTerm secuencias de control , pero xtermpermite reestablecer (deshabilitar) el modo de ratón apagando cualquiera de los modos posibles que podrían ser activadas. Esos están documentados como constantes nombradas:

 #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

Y 9es el más corto.

El modo mouse está activado por muchas aplicaciones. Si uno sale sin apagarlo, eso produce los caracteres extraños que vio. Las aplicaciones ncurses desactivan el modo de mouse endwin, que todas las aplicaciones curses de buen comportamiento llaman. Otras aplicaciones pueden no usar (n) maldiciones, o pueden olvidarse de llamar endwin.

Las aplicaciones ncurses comprueban si el modo xterm-mouse está disponible probando la kmouscapacidad (que es parte de la screendescripción del terminal). Esa ha sido la forma estándar de probar la función desde 1999 , por lo que es poco probable que una aplicación active accidentalmente el modo del mouse. Más bien, indica una aplicación que olvidó hacer su trabajo.

Por cierto, no hay ninguna screen.xtermentrada en el ncurses-termpaquete de Debian (mantenerlo es más útil que eliminarlo). Aquí hay una lista de todas las entradas relacionadas con la pantalla en ese paquete. La mayoría se utilizan para corregir discrepancias en el screencomportamiento de varios terminales:

/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
Thomas Dickey
fuente