¿Cómo puedo detectar eventos de teclado en lenguaje C sin utilizar bibliotecas de terceros? ¿Debería usar manejo de señal?Detectar evento de teclado en C
6
A
Respuesta
8
No hay una manera estándar, pero esto debería comenzar.
de Windows:
getch();
Unix:
utilizar el código del libro de programación Unix W. Richard Stevens' para configurar su terminal en modo sin procesar, y después de su utilización Lea().
static struct termios save_termios;
static int term_saved;
int tty_raw(int fd) { /* RAW! mode */
struct termios buf;
if (tcgetattr(fd, &save_termios) < 0) /* get the original state */
return -1;
buf = save_termios;
buf.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG);
/* echo off, canonical mode off, extended input
processing off, signal chars off */
buf.c_iflag &= ~(BRKINT | ICRNL | ISTRIP | IXON);
/* no SIGINT on BREAK, CR-toNL off, input parity
check off, don't strip the 8th bit on input,
ouput flow control off */
buf.c_cflag &= ~(CSIZE | PARENB);
/* clear size bits, parity checking off */
buf.c_cflag |= CS8;
/* set 8 bits/char */
buf.c_oflag &= ~(OPOST);
/* output processing off */
buf.c_cc[VMIN] = 1; /* 1 byte at a time */
buf.c_cc[VTIME] = 0; /* no timer on input */
if (tcsetattr(fd, TCSAFLUSH, &buf) < 0)
return -1;
term_saved = 1;
return 0;
}
int tty_reset(int fd) { /* set it to normal! */
if (term_saved)
if (tcsetattr(fd, TCSAFLUSH, &save_termios) < 0)
return -1;
return 0;
}
3
Lamentablemente, la norma C no tiene instalaciones para detectar eventos de teclado. Debe confiar en las extensiones específicas de la plataforma. El manejo de la señal no te ayudará.
3
Realmente debería utilizar bibliotecas de terceros. Definitivamente no existe una forma independiente de la plataforma para hacerlo en ANSI C. El manejo de la señal no es el camino.
4
Cuestiones relacionadas
- 1. Detectar evento de vuelta en el teclado de Android
- 2. Android: Detectar inactividad del usuario/Detectar (teclado) entrada de teclado
- 3. ¿Cómo detectar la conexión del teclado externo en Object-C?
- 4. Detectar evento de montaje de unidad en C#
- 5. Disparar un evento de teclado en Chrome
- 6. Bluetooth: detectar evento usando Bluez
- 7. Detectar combinación de evento clave
- 8. detectar el botón de búsqueda del teclado
- 9. JavaScript detectar un evento AJAX
- 10. cómo detectar el evento pegar en excel
- 11. detectar el diseño del teclado con javascript
- 12. Detectar evento de selección de AutoCompleteExtender
- 13. Detectar evento de primer plano de aplicación
- 14. Detectar archivo leído en C#
- 15. Evento para SELECT onchange con teclado
- 16. evento de activación del teclado en una ventana de tinymce
- 17. teclado Ocultar evento con la tecla RETRO
- 18. iOS evento cuando el teclado se oculta
- 19. Sondear el teclado (detectar una pulsación de tecla) en python
- 20. ¿Cómo puedo detectar un modificador de teclado en un bookmarklet?
- 21. ¿Cómo puedo crear/detectar programáticamente ejecuciones de teclado en contraseñas?
- 22. ¿Cómo detectar la presencia de hardware en el teclado?
- 23. Android detectar evento de bloqueo del teléfono
- 24. Teclado de control Hecho evento presionado en Iphone
- 25. Detectar el idioma IME del teclado en Android
- 26. Detectar evento de desplazamiento en el navegador de Android
- 27. ¿Suscribirse evento al evento en C#?
- 28. ¿Es posible detectar eventos de enfoque de teclado globalmente?
- 29. Obteniendo la posición del mouse en el evento del teclado
- 30. evento desencadenante teclado en un formulario con un campo