GNU Screen seltsame Zeichen auf Klick

21

Ich habe ein kleines Problem mit dem GNU-Bildschirm. Auf meinem RaspberryPi läuft eine GNU-Bildschirmsitzung. Wenn ich mich jetzt manchmal dem Terminal anschließe, sehe ich seltsame Zeichen, wenn ich auf Fedora klicke (ich verwende Terminator). Diese Zeichen hängen von den Koordinaten meiner Maus ab ... Scheint, als ob das an GNU Screen gesendete Klickereignis falsch dekodiert wurde. Diese Zeichen beinhalten Dinge wie

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

etc…

Ich dachte zuerst, es sei ein Problem mit meinem, ttyalso ging ich und eröffnete eine neue GNU Screen-Sitzung auf meinem RaspberryPi: überhaupt kein Problem.
Ich habe stty -aan beiden Sitzungen teilgenommen und festgestellt, dass es Unterschiede gibt. Ich habe dann eine stty -g > ~/stty-good-settingsgute Sitzung durchgeführt und diese mit der schlechten Sitzung geladen stty `cat ~/stty-good-settings`(ich habe die Werte danach verglichen, die Einstellungen wurden erfolgreich geladen), aber ich habe immer noch das Problem in einer der Bildschirmsitzungen und nicht in der anderen!

Ich bin nicht sicher, was passiert, wenn dies an meinem TERMWert (in beiden ttyFällen gleich), meinen Einstellungen, meinem Terminal liegt.

Noé Malzieu
quelle
2
Ich sehe das tmuxvon Zeit zu Zeit auch mit. Irgendwann scheinen die Terminal-Multiplexer banan zu werden und die Eingänge falsch zu dekodieren ( xtermkönnte hier auch etwas zu sagen haben). resetbehebt das normalerweise für mich.
Peterph
Funktioniert auch resetauf dem Bildschirm! Vielen Dank für die Lösung, aber ich würde gerne einen Einblick erhalten, warum ...
Noé Malzieu
Ich auch ... :) Ich vermute, dass es sich um eine schlechte Interaktion zwischen den Terminal-Multiplexern und dem übergeordneten Terminal handelt.
Peterph
Ich verstehe .. Sie können die Frage beantworten, ich werde diese Antwort validieren!
Noé Malzieu

Antworten:

14

Etwas, das im GNU-Bildschirm ausgeführt wird, entschied, dass es stattdessen in einem xterm (oder ähnlichem) ausgeführt wurde, und aktivierte den Application Mouse-Modus. (Oder etwas, das Sie in diesem Terminal ausführen, bevor Sie eine Verbindung zum GNU-Bildschirm hergestellt haben, möglicherweise sogar vor ssh, das sich nicht richtig zurückgesetzt hat.) Dies ist häufig der Fall, wenn $ TERM nicht "screen", sondern z. B. "xterm" oder "screen" ist. xterm ”. Letzteres tritt auf ncurses-terminstallierten Debian-Systemen (und Derivaten) auf . Versuchen Sie, dieses Paket zu löschen (auf Host und Raspi).

Ansonsten kann reset(wie schon gesagt) printf \\x033cvorübergehend geholfen werden. Oder natürlich die richtigen Escape-Sequenzen, um Ihren Terminal-Emulator anzuweisen, den Mausmodus zu deaktivieren.

Mirabilos
quelle
resethat den Trick gemacht. Vielen Dank.
AlikElzin-kilaka
9

resethat seinen Platz, löscht aber Ihren Bildschirm. Wenn Sie ausgeführt werden xtermoder etwas Kompatibles verwenden , ist dies die kürzeste und am wenigsten störende Option

printf '\033[?9l'

Das ist in der nicht explizit genannt Maus - Tracking - Abschnitt von XTerm- Steuersequenzen , sondern xtermermöglicht es Ihnen , (deaktivieren) Mausmodus zurücksetzen , indem Sie eine der möglichen Modi ausgeschaltet, die eingeschaltet werden können. Diese sind als benannte Konstanten dokumentiert:

 #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

und 9ist die kürzeste.

Der Mausmodus wird von vielen Anwendungen aktiviert. Wenn man das Programm verlässt, ohne es auszuschalten, entstehen die seltsamen Zeichen, die Sie gesehen haben. ncurses-Anwendungen deaktivieren den Mausmodus, in endwindem alle gut erzogenen Anwendungen den Aufruf verfluchen. Andere Anwendungen verwenden möglicherweise keine (n) Flüche oder vergessen den Anruf endwin.

ncurses-Anwendungen überprüfen, ob der xterm-mouse-Modus verfügbar ist, indem sie die kmousFähigkeit testen (was Teil der screenTerminalbeschreibung ist). Das hat sich seit der normale Weg zu Test für die Funktion gewesen 1999 , so dass es unwahrscheinlich ist , dass eine Anwendung Mausmodus aktiviert versehentlich. Es zeigt vielmehr eine Anwendung an, die vergessen hat, ihre Arbeit zu erledigen.

Es gibt übrigens keinen screen.xtermEintrag in Debians ncurses-termPaket (es ist hilfreicher, es zu behalten als es zu entfernen). Hier ist eine Liste aller bildschirmbezogenen Einträge in diesem Paket. Die meisten werden zum Beheben von screenVerhaltensabweichungen für verschiedene Terminals verwendet:

/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
Thomas Dickey
quelle