USB HID Host and Device
Overview
A HID usage communicates the
intended function or meaning of a
particular control. Usages provide a description of the data items in a HID device’s Input,Output, and
Feature reports. The existence of a defined usage does not guarantee that system or application software
will recognize or utilize the data item. Although usages can be very powerful, there is a potential for misuse.
The detail provided in this document will help minimize the misuse or misinterpretation of usages when they
are applied by a device developer.
Usages have been organized into pages of related controls. Each usage has a usage ID, usage name and a
detailed description. The usage names are mnemonics, not definitions. To avoid misleading interpretations
based on the usage name, it is very important that a developer review a usage’s description in detail to
ensure that it properly identifies the purpose of the control or device that the usage is attached to.
In theory, a usage can be attached to any type of
HID control, variable, array,
collection, and so forth.
In
reality, usages only make sense when they are attached to particular controls and used in certain ways. A
relatively small set of usage types have been defined to help the application software developer better
understand what to expect when a particular usage is found. Each usage has a usage type associated with it.
The usage type identifies the item types, flag settings and bit fields organizations that are found with a
particular usage.
Usages can also identify functional devices as a whole, thus providing an easy method for an application to
identify devices that provide functions of interest. Such usages are found attached to application collections
that are wrapped around all the items that describe a particular functional device, or a particular function in a
complex device. Generally an application will query the
HID driver for all application
collection usages that
it knows pertain to it. For example, a gaming device driver might look for Joystick and Game Pad usages,
while a system mouse driver might look for Mouse, Digitizer Tablet and Touch Screen usages.
As a general rule, the usages selected by a device developer should be specific enough to dissuade
inappropriate use by applications while remaining general enough to allow applications to take advantage of
device features if they can. If uncertain, favor the more general usage to encourage broader application
support for your device. An alternative is to use delimiters to define multiple usages associated with a single
control or a device. For details, see Appendix B, “Delimiter Example”.
Some usage pages that are in the HID
Specification are also found in this document.
They are included here
because either additional text has been provided to clarify how the usages are to be used , new usages have
been added to the page, or both. No changes have been made to the usage values assigned in the
HID
Specification.
Spec
A human interface device
or HID is a type of computer device that interacts directly with and takes input from humans.
The term "HID" most commonly refers to the
USB-HID specification.
The term was coined by Mike Van Flandern
Microsoft
when he proposed the USB committee create a Human Input Device class working group. The working group was renamed as
the Human Interface Device class at the suggestion of Tom Schmidt DEC because the proposed standard supported bi-directional
communication.The primary motivations for HID were to enable innovation in
PC input devices and simplify the process of
installing these devices. Prior to HID, devices usually conformed to very narrowly defined protocols for mice, keyboards
and joysticks (for example the standard mouse protocol at the time supported relative x and y data and binary input for up
to two buttons). Any innovation in hardware required overloading the use of data in an existing protocol or creation of
custom device drivers and evangelization of a new protocol to application developers. By contrast all HID devices deliver
self describing packages that may contain an infinite variety of data types and formats. A single HID driver on the PC
parses the data and enables dynamic association of data I/O with application functionality. This has enabled rapid innovation and
proliferation of new human interface devices.
Implementation
The HID standard was developed by a working committee with representatives from several companies and the list
of participants can be found in the Device Class Definition for Human Interface Devices (HID). The concept of
a self describing extensible protocol was initially conceived by Mike Van Flandern and Manolito Adan working
on a project named Raptor at Microsoft and independently by Steve McGowan working on a device protocol for
Access Bus while at Forte. After comparing notes at a Consumer Game Developer Conference, Steve and Mike
agreed to collaborate on a new standard for the emerging Universal Serial Bus USB.
Common HIDs
- Keyboard
- Mouse, Trackball, Touchpad, Laptop eraser
- Graphics tablet
- Joystick, Gamepad
Less Common HIDs
- Driving simulator devices and flight simulator devices have HIDs such as gear sticks, steering wheels and pedals.
- Nintendo Power Glove
- Stomp Pad
Most operating systems will recognize standard
USB HID devices,
like keyboards and mice, without needing a special driver. When installed, a message saying that a
"HID-compliant device" has been recognized generally appears on screen. This is usually not the case however with the
direct PS/2 5-pin DIN connectors which preceded USB, as these are recognized as native hardware by the BIOS firmware upon booting.
A USB HID is described by the USB human interface
device class.
Resources
- HID Descriptor Tool-Allows you to create, edit and validate HID Report Descriptors.
- Human Interface Device(HID) class and function drivers-provide a complete embedded solution for host and device communication with HID USB devices,
such as keyboards, pointing devices (e.g. mouse devices; joysticks), front-panel controls, etc.
- HID White Papers
- Jan Axelson book-Resources for Developers of USB devices in the
- Human Interface Device Class
- Linux-General HID Configuration..There are two options for using a USB mouse or a USB keyboard...
For further details and to contribute information relevant to our website, please Contact us