2010-08-19 11 views
5

Estoy usando RawInput para manejar las teclas. Me resulta difícil determinar si el cambio se presiona junto con una tecla.¿Cómo puedo saber si se presiona el cambio usando RawInput?

Desde RawInputStructure ->RawKeyboard, puedo recuperar la tecla presionada, pero no estoy seguro de cómo hacerlo si las teclas se presionaron al mismo tiempo.

RI.Data.keyboard.VKey (obtiene el código clave)

Estoy tratando de separar el cambio para cada usuario/teclado porque en el momento en que un usuario/teclado cambia todos lo hacen, lo mismo con Mayús. La escritura simultánea se vuelve realmente desordenada.

¿Cómo puedo saber si se presiona el cambio junto con otra tecla? ¿Lo estoy buscando en la estructura correcta o debo buscar en otro lado?

Respuesta

6

No hay dos teclas presionadas al mismo tiempo. Uno baja, y luego el otro. Debería recibir una notificación de cada uno por separado. Cuando se presiona o libera la tecla Mayús, configure o borre una bandera en su programa para recordar su estado actual.

Esto es, de hecho, lo que el sistema operativo ya hace para la entrada de teclado normal. Mantiene un mapa de estado clave y lo actualiza con cada mensaje de teclado. Use GetKeyState para verificar el estado de una tecla a partir del mensaje más reciente que se procesará, o use GetAsyncKeyState para verificar el estado de la tecla en el momento en que llama a la función. (Los dos podrían ser diferentes si el estado del teclado ha cambiado pero aún no ha procesado esos mensajes del teclado, como si el usuario está escribiendo más rápido de lo que su programa puede manejar.)

+0

Pero cuando uso GetKeyState es difícil saber de dónde vino el Cambio (de qué teclado). :(Investigaré GetAsyncKeyState. No lo he usado todavía. – Dian

+0

Lo siento, no quise sugerir que debas utilizar esas funciones. Simplemente las mencioné como ejemplos de lo que el sistema operativo ya proporciona para * ordinario * (entrada de teclado no cruda) Sin embargo, usted mismo está haciendo todos los aportes, así que hará un seguimiento de las cosas por su cuenta –

+0

Oh, de acuerdo. Gracias por aclarar. Trataré de implementar lo de la bandera. – Dian

Cuestiones relacionadas