GNU Screenのクリック時の奇妙な文字


21

GNU画面に小さな問題があります。GNUスクリーンセッションがRaspberryPiで実行されます。時々、私がそれに参加するとき、ターミナルをクリックすると(Fedoraでターミネーターを使用しています)奇妙な文字が書かれています。これらの文字はマウスの座標に依存します…GNU Screenに送信されたクリックイベントの誤ったデコードのようです。これらのキャラクターには

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

等…

私はそれが自分の問題だと最初に思ったttyので、RaspberryPiで新しいGNU Screenセッションを開いて、問題ありませんでした。
私がやったstty -aの両方のセッションでその差があった見ました。次に stty -g > ~/stty-good-settings、良いセッションでAを実行し、悪いセッションでそれをロードしましたstty `cat ~/stty-good-settings`(その後、値を比較し、設定が正常にロードされました)が、スクリーンセッションの1つで問題があり、もう一方ではありません!

これが私のTERM価値(両方に同じ)、tty設定、端末に起因する場合、何が起こっているのかわかりません…


2
私もこれtmuxを時々見ます。ある時点で、端末マルチプレクサはバナナになり、入力を誤ってデコードしているように見えxtermます(ここで何か言いたいことがあるかもしれません)。reset通常はこれを修正します。
ペテルフ

実際、reset画面でも動作します!修正のためのおかげで、しかし、私はなぜ...へといくつかの洞察をみたい
ノエマルジュー

私も... :)私はそれが端末マルチプレクサと収容端末間の何らかの悪い相互作用であると疑っています。
ペテルフ

なるほど..質問に答えることができます。この答えを検証します!
ノエマルジュー

回答:


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の制御シーケンスが、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アプリケーションは、kmous機能(screen端末の説明の一部)をテストすることにより、xtermマウスモードが使用可能かどうかを確認します。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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.