2010-04-15 6 views

Antwort

8

Dies ist etwas, das die ncurses Bibliothek für Sie tun kann.

Die Funktion curs_set() kann den Cursor unsichtbar machen.

3

Wenn die Anwendung 'telnet' verwendet wird, sollte Ihre App 'IAC WILL ECHO' senden, um das Echo auf ihrer Remote-Seite zu deaktivieren. Dies ist nützlich für die Eingabe von Passwörtern oder wenn Ihre App das Echo ausführt.

#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)); 

Oder

write(sock, TEL_IAC TEL_WILL TEL_ECHO, 3); 

Hoffnung, das hilft.

+2

Die Frage scheint zu sein, den Cursor zu verstecken, Benutzereingabe nicht zu verbergen. –

4

Wenn das Terminal Sie unterstützen ANSI-Format Sie verwenden sollen escape codes nach dem der Lage sein, senden:

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

Ich weiß, das ist ein paar Jahre alt, aber wo hast du diesen Befehl bekommen? Gibt es eine Verknüpfung mit anderen Escape-Codes? – Cybrix

+0

Klicken Sie auf den Link für die Escape-Codes. – mjh2007

+2

Codieren Sie die Terminalsteuercodes nicht hart, wenn Sie keine andere Wahl haben. Verwenden Sie Ncurses, um die entsprechenden Codes für den aktuellen Wert "$ TERM" zu suchen, es sei denn, Sie können ncurses aus irgendeinem Grund nicht verwenden. –

9

auf mjh2007 Antwort umsetzen wird, der folgende C/C++ Code zu der dem Escape-Codes zu senden erweitern Terminal, und ist etwas lesbarer als rohe Hex-Zahlen.

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

Codieren Sie die Terminalsteuercodes nur dann fest, wenn Sie keine andere Wahl haben. Verwenden Sie Ncurses, um die entsprechenden Codes für den aktuellen Wert "$ TERM" zu suchen, es sei denn, Sie können ncurses aus irgendeinem Grund nicht verwenden. –

+3

Ich stimme zu, dass ncursrs am besten wäre, aber wenn Sie aus irgendeinem Grund keinen Zugriff darauf haben, könnte dies für einige Fälle eine "gut genug" -Lösung sein. – joesdiner

Verwandte Themen