क्लिक पर GNU स्क्रीन अजीब अक्षर


21

मुझे जीएनयू स्क्रीन में एक छोटी सी समस्या है। मेरे रास्पबेरीपीआई पर एक जीएनयू स्क्रीन सत्र चलता है। अब कभी-कभी, जब मैं इसमें शामिल होता हूं, अगर मैं टर्मिनल में क्लिक करता हूं (फेडोरा पर टर्मिनेटर का उपयोग कर रहा हूं) तो मुझे अजीब अक्षर लिखे हुए दिखाई देते हैं। ये पात्र मेरे माउस के निर्देशांक पर निर्भर करते हैं ... GNU स्क्रीन पर भेजे गए क्लिक इवेंट के गलत डिकोडिंग की तरह लगता है। इन पात्रों में जैसी चीजें शामिल हैं

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

आदि…

मैंने पहले सोचा था कि यह मेरे साथ एक समस्या थी, ttyइसलिए मैंने अपने रास्पबेरीपी पर एक नया जीएनयू स्क्रीन सत्र खोला: कोई समस्या नहीं।
मैंने stty -aदोनों सत्रों में ऑन किया और देखा कि अंतर थे। मैंने फिर stty -g > ~/stty-good-settingsअच्छे सत्र पर काम किया और इसे खराब वाले पर लोड किया stty `cat ~/stty-good-settings`(मैंने उसके बाद के मूल्यों की तुलना की, सेटिंग्स सफलतापूर्वक लोड की गईं) लेकिन मुझे अभी भी स्क्रीन सत्रों में से एक में समस्या है और दूसरे में नहीं!

मुझे यकीन नहीं है कि क्या हो रहा है, अगर यह मेरे TERMमूल्य (दोनों में समान), मेरी ttyसेटिंग्स, मेरे टर्मिनल के कारण है ...


2
मैं tmuxसमय-समय पर इसे देखता हूं । कुछ बिंदु पर टर्मिनल मल्टीप्लेक्सर्स केला जाने लगते हैं और गलत तरीके से इनपुट को डिकोड करते हैं ( xtermयहां कुछ कहने के लिए भी हो सकता है)। resetआमतौर पर यह मेरे लिए ठीक करता है।
पीटरफ

दरअसल, resetस्क्रीन में भी काम करता है! हालांकि, इस फिक्स के लिए धन्यवाद, मुझे कुछ अंतर्दृष्टि पसंद होगी क्यों ...
नो मल्ज़्यू

मुझे भी ... :) मुझे शक है कि यह टर्मिनल मल्टीप्लेक्सर्स और युक्त टर्मिनल के बीच किसी प्रकार की खराब बातचीत है।
पेट्रीफ

मैं देख रहा हूँ .. आप सवाल का जवाब दे सकते हैं, मैं इस जवाब को मान्य करूँगा!
नोए माल्ज़ियू

जवाबों:


14

GNU स्क्रीन के अंदर चलने वाली कुछ चीज़ों ने तय किया कि यह बदले में एक xterm (या समान) में चल रहा था और एप्लिकेशन माउस मोड सक्षम किया गया था। (या आप GNU स्क्रीन से जुड़े होने से पहले उस टर्मिनल में कुछ चलाते हैं, संभवतः ssh से पहले भी, जो ठीक से रीसेट नहीं हुआ था।) अक्सर ऐसा होता है यदि $ TERM "स्क्रीन" नहीं है, लेकिन उदाहरण के लिए "xterm" या "स्क्रीन"। टर्म "। बाद को डेबियन सिस्टम (और व्युत्पन्न) पर देखा गया है जो ncurses-termस्थापित हैं; उस पैकेज को शुद्ध करने का प्रयास करें (मेजबान और रास्पि पर)।

अन्यथा, reset(जैसा कि पहले ही कहा गया था) या printf \\x033cअस्थायी रूप से मदद कर सकता है। या, ज़ाहिर है, माउस मोड को अक्षम करने के लिए अपने टर्मिनल एमुलेटर को बताने के लिए उचित बच क्रम।


resetचाल चली। धन्यवाद।
एलिकएल्ज़िन-किलाका

9

resetइसकी जगह है, लेकिन आपकी स्क्रीन को साफ करता है। यदि आप चला रहे हैं xtermया कुछ भी संगत है , तो उपयोग करने वाली सबसे छोटी, कम से कम घुसपैठ वाली चीज होगी

printf '\033[?9l'

जिसे एक्सटर्म कंट्रोल सीक्वेंस के माउस ट्रैकिंग सेक्शन में स्पष्ट रूप से नहीं बताया गया है , लेकिन आपको संभव मोड को चालू करके किसी भी मोड को बंद करके (निष्क्रिय) माउस मोड को रीसेट करने की अनुमति देता है। जिनका नाम स्थिरांक के रूप में प्रलेखित है: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- माउस मोड kmousक्षमता के लिए परीक्षण द्वारा उपलब्ध है (जो screenटर्मिनल विवरण का हिस्सा है )। यह 1999 से फीचर के लिए परीक्षण का मानक तरीका है , इसलिए यह संभव नहीं है कि कोई एप्लिकेशन गलती से माउस मोड में बदल गया हो। बल्कि, यह एक ऐसे एप्लिकेशन को इंगित करता है जो अपना काम करना भूल गया।

वैसे, screen.xtermडेबियन के ncurses-termपैकेज में कोई प्रविष्टि नहीं है (इसे हटाने से अधिक उपयोगी है)। यहाँ उस पैकेज में स्क्रीन से संबंधित प्रविष्टियों की सूची दी गई है। अधिकांश का उपयोग 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.