Mam mały problem z ekranem GNU. Sesja ekranowa GNU działa na moim RaspberryPi. Czasami, kiedy do niego dołączę, klikam terminal (używam terminatora w Fedorze) i widzę dziwne znaki napisane. Znaki te zależą od współrzędnych mojej myszy… Wydaje się, że błędne dekodowanie zdarzenia kliknięcia wysłanego na ekran GNU. Te postacie obejmują takie rzeczy jak
kM#kM - Z3#Z3 - q-#q-
itp…
Najpierw pomyślałem, że to problem, tty
więc otworzyłem nową sesję GNU Screen na moim RaspberryPi: w ogóle nie ma problemu.
Zrobiłem stty -a
na obu sesjach i zobaczyłem, że były różnice. Potem zrobiłem stty -g > ~/stty-good-settings
dobrą sesję i załadowałem ją do złej stty `cat ~/stty-good-settings`
(potem porównałem wartości, ustawienia zostały pomyślnie załadowane), ale nadal mam problem w jednej sesji ekranowej, a nie w drugiej!
Nie jestem pewien, co się dzieje, jeśli wynika to z mojej TERM
wartości (tej samej w obu), moich tty
ustawień, mojego terminalu…
źródło
tmux
Od czasu do czasu też to widzę . W pewnym momencie multipleksery terminali wydają się być bananami i niepoprawnie dekodują dane wejściowe (xterm
może mieć coś do powiedzenia tutaj).reset
zwykle naprawia to dla mnie.reset
działa również na ekranie! Dzięki za poprawkę, chciałbym jednak dowiedzieć się, dlaczego ...Odpowiedzi:
Coś, co działa na ekranie GNU, zdecydowało, że zamiast tego działa w xterm (lub podobnym) i włącza tryb Myszy aplikacji. (Lub coś, co uruchamiasz w tym terminalu, zanim podłączyłeś się do ekranu GNU, być może nawet przed ssh, który sam się nie zresetował.) Często dzieje się tak, gdy $ TERM nie jest „screen”, ale np. „Xterm” lub „screen. xterm ”. To ostatnie jest widoczne na
ncurses-term
zainstalowanych systemach Debiana (i pochodnych) ; spróbuj wyczyścić ten pakiet (na hoście i raspi).W przeciwnym razie
reset
(jak już powiedziano) lubprintf \\x033c
może tymczasowo pomóc. Lub, oczywiście, odpowiednie sekwencje specjalne, które nakazują emulatorowi terminala wyłączenie trybu myszy.źródło
reset
wykonał lewę. Dzięki.reset
ma swoje miejsce, ale czyści ekran. Jeśli prowadziszxterm
lub coś kompatybilnego , najkrótszą, najmniej inwazyjną rzeczą będzieNie jest to wyraźnie określone w sekcji Śledzenie myszy w Sekwencjach kontrolnych XTerm , ale
xterm
umożliwia zresetowanie (wyłączenie) trybu myszy poprzez wyłączenie dowolnego z możliwych trybów, które mogą być włączone. Są one udokumentowane jako nazwane stałe:i
9
jest najkrótszy.Tryb myszy jest włączony przez wiele aplikacji. Jeśli ktoś wyjdzie bez jego wyłączenia, powstanie nieparzysta postać, którą zobaczyłeś. Aplikacje ncurses wyłączają tryb myszy, w
endwin
którym wszystkie dobrze zachowane klątwy wywołują aplikację. Inne aplikacje mogą nie używać (n) przekleństw lub mogą zapomnieć o połączeniuendwin
.Aplikacje ncurses sprawdzają, czy tryb myszy xterm jest dostępny, testując jego
kmous
zdolność (która jest częściąscreen
opisu terminala). Jest to standardowy sposób testowania tej funkcji od 1999 r. , Więc jest mało prawdopodobne, aby aplikacja przypadkowo włączyła tryb myszy. Wskazuje raczej na aplikację, która zapomniała wykonać swoją pracę.Nawiasem mówiąc,
screen.xterm
wncurses-term
pakiecie Debiana nie ma wpisu (utrzymanie go jest bardziej pomocne niż usunięcie go). Oto lista wszystkich wpisów związanych z ekranem w tym pakiecie. Większość służy do usuwania rozbieżności wscreen
zachowaniu różnych terminali:źródło