2009-09-11 18 views
16

Me gustaría escribir un sencillo programa en C que realizará diferentes acciones basadas en los eventos "key down" y "key up". Este programa se ejecutará desde el interior rxvt.¿Recibo eventos de pulsación de tecla y liberación de tecla en aplicaciones de terminal Linux?

¿Qué biblioteca o mecanismo debo usar para acceder a las pulsaciones de teclas y a las versiones? ¿Es cierto que al leer /dev/tty solo se proporcionarán versiones clave? ¿Esto también es cierto para termcap, terminfo, ncurses y argot? ¿Hay alguna forma de lograr esto desde una aplicación de terminal?

Respuesta

3

No creo que ncurses funcione. El enlace de Basilevs proporcionaba conversaciones sobre la tecla "flecha arriba" y la tecla "flecha hacia abajo", no sobre la tecla presionar y soltar.

4

Esto no funcionará en el caso general. Los terminales ANSI (desde donde descienden todos los emuladores) representan solo eventos clave de "prensa". No registran eventos de bajada/subida de forma independiente.

Si necesita acceso a eventos de teclado de bajo nivel, el entorno adecuado es realmente un programa GUI. Incluso una aplicación web tendrá un acceso más limpio a eventos clave que una terminal.

7

Los siguientes enlaces pueden ser de alguna ayuda en el uso del modo raw del teclado, que le dará acceso a los eventos del teclado en lugar de a los principales lanzamientos.

  1. Este Linux Journal article
  2. Este article en SourceForge
  3. Y esto HOWTO para cuando todo va mal

modo Raw tiene la desventaja de que usted tiene que hacer su propia conversión de sin embargo, escanea los códigos a los personajes.

+2

+1 Gracias por esta respuesta, necesitaba acceso sin formato al teclado en un programa de terminal y esta fue la solución. Pero uno debe recordar que al usar acceso directo al teclado, su programa no se "comporta" como un programa de terminal clásico. Por ejemplo, al ejecutarlo en una máquina remota, no puede registrar los eventos clave. Solo ten esto en cuenta. – leemes

Cuestiones relacionadas