|
A human interface device or HID is a type of computer device that interacts directly with and most often takes input from humans and may deliver output to humans. The term "HID" most commonly refers to the USB-HID specification. The term was coined by Mike Van Flandern of 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 of 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.
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)" document. 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.
|