It also turns out that many HID devices are somewhat ambiguous in what you would call them, particularly in the virtual world of USB. For example, I have devices that are combination keyboards and mice, but some of the keys that are physically on the keyboard are reported though USB as if they were part of the mouse. For example, the "media keys" (Volume control, Play/Pause, etc.), if the keyboard has them, are considered in USB to be Consumer Control Inputs, not Keys on the Keyboard. They are ALWAYS reported via a different mechanism in USB (at a minimum a different Report ID), and the mechanism in USB can be associated with the mouse instead of the keyboard. A similar situation occurs with the Power/Sleep/Wakeup keys (if your keyboard has them) -- they are considered System Control Inputs in USB, not Keyboard Keys and not Consumer Control Inputs, either.
The only way you can really tell what an HID device does (for example, how many buttons and wheels a mouse has) is by looking at the HID level (the HID Report Descriptor(s)). You really can't tell by simply looking at the USB level. Also, there are a lot more types of HID devices than keyboards, mice, and joysticks/gamepads.