sagraramirez.es

  • Aumentar fuente
  • Fuente predeterminada
  • Disminuir fuente
Advertencia
  • EU e-Privacy Directive

    This website uses cookies to manage authentication, navigation, and other functions. By using our website, you agree that we can place these types of cookies on your device.

    View e-Privacy Directive Documents

Home Programación SOLUCIONADO: desactivar el eco de teclado en C en linux

SOLUCIONADO: desactivar el eco de teclado en C en linux

E-mail Imprimir PDF

Al intentar coger caracteres por teclado, programando en C, puede que necesites que lo que se escriba no se muestre por la pantalla. Si estamos usando windows, podemos utilizar la librería "conio.h" y la función getch(). Sin embargo, esa librería (y por tanto, la función) no está disponible en linux.

La solución que he encontrado (usada en lliurex 10) es utilizar las librerías termios.h y unistd.h y las funciones tcgetattr() y tcsetattr(). Este sería un ejemplo de programa:

#include <stdio.h>
#include <termios.h>
#include <unistd.h>
int main() {
char letra;
struct termios t,newt;

//cojo la configuración de teclado
tcgetattr( STDIN_FILENO, &t );
newt = t;
//modifico el flag de ECHO
newt.c_lflag &= ~( ICANON | ECHO );
//escribo la nueva configuración de teclado
tcsetattr( STDIN_FILENO, TCSANOW, &newt );

scanf("%c",&letra);
//La letra no se verá por teclado
printf("Has escrito %c",letra);

//devuelvo la configuración de teclado original
//si no se hace, el eco del teclado seguirá sin verse al acabar el programa
tcsetattr( STDIN_FILENO, TCSANOW, &t );
}

Última actualización el Martes, 12 de Junio de 2012 08:46  

Escribir un comentario


Código de seguridad
Refescar