Usa el segundo teclado para atajos

En Windows, si conecta dos teclados USB, se comportan como uno solo. AFAIK (no puedo intentarlo en este momento) incluso sincroniza CapsLocky NumLock.

Estoy buscando una forma de asignar atajos de teclado al segundo teclado, por ejemplo

  • si Ctrl+ Ces una copia en el teclado "normal", quiero asignar eso solo Cal segundo teclado.
  • si AltGr+ Mda µ en el teclado "normal", quiero asignar eso solo Men el segundo teclado
  • Quiero escribir .en el segundo teclado y obtener puntos suspensivos (...)

El software debe

  • funciona en Windows 7 y Windows 10, 64 bits
  • debería ser gratis
  • admite muchos teclados
  • no tener problemas con la internacionalización (por ejemplo, asignación de caracteres chinos)
  • ser capaz de identificar teclados (es decir, recordar cuál es cuál)

Mi idea es usar algunos teclados baratos, volver a etiquetar las teclas con iconos o similar y así poder escribir caracteres de idiomas extranjeros o tener atajos de teclado para algunos juegos.

LuaMacros [Github] ( Descarga de lanzamiento ), el sucesor de HID Macros casi hace lo que necesito, excepto que no puede recordar los teclados (o no descubrí cómo) y la asignación de los accesos directos se realiza de forma programática y usted necesita saber cómo escribir secuencias de comandos Lua. Estoy buscando una forma más guiada de asignar los atajos de teclado.

Relacionado pero dando el predecesor de LuaMacros como respuesta: softwarerecs.stackexchange.com/questions/5730/…
Sé que Taran de LTT ha estado peleando esta batalla, es posible que desee ver su video: youtube.com/watch?v=Hn18vv--sFY

Respuestas (1)

[Actualización] Lea el comentario de @huy a continuación. Requiere la capacidad de codificar, pero esta parte del artículo muestra cómo determinar qué teclado envió una pulsación de tecla (no estoy seguro de que funcione con teclados idénticos; es posible que tenga que profundizar más para eso.

// Load the device name into the buffer
GetRawInputDeviceInfo (raw->header.hDevice, RIDI_DEVICENAME, stringBuffer, &bufferSize);

Eliminaría esta respuesta, que en realidad es un comentario, pero eso también eliminaría el comentario. A menos que, Huy, si publicas una nueva respuesta, la votaré y la eliminaré. Bienvenido a bordo, y gracias por una buena contribución.

Me acabo de dar cuenta de que Thomas preguntó esto, y sé que puedes codificar, Thomas, o tal vez dárselo como ejercicio a un estudiante :-)


Lamento publicar una respuesta, pero esto es demasiado largo para un comentario.

Tl'dr; Hasta donde yo sé, esto no se puede hacer (fácilmente).

Cada teclado/mouse/joystick es solo un HID tonto y Windows combina sus entradas en una sola cola.

Ahora, puede (si puede codificar) enganchar la cola de eventos e interceptar eventos de teclado. Si encuentra uno que le interese, puede "consumirlo" y evitar que se siga pasando.

Un Google rápido no muestra una identificación de dispositivo adjunta a cada evento, lo que le permitiría hacerlo fácilmente.

Sin embargo, puede obtener el diseño del teclado, por lo que si ya tiene, o está dispuesto a comprar, dos teclados no idénticos, es posible que pueda diferenciarlos en el código de enlace y resolver su problema.

En cuanto a una aplicación comercial para hacer esto, lo siento, pero no puedo ayudarlo.

(si puede codificar) ... entonces esto ayudará: codeproject.com/Articles/716591/…