GNU Screen các ký tự lạ khi nhấp


21

Tôi có một vấn đề nhỏ trong màn hình GNU. Một phiên màn hình GNU chạy trên RaspberryPi của tôi. Bây giờ, đôi khi, khi tôi tham gia nó, nếu tôi nhấp vào thiết bị đầu cuối (Tôi đang sử dụng terminator trên Fedora), tôi thấy các ký tự kỳ lạ được viết. Các ký tự này phụ thuộc vào tọa độ chuột của tôi Có vẻ như giải mã sai sự kiện nhấp được gửi đến Màn hình GNU. Những nhân vật này bao gồm những thứ như

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

vv

Đầu tiên tôi nghĩ đó là một vấn đề với tôi ttynên tôi đã đi và mở một phiên GNU Screen mới trên RaspberryPi của tôi: không có vấn đề gì cả.
Tôi đã làm một stty -atrong cả hai phiên và thấy có sự khác biệt. Sau đó, tôi đã thực hiện một stty -g > ~/stty-good-settingsphiên tốt và tải nó vào phiên xấu stty `cat ~/stty-good-settings`(tôi đã so sánh các giá trị sau đó, các cài đặt đã được tải thành công) nhưng tôi vẫn gặp sự cố ở một trong các phiên trên màn hình chứ không phải vấn đề khác!

Tôi không chắc điều gì đang xảy ra, nếu điều này là do TERMgiá trị của tôi (giống nhau ở cả hai), ttycài đặt của tôi, thiết bị đầu cuối của tôi


2
Thỉnh tmuxthoảng tôi cũng thấy điều này . Tại một số điểm, bộ ghép kênh đầu cuối dường như chuyển sang chuối và giải mã các đầu vào không chính xác ( xtermcũng có thể có điều gì đó để nói ở đây). resetthường sửa cái này cho tôi
peterph

Thật vậy, resethoạt động trong màn hình quá! Tuy nhiên, cảm ơn vì đã sửa chữa, tôi thích một số hiểu biết sâu sắc về lý do tại sao ...
Noé Malzieu

Tôi cũng vậy ... :) Tôi nghi ngờ đó là một loại tương tác xấu giữa bộ ghép kênh đầu cuối và thiết bị đầu cuối chứa.
peterph

Tôi hiểu rồi .. Bạn có thể trả lời câu hỏi, tôi sẽ xác nhận câu trả lời này!
Noé Malzieu

Câu trả lời:


14

Một cái gì đó chạy bên trong màn hình GNU đã quyết định rằng nó đang chạy trong một xterm (hoặc tương tự) thay vào đó và kích hoạt chế độ Chuột ứng dụng. (Hoặc một cái gì đó bạn chạy trong thiết bị đầu cuối đó trước khi bạn gắn vào màn hình GNU, thậm chí trước cả ssh, nó không tự thiết lập lại chính xác.) xterm. Cái sau được nhìn thấy trên các hệ thống Debian (và các dẫn xuất) đã ncurses-termđược cài đặt; hãy thử thanh trừng gói đó (trên máy chủ và raspi).

Mặt khác, reset(như đã nói) hoặc printf \\x033ccó thể giúp đỡ tạm thời. Hoặc, tất nhiên, các chuỗi thoát thích hợp để báo cho trình giả lập thiết bị đầu cuối của bạn tắt chế độ chuột.


resetđã lừa Cảm ơn.
AlikElzin-kilaka

9

resetcó vị trí của nó, nhưng xóa màn hình của bạn. Nếu bạn đang chạy xtermhoặc bất cứ thứ gì tương thích , thứ ngắn nhất, ít xâm phạm nhất sẽ được sử dụng là

printf '\033[?9l'

Điều đó không được nêu rõ trong phần Theo dõi chuột của Trình tự điều khiển XTerm , nhưng xtermcho phép bạn đặt lại (tắt) chế độ chuột bằng cách tắt bất kỳ chế độ nào có thể được bật. Chúng được ghi nhận là hằng số có tên:

 #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

9là ngắn nhất.

Chế độ chuột được bật bởi nhiều ứng dụng. Nếu một người thoát ra mà không tắt nó, điều đó tạo ra các ký tự kỳ lạ mà bạn đã thấy. các ứng dụng ncurses tắt chế độ chuột endwin, trong đó tất cả các ứng dụng chửi rủa ứng dụng tốt. Các ứng dụng khác có thể không sử dụng (n) lời nguyền, hoặc có thể quên gọi endwin.

các ứng dụng ncurses kiểm tra xem chế độ chuột xterm có khả dụng hay không bằng cách kiểm tra kmouskhả năng (là một phần của screenmô tả thiết bị đầu cuối). Đó là cách tiêu chuẩn để kiểm tra tính năng từ năm 1999 , do đó, không chắc là ứng dụng bật chế độ chuột một cách tình cờ. Thay vào đó, nó chỉ ra một ứng dụng quên làm công việc của nó.

Nhân tiện, không có screen.xtermmục nào trong ncurses-termgói của Debian (giữ nó hữu ích hơn là gỡ bỏ nó). Dưới đây là danh sách tất cả các mục liên quan đến màn hình trong gói đó. Hầu hết được sử dụng để sửa chữa sự khác biệt trong screenhành vi cho các thiết bị đầu cuối khác nhau:

/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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.