หน้าจอ GNU ตัวละครแปลก ๆ เมื่อคลิก


21

ฉันมีปัญหาเล็กน้อยในหน้าจอ GNU เซสชั่นหน้าจอ GNU ทำงานบน RaspberryPi ของฉัน ตอนนี้บางครั้งเมื่อฉันเข้าร่วมถ้าฉันคลิกใน terminal (ฉันใช้ terminator ใน Fedora) ฉันเห็นตัวอักษรแปลก ๆ เขียน ตัวละครเหล่านี้ขึ้นอยู่กับพิกัดของเม้าส์ของฉัน ... ดูเหมือนว่าการถอดรหัสเหตุการณ์การคลิกที่ส่งผิดไปยังหน้าจอ GNU ตัวละครเหล่านี้รวมถึงสิ่งต่าง ๆ เช่น

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

ฯลฯ ...

ฉันแรกคิดว่ามันเป็นปัญหาของฉันttyดังนั้นฉันไปและเปิดเซสชัน GNU Screen ใหม่บน RaspberryPi ของฉัน: ไม่มีปัญหาเลย
ฉันทำstty -aทั้งสองครั้งและเห็นว่ามีความแตกต่าง จากนั้นฉันได้ทำ stty -g > ~/stty-good-settingsในเซสชั่นที่ดีและโหลดในเซสชั่นที่ไม่ดีด้วยstty `cat ~/stty-good-settings`(ฉันเปรียบเทียบค่าหลังจากนั้นการตั้งค่าถูกโหลดสำเร็จ) แต่ฉันยังคงมีปัญหาในหนึ่งในเซสชั่นหน้าจอและอื่น ๆ !

ฉันไม่แน่ใจว่าเกิดอะไรขึ้นถ้านี่เป็นเพราะTERMค่าของฉัน(เหมือนกันทั้งคู่) ttyการตั้งค่าของฉันเครื่องของฉัน ...


2
ฉันเห็นสิ่งนี้ด้วยเป็นtmuxครั้งคราวเช่นกัน ในบางจุดเทอร์มินัลมัลติเพล็กเซอร์ดูเหมือนว่าจะเล่นกล้วยและถอดรหัสอินพุตอย่างไม่ถูกต้อง ( xtermอาจมีบางอย่างที่จะพูดที่นี่) resetมักจะแก้ไขปัญหานี้ให้ฉัน
เตอร์

แน่นอนresetทำงานบนหน้าจอด้วย! ขอขอบคุณสำหรับการแก้ไข แต่ฉันรักความเข้าใจบางอย่างเป็นไปทำไม ...
Noé Malzieu

ฉันด้วย ... :) ฉันสงสัยว่ามันจะเป็นการโต้ตอบที่ไม่ดีระหว่างเทอร์มินัลมัลติเพล็กเซอร์กับเทอร์มินัลที่บรรจุอยู่
เตอร์

ฉันเห็น .. คุณสามารถตอบคำถามฉันจะตรวจสอบคำตอบนี้!
Noé Malzieu

คำตอบ:


14

บางสิ่งที่ทำงานภายในหน้าจอ GNU ตัดสินใจว่ากำลังทำงานใน xterm (หรือคล้ายกัน) แทนและเปิดใช้งานโหมดแอปพลิเคชันเมาส์ (หรือบางสิ่งที่คุณเรียกใช้ในเทอร์มินัลนั้นก่อนที่คุณจะเชื่อมต่อกับหน้าจอ GNU อาจเป็นไปได้แม้กระทั่งก่อนหน้า ssh ซึ่งไม่ได้รีเซ็ตอย่างถูกต้อง) นี่เป็นกรณีที่ $ TERM ไม่ใช่ "หน้าจอ" xterm” หลังถูกเห็นบนระบบ Debian (และ derivates) ที่ncurses-termติดตั้ง ลองกำจัดแพ็คเกจนั้น (บนโฮสต์และ raspi)

มิฉะนั้นreset(ตามที่ได้กล่าวไว้แล้ว) หรือprintf \\x033cอาจช่วยเหลือชั่วคราว หรือแน่นอนว่า escape sequences ที่เหมาะสมเพื่อบอกให้ terminal emulator ของคุณปิดใช้งานโหมดเมาส์


resetทำเคล็ดลับ ขอบคุณ
AlikElzin-kilaka

9

resetมีสถานที่ แต่ล้างหน้าจอของคุณ หากคุณใช้งานxtermหรือสิ่งใดก็ตามที่ใช้งานร่วมกันได้สิ่งที่สั้นที่สุดและรบกวนน้อยที่สุดที่จะใช้คือ

printf '\033[?9l'

ไม่ได้ระบุไว้อย่างชัดเจนในส่วนการติดตามเมาส์ของXTerm Control Sequencesแต่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ทั้งหมดที่ทำงานได้ดี โปรแกรมอื่น ๆ อาจจะไม่ใช้ (n) endwinคำสาปหรืออาจลืมที่จะโทร

แอปพลิเคชันที่ ncurses ตรวจสอบว่ามีโหมด xterm-mouse พร้อมใช้งานหรือไม่โดยการทดสอบkmousความสามารถ (ซึ่งเป็นส่วนหนึ่งของscreenคำอธิบายเทอร์มินัล) นี่เป็นวิธีมาตรฐานในการทดสอบคุณสมบัติตั้งแต่ปี 2542ดังนั้นจึงไม่น่าเป็นไปได้ที่แอปพลิเคชันจะเปิดโหมดเมาส์โดยไม่ตั้งใจ ค่อนข้างจะเป็นการระบุว่าแอปพลิเคชันที่ลืมทำงาน

ยังไงก็ตามไม่มีscreen.xtermรายการในncurses-termแพ็คเกจของ Debian (ทำให้มันมีประโยชน์มากกว่าการลบ) นี่คือรายการของรายการที่เกี่ยวข้องกับหน้าจอทั้งหมดในแพ็คเกจนั้น ส่วนใหญ่จะใช้สำหรับการแก้ไขความแตกต่างใน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.