2010-04-15 9 views

Respuesta

8

Esto es algo que la biblioteca ncurses puede hacer por usted.

La función curs_set() puede hacer que el cursor sea invisible.

3

Si está utilizando la aplicación 'telnet', entonces su aplicación debería enviar 'IAC WILL ECHO' para desactivar el eco en su lado remoto. Esto es útil para ingresar contraseñas o si su aplicación está haciendo eco.

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

O

write(sock, TEL_IAC TEL_WILL TEL_ECHO, 3); 

Espero que esto ayude.

+2

La pregunta parece ser sobre ocultar el cursor, no ocultar la entrada del usuario. –

4

Si el terminal que está utilizando soporta formato ANSI que debe ser capaz de enviar la siguiente escape codes:

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

Sé que esto tiene algunos años pero ¿de dónde sacaste esa orden? ¿Hay algún enlace con otros códigos de escape? – Cybrix

+0

Sí, haga clic en el enlace para ver los códigos de escape. – mjh2007

+2

No codifique los códigos de control del terminal a menos que no tenga otra opción. Use ncurses para buscar los códigos apropiados para el valor actual de '$ TERM 'a menos que no pueda usar ncurses por algún motivo. –

9

de ampliar la respuesta de mjh2007, la siguiente/C++ código c implementará el envío de los códigos de escape a la terminal, y es un poco más legible que los números hexadecimales crudos.

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

No codifique los códigos de control del terminal a menos que no tenga otra opción. Use ncurses para buscar los códigos apropiados para el valor actual de '$ TERM 'a menos que no pueda usar ncurses por algún motivo. –

+3

Estoy de acuerdo en que los nictrs serían mejores, pero si por alguna razón no tienes acceso a ellos, esta podría ser una solución "lo suficientemente buena" para algunos casos. – joesdiner

Cuestiones relacionadas