单击GNU屏幕怪异字符


21

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

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

等等…

我最初以为这是我的问题,tty所以我在RaspberryPi上打开了一个新的GNU Screen会话:完全没有问题。
stty -a在两次会议上都做了一次,发现有区别。然后,我 stty -g > ~/stty-good-settings在良好的会话上执行了一个操作,然后将其加载到不良的会话上stty `cat ~/stty-good-settings`(我比较了这些值,然后成功加载了设置),但是在一个屏幕会话中却仍然存在问题,而在另一个屏幕会话中却没有问题!

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


2
tmux也经常看到这一点。在某些时候,终端多路复用器似乎无法正常工作,无法正确解码输入(xterm这里可能也有话要说)。reset通常为我解决此问题。
彼得

确实,也reset可以在屏幕上使用!感谢您的修复,但是,我喜欢的一些见解,为什么......
的NoéMalzieu

我也是... :)我怀疑这是终端多路复用器和包含终端之间的某种不良交互。
彼得

我明白了。您可以回答这个问题,我会验证这个答案!
的NoéMalzieu

Answers:


14

运行的东西里面 GNU屏幕决定了它是在一个xterm(或类似),而不是运行并启用应用程序鼠标模式。(或者在连接到GNU屏幕之前,甚至在ssh之前,您已经在该终端中运行了某些命令,但该命令没有正确地重置自身。)$ TERM不是“ screen”而是“ xterm”或“ screen”时,通常就是这种情况。 xterm”。后者可以在已ncurses-term安装的Debian系统(及其派生系统)上看到。尝试清除该软件包(在主机和raspi上)。

否则reset(如前所述)或printf \\x033c可能会暂时提供帮助。或者,当然,可以使用适当的转义序列来告知终端仿真器禁用鼠标模式。


reset做到了。谢谢。
AlikElzin-kilaka

9

reset有它的位置,但清除屏幕。如果您正在运行xterm兼容,则使用的最短,最少干扰的方法是

printf '\033[?9l'

XTerm Control Sequences的“ Mouse Tracking”部分中未明确说明,但允许您通过关闭任何可能打开的模式来重置(禁用)鼠标模式。这些被记录为命名常量: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)诅咒,或者可能忘记调用endwin

ncurses应用程序通过测试kmous功能(这是screen终端说明的一部分)来检查xterm-mouse模式是否可用。自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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.