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

7 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

    Me gusta

  2. pensador dijo:

    Me gusto mucho tu algoritmo dejame probarlo para hacer mejores programas. Gracias.

    Me gusta

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.