El teclado numérico.

También curses proporciona una elegante prestación para gestionar las teclas de función. En cada terminal, se almacena la secuencia, normalmente en una estructura terminfo, enviada por cada tecla de función, y el archivo incluido curses.h tiene un conjunto de defines con el prefijo KEY_ que define las teclas lógicas.

El traspaso entre secuencias y las teclas lógicas está deshabilitado cuando se inicia curses y debe activarlo la función keypad. Si la llamada tiene éxito, envía OK, si fracasa envía ERR:

teclado_numerico1

teclado_numerico2

curses toma el control del procesamiento de las secuencias de teclas de manera que, ahora al leer los datos introducidos mediante el teclado no sólo nos encontraremos con las teclas presionadas, sino con KEY_defines para las teclas lógicas.

Sin embargo hay tres restricciones a la hora e usar el modo del teclado numérico:

  • El reconocimiento de las secuencias de escape depende del tiempo, y muchos protocolos de red agruparán los caracteres en paquetes (provocando el reconocimiento erróneo de las secuencia de escape), o los separará (haciendo que la secuencia de las teclas de función sean reconocidas como caracteres de escapes e individuales). El comportamiento empeora con WAN y otros vínculos lentos. La única solución es intentar programar las terminales para que envíen caracteres únicos e individuales para cada tecla de función que deseemos usar pero de esta manera limitaremos el número de caracteres de control.
  • Para que curses diferencie el uso de la tecla Esc  de una secuencia de teclas que empiece con Esc,  debe esperar durante un periodo breve de tiempo. A veces, notaremos un pequeño retraso al procesar la tecla Esc cuando activemos el modo de teclado numérico.
  • curses no puede procesar las secuencias de escape que no sean únicas. Si su terminal tiene dos teclas diferentes que pueden enviar la misma secuencia, curses no procesará esa secuencia, ya que no puede decir qué tecla lógica debería enviar.

 Uso del teclado numérico

Veamos un breve programa al que llamaremos keypad.c, que muestra como usar el modo de teclado numérico. Cuando ejecute el programa, intente presionar la tecla Esc y podrá observar la pequeña demora que se produce mientras el programa piensa si Esc es el inicio de una secuencia de escape o si únicamente se presionó la tecla Esc:

  1. Escribimos los enlaces a las bibliotecas necesarias, y establecemos el modo de teclado numérico como TRUE.teclado_numerico_listado1
  2. Desactive echo para evitar que se mueva el cursor cuando se presionen algunas teclas de cursor. Se vaciará la pantalla y aparecerá el texto. El programa espera a cada pulsación y, a menos que sea Q o que se produzca un error, se muestra la tecla en pantalla. Si la pulsación se corresponde con una de las secuencias de teclado numérico de la terminal, mostrará:teclado_numerico_listado1 teclado_numerico_listado2

Una vez activado el modo teclado numérico, verá cómo es posible reconocer todas las teclas adicionales del teclado numérico.

salida1_teclado numerico

salida2 teclado numerico

atras

 

Anuncios

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