GNU 屏幕上点击时出现奇怪的字符

GNU 屏幕上点击时出现奇怪的字符

我在 GNU 屏幕上遇到一个小问题。 GNU 屏幕会话在我的 RaspberryPi 上运行。现在有时,当我加入它时,如果我单击终端(我在 Fedora 上使用 terminator),我会看到写有奇怪的字符。这些字符取决于我的鼠标坐标……似乎是发送到 GNU 屏幕的单击事件的错误解码。这些字符包括诸如

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

ETC…

我首先认为这是我的问题,tty所以我在 RaspberryPi 上打开了一个新的 GNU Screen 会话:一点问题都没有。
stty -a对这两次会议都做了一次检查,发现了差异。然后我 stty -g > ~/stty-good-settings在好的会话上做了一个,并将其加载到坏的会话上stty `cat ~/stty-good-settings`(之后我比较了值,设置已成功加载),但我仍然在一个屏幕会话中遇到问题,而不是在另一个屏幕会话中!

我不确定发生了什么,如果这是由于我的TERM值(两者相同)、我的tty设置、我的终端......

答案1

运行的东西里面GNU 屏幕决定它在 xterm(或类似的)中运行,并启用应用程序鼠标模式。 (或者在连接到 GNU screen 之前,甚至可能在 ssh 之前,在该终端中运行的某些内容,它没有正确重置自身。) 如果 $TERM 不是“screen”而是“xterm”或“screen”,则通常会出现这种情况。 xterm”。后者出现在已ncurses-term安装的 Debian 系统(及其衍生版本)上;尝试清除该软件包(在主机和 raspi 上)。

否则,reset(正如已经说过的)或printf \\x033c可能暂时有所帮助。或者,当然,正确的转义序列可以告诉您的终端模拟器禁用鼠标模式。

答案2

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,所有行为良好的诅咒应用程序都调用它。其他应用程序可能不使用 (n)curses,或者可能忘记调用endwin.

ncurses 应用程序通过测试功能来检查 xterm-mouse 模式是否可用kmous(这是screen终端描述)。自此以来,这一直是测试该功能的标准方法1999年,因此应用程序不太可能意外打开鼠标模式。相反,它表明应用程序忘记完成其工作。

screen.xterm顺便说一句, Debian 中没有条目ncurses-term包(保留它比删除它更有帮助)。以下是该包中所有与屏幕相关的条目的列表。大多数用于修复screen各种终端的行为差异:

/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

相关内容