The solution
USB was supposed to end the PC's cable zoo, but human-interface devices had another problem: every mouse, keyboard, tablet or game controller could expose a different set of buttons, axes, wheels and LEDs. The dumb answer was a driver for every peripheral family.
HID's clever move was the report descriptor. The device itself sends a compact bytecode that says what reports it can exchange and what each field means. The class definition explicitly aimed to be compact, extensible and self-describing.
That made novelty cheap. A host could use one HID class driver for many devices, while manufacturers could add controls without first persuading every operating system vendor to ship a new model-specific driver.
What it achieved
Make the device describe its controls
Why it worked
The descriptor moved device-specific knowledge from host software into the peripheral.
Unknown fields could be skipped, so the format tolerated future devices.
Usage tables gave common meanings to controls without freezing physical designs.
What can be applied
When hardware variety is endless, standardize the description language rather than every product shape. A generic parser can absorb variation that a driver catalog cannot.
Aftermath
HID escaped USB itself: Linux documentation notes that HID now works over USB, I2C and Bluetooth transports. The same idea still explains why unusual keyboards, pointing devices and controllers often become usable as soon as they enumerate.
FOLLOW THE EVIDENCE
The sources
- Device Class Definition for HID 1.11 usb.org
- Introduction to HID report descriptors kernel.org