Lee los caracteres del teclado para determinar atajos [cerrado]
-
03-07-2019 - |
Pregunta
Estoy trabajando en una aplicación de documentos y parte de esta aplicación. Tengo que agregar soporte para leer los eventos de teclado presionado y reemplazar el conjunto de caracteres predefinidos si esa entrada del teclado coincide con la forma corta / prefijada. word.La aplicación real se ha implementado en C ++.
Por favor, dénos su opinión sobre cómo implementar esto. ¿Hay algún programa de muestra de C ++ para referencia? algoritmo / conceptos?
Solución
C ++ estándar no admite eventos de pulsación de tecla, por lo que tendrá que ver una función del sistema operativo o una función de marco. Los marcos portátiles de C ++ como wxWidgets o Qt admiten eventos de pulsación de teclas en Windows, Mac y Linux.
Otros consejos
Aprenda cómo capturar los eventos keydown usando wxWidgets api, tal vez aquí: http://docs.wxwidgets.org/stable/wx_eventhandlingoverview.html#eventhandling.viewview// > Preste atención a los eventos clave . Implemente un interruptor en C ++ para ver qué combinación de teclas se presionó, y configure el texto para la edición correspondiente. Lo que estoy pensando aquí es convertir las teclas CTRL-SHIFT-A en un texto como Ctrl-Shift-a en un cuadro de edición.
Si está pensando en convertir una combinación de caracteres a otro, por ejemplo, kanji o hiragana, el algoritmo podría ser más largo y se necesitarían más estructuras de datos.
Si está en Windows, puede usar la llamada a la API GetAsyncKeystate y observar los cambios, o usar los ganchos de teclado de bajo nivel (un poco más complicados) (funciones relacionadas con CreateHookEx +).
En DOS (o posiblemente en Linux) puede usar _kbhit en conio.h en modo consola, generalmente lo guardo en un bucle (while (! _ kbhit ());) para presionar una tecla, presione cualquier tecla para continuar " pero el uso de _getch puede recuperar la tecla que se presionó