单击时 GNU 屏幕显示奇怪的字符

Noé*_*ieu 23 gnu-screen xterm tty

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

kM#kM -  Z3#Z3  -  q-#q-
Run Code Online (Sandbox Code Playgroud)

等等…

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

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

mir*_*los 16

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

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


Tho*_*key 10

reset有它的位置,但会清除您的屏幕。如果您正在运行xterm或任何兼容的东西,那么最短、最少干扰的东西是

printf '\033[?9l'
Run Code Online (Sandbox Code Playgroud)

这在XTerm Control Sequences鼠标跟踪部分没有明确说明,但允许您通过关闭任何可能打开的模式来重置(禁用)鼠标模式。这些记录为命名常量: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
Run Code Online (Sandbox Code Playgroud)

并且9是最短的。

许多应用程序都打开了鼠标模式。如果没有关闭它就退出,则会产生您看到的奇怪字符。ncurses 应用程序在 中关闭鼠标模式endwin,所有表现良好的curses 应用程序都会调用该模式。其他应用程序可能不使用 (n)curses,或者可能忘记调用endwin.

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

顺便说一下,screen.xtermDebian 的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
Run Code Online (Sandbox Code Playgroud)