The uhidev driver handles all Human Interface Devices. Each HID device can have several components, e.g., a keyboard and a mouse. These components use different report identifiers (a byte) to distinguish which one data is coming from. The uhidev driver has other drivers attached that handle particular kinds of devices and uhidev only dispatches data to them based on the report id.