Layar GNU karakter aneh di klik

21

Saya memiliki masalah kecil di layar GNU. Sesi layar GNU berjalan di RaspberryPi saya. Sekarang kadang-kadang, ketika saya bergabung, jika saya klik di terminal (saya menggunakan terminator di Fedora) saya melihat karakter aneh ditulis. Karakter-karakter ini bergantung pada koordinat tetikus saya ... Sepertinya decoding yang salah dari peristiwa klik yang dikirim ke Layar GNU. Karakter-karakter ini termasuk hal-hal seperti

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

dll ...

Saya pertama kali berpikir itu masalah dengan saya ttyjadi saya pergi dan membuka sesi Layar GNU baru di RaspberryPi saya: tidak ada masalah sama sekali.
Saya melakukan stty -apada kedua sesi dan melihat ada perbedaan. Saya kemudian melakukan stty -g > ~/stty-good-settingspada sesi yang baik dan memuatnya pada yang buruk dengan stty `cat ~/stty-good-settings`(saya membandingkan nilai setelah itu, pengaturan berhasil dimuat) tetapi saya masih memiliki masalah di salah satu sesi layar dan bukan yang lain!

Saya tidak yakin apa yang terjadi, jika ini karena TERMnilai saya (sama-sama di keduanya), ttypengaturan saya, terminal saya ...

Noé Malzieu
sumber
2
Saya melihat ini tmuxdari waktu ke waktu juga. Di beberapa titik, terminal multiplexer tampaknya menjadi pisang dan men-decode input secara tidak benar ( xtermmungkin juga ada yang ingin dikatakan di sini). resetbiasanya memperbaiki ini untuk saya.
peterph
Memang, resetbekerja di layar juga! Terima kasih atas perbaikannya, namun, saya ingin mengetahui mengapa ...
Noé Malzieu
Saya juga ... :) Saya menduga itu adalah semacam interaksi buruk antara terminal multiplexer dan terminal yang berisi.
peterph
Saya mengerti .. Anda dapat menjawab pertanyaan, saya akan memvalidasi jawaban ini!
Noé Malzieu

Jawaban:

14

Sesuatu yang berjalan di dalam layar GNU memutuskan itu berjalan dalam xterm (atau serupa) sebagai gantinya dan mengaktifkan mode Mouse Aplikasi. (Atau sesuatu yang Anda jalankan di terminal itu sebelum Anda terpasang ke layar GNU, mungkin bahkan sebelum ssh, yang tidak mengatur ulang dengan benar.) Ini sering terjadi jika $ TERM bukan "layar" tetapi mis. "Xterm" atau "layar. xterm ”. Yang terakhir terlihat pada sistem Debian (dan turunannya) yang telah ncurses-termdiinstal; cobalah membersihkan paket itu (pada host dan raspi).

Kalau tidak, reset(seperti yang sudah dikatakan) atau printf \\x033cdapat membantu sementara. Atau, tentu saja, urutan pelarian yang tepat untuk memberi tahu emulator terminal Anda untuk menonaktifkan mode mouse.

mirabilos
sumber
resetmelakukan trik. Terima kasih.
AlikElzin-kilaka
9

resetmemiliki tempatnya, tetapi membersihkan layar Anda. Jika Anda menjalankan xtermatau apa pun yang kompatibel , hal terpendek, paling tidak intrusif untuk digunakan adalah

printf '\033[?9l'

Itu tidak secara eksplisit dinyatakan di bagian Pelacakan Mouse dari XTerm Control Sequences , tetapi xtermmemungkinkan Anda untuk mereset (menonaktifkan) mode mouse dengan mematikan salah satu mode yang mungkin diaktifkan. Itu didokumentasikan sebagai konstanta bernama:

 #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

dan 9yang terpendek.

Mode mouse dihidupkan oleh banyak aplikasi. Jika seseorang keluar tanpa mematikannya, itu menghasilkan karakter aneh yang Anda lihat. ncurses aplikasi mematikan mouse-mode endwin, di mana semua panggilan aplikasi mengutuk berperilaku baik. Aplikasi lain mungkin tidak menggunakan (n) kutukan, atau mungkin lupa menelepon endwin.

aplikasi ncurses memeriksa apakah mode xterm-mouse tersedia dengan menguji kmouskemampuan (yang merupakan bagian dari screendeskripsi terminal). Itu telah menjadi cara standar untuk menguji fitur tersebut sejak 1999 , jadi tidak mungkin aplikasi mengaktifkan mode mouse secara tidak sengaja. Sebaliknya, ini menunjukkan aplikasi yang lupa melakukan tugasnya.

Ngomong-ngomong, tidak ada screen.xtermentri dalam ncurses-termpaket Debian (menjaganya lebih bermanfaat daripada menghapusnya). Berikut adalah daftar semua entri terkait layar dalam paket itu. Sebagian besar digunakan untuk memperbaiki perbedaan dalam screenperilaku untuk berbagai terminal:

/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
sumber