it-swarm-es.tech

GNU Caracteres extraños en pantalla al hacer clic

Tengo un pequeño problema en la pantalla GNU. Una sesión de pantalla GNU se ejecuta en mi RaspberryPi. Ahora, a veces, cuando me uno a ella, si hago clic en el terminal (Estoy usando Terminator en Fedora) Veo caracteres extraños escritos. Estos caracteres dependen de las coordenadas de mi mouse ... Parece una decodificación incorrecta del evento de clic enviado a GNU Pantalla. Estos caracteres incluir cosas como

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

etc ...

Primero pensé que era un problema con mi tty así que fui y abrí una nueva sesión de pantalla GNU en mi RaspberryPi: no hay problema en absoluto.
Hice un stty -a en ambas sesiones y vi que había diferencias. Luego hice un stty -g > ~/stty-good-settings en la sesión buena y la cargó en la mala con stty `cat ~/stty-good-settings` (Comparé los valores después de eso, la configuración se cargó correctamente) ¡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 valor TERM (el mismo en ambos), mi configuración tty, mi terminal ...

23
Noé Malzieu

Algo que se ejecuta adentro GNU la pantalla decidió que se estaba ejecutando en un xterm (o similar) en su lugar y habilitó el modo de ratón de la aplicación (o algo que ejecuta en ese terminal antes que usted) adjunto a GNU pantalla, 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 Este último se ve en sistemas Debian (y derivados) que tienen ncurses-term instalado; intente purgar ese paquete (en Host y raspi).

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

16
mirabilos

reset tiene su lugar, pero borra la pantalla. Si está ejecutando xterm o cualquier cosa compatible, el más corto , lo menos intrusivo para usar sería

printf '\033[?9l'

Eso no se indica explícitamente en la sección Seguimiento del mouse de Secuencias de control XTerm, pero xterm le permite restablecer (deshabilitar) el modo de mouse desactivando cualquiera de los modos posibles que podrían estar activados. Estos se documentan como constantes con nombre:

 #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 9 es el más corto.

El modo de ratón está activado por muchas aplicaciones. Si uno sale sin apagarlo, eso produce los caracteres extraños que vio. Las aplicaciones ncurses desactivan el modo mouse en endwin , que todas las aplicaciones curses con buen comportamiento llaman. Es posible que otras aplicaciones no utilicen (n) curses o se olviden de llamar a endwin.

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

Por cierto, no hay screen.xterm entrada en Debian ncurses-term paquete (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 comportamiento de screen para 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
9
Thomas Dickey