This was a good read. I'm currently working on interfacing a microcontroller with USB racing wheels. Parsing the incoming HID data is easy, sending force feedback commands back to the wheel is a different story. A lot of USB sniffing had to be done given Logitech and MOZA's lack of documentation.
Anyways, I'm learning as I go and this writeup was informative.
Glad this popped up here. I've been low-grade tinkering with some USB things and this kind of info is really helpful for getting my bearings.
Found while seeking Linux laptop emulation of USB OTG HID kb/mouse on USB-c cable to iPad/iPhone/Pixel, like a remote KVM.
Once KB/mouse emulation exists, it can be integrated with Linux window manager to treat a tablet/phone as external "display", e.g. move Linux mouse pointer to the right edge of laptop display, push to the right with a bit of physics delay, then activate kb/mouse emulation and send all keystrokes and mouse movements over USB-c cable to the external device.
This would avoid the travel weight cost of a dedicated keyboard for tablet or phone.