Estoy escribiendo firmware de arranque en una placa PowerPC, y tengo un problema con la repetición del teclado USB falso. Mi firmware se basa en u-boot: después de la enumeración, coloca el teclado en el protocolo de arranque y, a continuación, los envía enviando los paquetes de control GET_REPORT. Desde mi lectura de la especificación HID, el teclado simplemente debería enviar los estados clave y dejar que mi firmware detecte los cambios clave.
Esto devuelve los estados clave correctamente casi todo el tiempo, pero cada teclado que he probado también envía paquetes vacíos ocasionales, que el firmware interrumpe como un evento clave. En el peor de los casos, esto sucede cada 7 ms. Aquí hay un rastro del analizador:
En la imagen de arriba, las transferencias 76 y 78 muestran el código clave correcto (estoy presionando 'a' por completo), pero la transferencia 77 es todo ceros.
¿Falta alguna configuración aquí o es la única solución para ignorar los informes vacíos a menos que vea dos en una fila?