2010-04-15 12 views
7

मेरे पास रिमोट टर्मिनल पर खुली सॉकेट है। "Force telnet client into character mode" के उत्तर का उपयोग करके मैं उस टर्मिनल को चरित्र मोड में डाल पाया।रिमोट टर्मिनल पर कर्सर छुपाएं

मेरा सवाल है, मैं इस विधि का उपयोग कर दूरस्थ टर्मिनल में कर्सर को कैसे छिपा सकता हूं?

उत्तर

8

यह कुछ ऐसा है जो ncurses लाइब्रेरी आपके लिए कर सकता है।

curs_set() फ़ंक्शन कर्सर को अदृश्य बना सकता है।

3

यदि यह 'टेलनेट' एप्लिकेशन का उपयोग कर रहा है तो आपके ऐप को अपने दूरस्थ पक्ष पर गूंजने के लिए 'आईएसी विल ईसीएचओ' भेजना चाहिए। यह पासवर्ड दर्ज करने के लिए उपयोगी है या यदि आपका ऐप गूंज कर रहा है।

#define TEL_IAC "\377" 
#define TEL_WILL "\373" 
#define TEL_ECHO "\001" 

char buf[4]; 
snprintf(buf, sizeof(buf), "%c%c%c" TEL_IAC, TEL_WILL, TEL_ECHO); 
write(sock, buf, sizeof(buf)); 

या

write(sock, TEL_IAC TEL_WILL TEL_ECHO, 3); 

आशा इस मदद करता है।

+2

प्रश्न कर्सर को छिपाने के बारे में प्रतीत होता है, उपयोगकर्ता इनपुट को छुपा नहीं। –

4

तो टर्मिनल आप का समर्थन करता है एएनएसआई प्रारूप का उपयोग कर रहे आप निम्नलिखित escape codes भेजने के लिए सक्षम होना चाहिए:

 
Hide the cursor: 0x9B 0x3F 0x32 0x35 0x6C 
Show the cursor: 0x9B 0x3F 0x32 0x35 0x68 
+0

मुझे पता है कि यह कुछ साल पुराना है लेकिन आपको वह आदेश कहां मिला? क्या अन्य भागने वाले कोडों के साथ कोई लिंक है? – Cybrix

+0

हाँ बचने के कोड के लिए लिंक पर क्लिक करें। – mjh2007

+2

टर्मिनल नियंत्रण कोड को हार्ड-कोड न करें जब तक आपके पास कोई अन्य विकल्प न हो। वर्तमान '$ TERM' मान के लिए उचित कोड देखने के लिए ncurses का उपयोग करें जब तक कि आप किसी कारण से ncurses का उपयोग नहीं कर सकते। –

9

mjh2007 के जवाब उनका विस्तार करने के लिए निम्न C/C++ कोड के लिए मुक्ति कोड भेजने को लागू करेगा टर्मिनल, और कच्चे हेक्स संख्याओं की तुलना में थोड़ा अधिक पठनीय है।

void showCursor(bool show) const { 
#define CSI "\e[" 
    if (show) { 
    fputs(CSI "?25h", stdout); 
    } 
    else { 
    fputs(CSI "?25l", stdout); 
    } 
#undef CSI 
} 
+1

टर्मिनल नियंत्रण कोड को हार्ड-कोड न करें जब तक कि आपके पास कोई अन्य विकल्प न हो। वर्तमान '$ TERM' मान के लिए उचित कोड देखने के लिए ncurses का उपयोग करें जब तक कि आप किसी कारण से ncurses का उपयोग नहीं कर सकते। –

+3

मैं मानता हूं कि ncursrs सबसे अच्छा होगा, लेकिन अगर किसी कारण से आपके पास इसका उपयोग नहीं है, तो यह कुछ मामलों के लिए "पर्याप्त पर्याप्त" समाधान हो सकता है। – joesdiner

संबंधित मुद्दे