Post
by danhalbert » Thu Mar 05, 2020 2:06 pm
CircuitPython uses a composite HID device descriptor that provides mouse, keyboard, "consumer control" (media keys like volume up/down), and a gamepad. Optionally there is a Microsoft XAC-compatible gamepad, a digitizer, "system control" (power buttons), and raw HID.
The advantage of the composite descriptor is that all the these HID descriptors only use up one USB endpoint pair. The disadvantage is that the keyboard and mouse are not "boot devices", and sodon't work with many BIOS'es.
Currently these descriptors are generated at compile-time, and can be selected via compile-time flags. We have long-term plans to allow generating the HID descriptors (and choosing USB devices in general via descriptors) at run-time in boot.py, but we're not there yet.
Further technical discussion is probably best done in a GitHub issue.