I'm trying to get Windows to see my Leonardo as multiple USB Joysticks.
However, when I define a HID descriptor with multiple top-level collections, the USB device fails to start. As far as I can tell, you have to define multiple top-level collections to get Windows to see the HID as multiple devices rather than combining them all into one. (And hitting the input limit per device from DirectX as a result.)
The Leonardo shows up as multiple devices by default, but each device is defined as a separate function, each with only a single TLC.
Looking at the Hardware ID in device manager, I can see that the Arduino is reporting itself to Windows as a multi-function device with a single TLC as per this: https://msdn.microsoft.com/en-us/library/windows/hardware/ff538842%28v=vs.85%29.aspx
I'm assuming that there's a setting somewhere which is defining the arduino as a multi-function, single TLC device, and I need to change it to multi-function, multiple-TLC in order for it to accept an HID with more than one TLC. I've found code online which sets this for other microcontrollers, but I've had no luck finding such a setting for the Arduino - complicated by the number of hardcoded, uncommented magic numbers in the Arduino USB code.
Does anyone know where to find this? Or even anything associated with windows assigning a hardware ID to a USB device?