2010-03-27 8 views
8

La razón por la que estoy preguntando es que estoy pensando en construir un interruptor de pie para que actúe como teclas de cambio y control, y dos interruptores, uno para cada pie.¿Es posible establecer programáticamente el estado de las teclas de cambio y control?

Estoy planeando usar el Arduino para esto y escribir una pequeña aplicación C# para detectar cuándo se ha presionado el interruptor que luego establecería el estado de cambio o control. Preferiría no tener que escribir un controlador de teclado para Arduino ya que me gustaría que haga otras cosas también.

+0

+1 Excelente idea, incluso más útil si las asignaciones de pedal/llave fueran programables para ayudar si alguien hubiera restringido el uso de una mano, ¡o para jugar! – amelvin

+0

... o el síndrome de emacs pinky – spender

Respuesta

9

Sí, es posible, pero deberá invocar a Win32. Eche un vistazo a la llamada keydb_event. clave

keybd_event(0x10, 0, 2, 0); 

para activarla de nuevo (es decir:

[DllImport("user32.dll", SetLastError = true)] 
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); 

A continuación, puede llamar a:

keybd_event(0x10, 0, 0, 0); 

para activar la tecla de mayúsculas, y (es decir tecla.). arriba).

El primer argumento es el valor hexadecimal de la clave de la prensa:

  • 0x10 = Desplaza
  • 0x11 = ctrl
  • 0x12 = alt

acabo intentado esto en una aplicación simple de C# usando una casilla de verificación para representar la tecla Mayús. Con esto verificado, "sostuvo" la tecla Mayús para cualquier aplicación que use.

+0

¡Gracias, eso es exactamente lo que estaba buscando! –

0

Si solo está interesado en controlar la aplicación en primer plano, la solución más fácil es enviar mensajes WM_KEYDOWN y WM_KEYUP a la aplicación activa para presionar y soltar el pedal.

Podría estar equivocado (y las cabezas más sabias, ¡siéntete libre de corregirme si lo soy!) Pero creo que para crear un actual presionar el teclado a nivel del evento - por ej. para hacer Windows cree los mensajes de teclado/teclados para usted y trabaje correctamente incluso si cambia las aplicaciones mientras el pedal está presionado, necesita escribir un controlador de entrada.

Cuestiones relacionadas