Detectar pulsaciones de las teclas

Los que hayan programado en MS-DOS suelen buscar el equivalente en Linux de la función kdhit, que detecta si se ha presionado una tecla sin llegar a leerla. Desafortunadamente, no encontraremos ningún equivalente directo porque no existe. Sin embargo, al cruzar programas desde MS-DOS, resulta aconsejable emular kbhit, lo cual se puede conseguir usando el modo de entrada no canónico.

 CREANDO NUESTRO kbhit

  1.  Vamos a comenzar con las cabeceras estándar, y después declare un par de estructuras para las opciones de la terminal. peek_character se usa para comprobar si se ha presionado una tecla. Posteriormente, haga un prototipo de las funciones que usaremos más tarde.listado_kbhit1
  2. La función principal llama a init_keyboard para configurar la terminal, después hace un bucle una vez por segundo, llamando a kbhit cada una de esas veces. Si la tecla presionada es q, close_keyboard envía el comportamiento normal y el programa abandona.listado_kbhit2
  3. init_keyboard y close_keyboard configura la terminal al principio y al final del programa.listado_kbhit3
  4. Ahora la función que comprueba la tecla presionada:listado_kbhit4
  5. La siguiente función, readch, lee el carácter presionado, que después restablece peek_character a -1 para el siguiente bucle.listado_kbhit5

Si ejecutamos el programa kbhit.c después de compilarlo obtendremos:

salida_kbhit

como_listado1Tenga en cuenta que tiene que leer el carácter que se ha transmitido pero que hay que guardarlo localmente, listo para volverlo a enviar cuando sea necesario.

CONSOLAS VIRTUALES

Linux dispone de una consola virtual esta prestación dispone de varios dispositivos de terminal, y todos comparten la pantalla, el teclado y el ratón del ordenador. Normalmente, una instalación Linux estará configurada para 8 o 12 de dichas consolas virtuales. Las consolas virtuales están disponibles a través de los dispositivos de caracteres /dev/ttyN, siendo N un número a partir del 1.

Si usa un registro de textual para su sistema Linux, se le mostrará un incitador de registro una vez que se inicie y ejecute Linux. Después se registrará usando un nombre de usuario y una contraseña. El dispositivo que está usando en este momento es la primera consola virtual, el dispositivo de terminal /dev/tty1.

Mediante who y ps, puede ver quién se registra y la shell junto con los programas que se estan ejecutando en la consola virtual:

who_psEn este fragmento vemos registrado al usuario atika.

atras

3 respuestas a Detectar pulsaciones de las teclas

  1. Alex Trujillo dijo:

    Millones de gracias, es justo lo que necesitaba, deberías de cobrar miles por este precioso algoritmo me salvaste la vida

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s