Leer el estado de bloqMayus

Estoy programando un teclado con un arduino Micro con la libreria keyboard.h y me gustaria poder leer el estado del BloqMayus y BloqNum. Para desactivarlos automaticamente.

tengo un teclado normal con unos leds dedicados para estos. Y si en otro teclado presiono el bloqMayus, entonces en el primer teclado se enciende el led. Eso demuestra que es una comunicacion bidireccional.

Moví tu publicación al subforo español.
por favor use inglés en el foro general.

Hola,

Me temo que no se puede leer nada del teclado directamente con el Arduino. Con la libería Keyboard sólo se pueden enviar teclas al PC.
Al conectar el Leonarlo o el pro micro, lo detecta como una interfaz humana, aparte del que ya tengas conectado, pero no habrá interoperatividad entre ellos.
Para conseguir lo que pretede, pasaría por hacer un programa en el PC, el cual lea el estado de la tecla BloqMays del teclado "físico" que haya conectado. Una vez obtenido el estado, que lo envie al arduino.

Edito: Entiendo que hay un teclado y un arduino, y que necesita que el arduino desactive el bloqMay y el BloqNum del teclado conectado. Porque si el sólo el arduino, puede controlar ambas teclas mediante el programa del arduino.

Saludos

Hola,

Si solamente quiere conseguir que nunca se activen las teclas del BloqMayus y BloqNum, es mucho más fácil con un programa en el ordenador.

Si tiene un ordenador con Windows, se podría de la siguiente manera;

  • un programa escrito en C# .Net, utilizando lo que en inglés se llama "hooks", aquí hay un enlace en inglés, que a lo mejor sirve de ayuda; Low-Level Keyboard Hook in C# | Microsoft Docs
    Se usan para interceptar eventos de teclado (aunque también se pueden interceptar de ratón, etc).
  • Cada tecla que se pressiona, resultara en un evento que pasará por tu función, y entonces inspeccionas qué tecla era, si es una tecla normal, lo ignoras y si es por ejemplo el BloqMayus, lo interceptas e impides que se manda al sistema operativo. Ésto resultará en que el sistemo operativo creerá que no se haya pulsado la tecla y no se activará ese modo.
  • Hay otras funciones para mirar si una tecla ésta presionada, lo que puedes usar al principio del programa para ver si BloqMayus o BloqNum están activados y si eso mandar un evento para desactivarlos.
  • El programa se puede instalar como un servicio en Windows si quieres, lo que permitiría tenerlo siempre activo y que se ejecute al iniciar Windows.

Si por alguna razón necesitas hacerlo con el Arduino, te recomiendo usar un programa para inspeccionar los mensajes del ordenador al Arduino (por ejemplo https://freeusbanalyzer.com/).
Así podrás ver qué eventos se mandan e intentar averiguar qué significan.

Hay algunas preguntas que te puede ayudar a responder;
-El evento para encender los leds, se manda al Arduino también, o tan solo a tu teclado normal?
Si solament se envían al teclado normal, es posible que tengas que activar algo o añadir algo al descriptor HID de tu Arduino.

  • Qué formato tienen los eventos, cómo sen envian los datos?

La funcionalidad de Keyboard.h está limitado, pero puedes modificarlo, y las clases que Keyboard.h utiliza también se pueden modificar, son ésas clases que se encargan de la funcionalidad de HID.