Cómo escuchar el teclado virtual de WindowsEn Microsoft Windows, el teclado y el mouse son dos fuentes estándar de entrada del usuario y, a menudo, se usan simultáneamente en muchas operaciones superpuestas. Por supuesto, los ratones se utilizan en más aplicaciones hoy que hace 10 años. Estamos aún más acostumbrados a utilizar ratones en determinadas aplicaciones, como juegos, programas de dibujo, programas de música y navegadores web. Sin embargo, podemos prescindir del ratón, pero nunca podremos quitar el teclado de un PC normal. Cómo obtienen los programas de Windows la entrada del teclado: la entrada del teclado se pasa al proceso de ventana del programa en forma de mensajes. De hecho, cuando se aprende por primera vez sobre los mensajes, el teclado es un ejemplo obvio del tipo de información que los mensajes deben transmitir a una aplicación. Windows usa ocho mensajes diferentes para comunicar diferentes eventos del teclado. Esto puede parecer demasiado, pero (como hemos visto) el programa puede ignorar al menos la mitad de estos mensajes sin ningún problema. Además, en la mayoría de los casos, esta información contiene más información del teclado de la que necesita el programa. Parte del manejo de un teclado es reconocer qué información es importante y cuál no. Conceptos básicos del teclado Aunque en muchos casos las aplicaciones pueden usar el mouse para ingresar información, el teclado sigue siendo un dispositivo de entrada importante e irremplazable en las computadoras personales actuales. Cuando se utiliza un teclado como dispositivo de entrada, cada vez que el usuario presiona o suelta una tecla, se genera una interrupción, lo que activa el controlador de teclado KEYBOARD.DRV para manejar las interrupciones del teclado. El programa KEYBOARD.DRV codificará de acuerdo con diferentes operaciones del usuario, luego llamará al módulo de usuario de Windows USER.EXE para generar mensajes de teclado y enviar los mensajes a la cola de mensajes para su procesamiento. Códigos de escaneo y códigos virtuales Los códigos de escaneo corresponden a diferentes teclas del teclado, y cada tecla genera un código de escaneo único para sí misma cuando se presiona o suelta. Los códigos de escaneo corresponden a diferentes teclas del teclado. Los códigos de escaneo dependen del dispositivo de hardware específico, lo que significa que se pueden generar diferentes códigos de escaneo en diferentes máquinas cuando se presiona o suelta la misma tecla. Es común que los programas utilicen código virtual independiente del dispositivo definido por el sistema de Windows. Mientras las teclas generan códigos de escaneo, el controlador de teclado KEYBOARD.DRV interceptará los códigos de escaneo de las teclas y los convertirá en códigos virtuales correspondientes, y luego codificará los códigos de escaneo y los códigos virtuales juntos para formar información del teclado. Por lo tanto, el mensaje final del teclado enviado a la cola de mensajes contiene el código de escaneo y el código ficticio. Los códigos virtuales de uso común se definen en el archivo WINDOWS.H. Los valores de código virtual de uso común, los símbolos constantes y los significados se muestran en la tabla.
Valor (hexadecimal) Significado del símbolo constante 01 VK_LBUTTON Botón izquierdo del mouse 02 VK_RBUTTON Botón derecho del mouse 03 VK_CANCEL Botón de interrupción 04 VK_MBUTTON Botón central del mouse 05-07 -- Indefinido 08 Botón VK_BACK (Retroceso) 09 Botón VK_TAB Tab 0A-0B - - Indefinido - Indefinido 0C VK_CLEAR Tecla Borrar 0D VK_RETURN Tecla Intro 0E-0F -- Indefinido 10 VK_SHIFT Tecla Mayús 11 VK_CONTROL Tecla Ctrl 12 VK_MENU Tecla Alt 13 VK_PAUSE Tecla Pausa 14 VK_CAPTIAL Tecla Bloq Mayús 15-19 -- Sistema de caracteres chinos reservado 1A -- Indefinido 1B VK_ESCAPE Esc Tecla 1C-1F -- Sistema de caracteres chinos reservado 20 Sistema de caracteres chinos reservado 20 VK_SPACE barra espaciadora 21 VK_PRIOR Tecla de avance de página 22 VK_NEXT Tecla de retroceso de página 23 VK_END Tecla de fin 24 VK_HOME Tecla de inicio 25 VK_ LEFT ← Tecla (flecha izquierda) 26 VK_UP ↑ ( Tecla de flecha hacia arriba 27 VK_RIGHT → Tecla (flecha hacia derecha) 28 VK_DOWN ↓ Tecla (flecha hacia abajo) 29 VK_SELECT Tecla de selección 2A - OEM reservado 2B - OEM reservado 2B VK_EXECUTE Ejecutar tecla 2C VK_SNAPSHOT Imprimir tecla de pantalla 2D VK_INSERT Insertar tecla 2E VK_DELETE Eliminar tecla 2F VK_HELP Tecla de ayuda 30-39 VK_0-VK_9 Tecla numérica 0-93A-40 -- Indefinido 41-5A VK_A-VK_Z Tecla de letras A-Z5B-5F -- Indefinido 60-69 VK_NUMPAD0- VK_NUMPAD9 Teclas del teclado numérico 0-96A VK_MULTIPLY * Tecla (multiplicación) 6B VK_ADD + Tecla (suma) 6C VK_SEPAPATOR Tecla de separación 6E VK_SUBTRACT - Tecla (resta) 6F VK_DECIMAL . 90 VK_NUMBERLOCK Tecla de bloqueo numérico 91 VK_SCROLL Tecla de bloqueo de desplazamiento 92-B9 -- Indefinido BA-C0 -- Reservado OEM C1-DA -- Indefinido DB_E4 -- Reservado OEM E5 -- Indefinido E6 -- Reservado OEM E7-E8 -- Indefinido E9 -F5 - OEM reservado F6-FE - Indefinido 2. Enfoque de entrada Al mismo tiempo, es posible que se estén ejecutando varios programas diferentes en Windows, es decir, al mismo tiempo existen varias ventanas. En este momento, el teclado está ocupado por varias ventanas, pero solo una ventana puede recibir información del teclado. Esta ventana que puede recibir información del teclado se denomina ventana con foco de entrada. La ventana con foco de entrada debe ser la ventana actualmente activa o una ventana secundaria de la ventana activa, y su título y borde deben estar resaltados para distinguirla de otras ventanas. La ventana con foco de entrada también puede ser un ícono en lugar de una ventana, en cuyo caso Windows también enviará información al ícono, pero en un formato ligeramente diferente. Un programa de ventana puede hacer que un formulario gane o pierda el foco de entrada enviando mensajes WM_SETFOCUS y WM_KILLFOCUS. Los programas también pueden determinar cuándo un formulario gana o pierde el foco de entrada al detectar los mensajes WM_SETFOCUS y WM_KILLFOCUS. El mensaje WM_SETFOCUS indica que la ventana está ganando el foco de entrada y el mensaje WM_KILLFOCUS indica que la ventana está perdiendo el foco de entrada. Mensajes del teclado Los mensajes del teclado se dividen en mensajes clave del sistema y mensajes clave que no son del sistema.