Экран GNU странные символы по щелчку

Сегодня, можно было получить лучший из первых (dvcs) и второй (Dropbox) ответы с sparkleshare, который предоставляет подобному Dropbox пользовательскому опыту с основанным на мерзавце устройством хранения данных негласно.

22
26.11.2013, 14:43
2 ответа

Что-то, что выполняет внутренний экран GNU, решило, что он работал в xterm (или подобный) вместо этого и включил режим Application Mouse. (Или что-то, что Вы выполняете в том терминале перед присоединением к экрану GNU, возможно даже прежде ssh, который правильно не сбрасывал себя.) Это часто имеет место, если $TERM не является “экраном”, но например, “xterm” или “screen.xterm”. Последний замечен в системах Debian (и производные), которые имеют ncurses-term установленный; попытайтесь произвести чистку того пакета (на хосте и скрипучий).

Иначе, reset (как был уже сказан), или printf \\x033c может помочь временно. Или, конечно, надлежащие escape-последовательности, чтобы сказать Вашему эмулятору терминала отключать режим мыши.

14
27.01.2020, 19:43

reset имеет свое место, но очищает экран. Если вы используете xterm или что-нибудь совместимое, то самым коротким и наименее навязчивым будет

printf '\033[?9l'

Это не указано явно в Отслеживание мыши разделе Последовательности управления XTerm, но xterm позволяет вам сбросить (отключить) режим мыши, выключив любой из возможных режимов, которые могут быть включены. Они документированы как именованные константы:

 #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

и 9 - самая короткая.

Режим мыши включается многими приложениями. Если выйти из приложения, не выключив его, это приведет к появлению странных символов, которые вы видели. Приложения ncurses выключают режим мыши в endwin, который вызывают все хорошо воспитанные приложения curses. Другие приложения могут не использовать (n)curses, или забыть вызвать endwin.

ncurses-приложения проверяют, доступен ли режим xterm-mouse, тестируя возможность kmous (которая является частью screen описания терминала). Это стандартный способ проверки наличия данной возможности с 1999 года, поэтому маловероятно, что приложение включило режим мыши случайно. Скорее, это указывает на приложение, которое забыло выполнить свою работу.

Кстати, в пакете ncurses-term Debian нет записи screen.xterm (его сохранение более полезно, чем удаление). Вот список всех связанных с экраном записей в этом пакете. Большинство из них используется для исправления несоответствий в поведении экрана для различных терминалов:

/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
27.01.2020, 19:43

Теги

Похожие вопросы