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 Less Common HIDs 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


For further details and to contribute information relevant to our website, please Contact us