Knowledge

Human interface device

Source đź“ť

507:
repetitive actions. Because these fingers are considered to have the fastest 'twitch' response, they are typically used for pulling the trigger of a gun, or activating an often used game function. The Physical Descriptor allows a device vendor identify that which fingers rests on each control and prioritize the set of controls that can be reached by an individual finger. This feature enables a game vendor to intelligently present the best default button mapping, even for a device that didn't exist when the game was developed. The Physical Descriptor also enables full body motion capture information to be presented by a HID device, i.e., the angle, orientation, relative or absolute position of any joint in the human body. And through the Report Descriptor, the motion capture data can be presented at whatever resolution that the device can support.
423:, required software support not only by the driver, but by each game that supported them to enable new controls. This meant that the device developers had the additional responsibility of enabling each game that they wanted to support. The ability for a HID device to describe itself via a Report Descriptor, decoupled hardware device developers from game developers. The Report Descriptor concept also meant that OS vendors could write a HID driver (Parser) that could accommodate almost any HID device a vendor could dream up, without the vendor needing to write or maintain a driver for every OS that they wanted to support. 386:; for example, the standard mouse protocol at the time supported relative X- and Y-axis data and binary input for up to two buttons, with no legacy support. All hardware innovations necessitated either overloading the use of data in an existing protocol or the creation of custom device drivers and the evangelization of a new protocol to developers. By contrast, all HID-defined devices deliver self-describing packages that may contain any number of data types and formats. A single HID driver on a computer parses data and enables dynamic association of data 532:
the packets, and the purpose of each byte and bit in the packet. For example, a keyboard with a calculator program button can tell the host that the button's pressed/released state is stored as the 2nd bit in the 6th byte in data packet number 4 (note: these locations are only illustrative and are device-specific). The device typically stores the HID descriptor in ROM and does not need to intrinsically understand or parse the HID descriptor. Some mouse and keyboard hardware in the market today is implemented using only an 8-bit
490:
instance, a mouse typically generates a Report 200 times a second to inform the host of any movement or button presses. Report Descriptors are 'bit orientated', meaning that controls can present between 1 and 32 bits of information. Each control defined in a Report Descriptor has an ID and defines its size and position in its Report. A Report Descriptor can define many Reports, each reporting a different set, or combination of information.
25: 570:). Many systems also support additional keys on basic western European 105-, Korean 106-, Brazilian ABNT 107- and Japanese DOS/V 109-key layouts. Buttons, knobs and keys that are not reported on Usage Page 7 are not available. For example, a particular US keyboard's QWERTY keys will function but the Calculator and Logoff keys will not because they are defined on Usage Page 12 and cannot be reported in boot protocol. 494:
5-bit 'pad' is defined. Then the X coordinate is defined as an 8-bit relative value (i.e., number of 'mickeys' since the previous report) that resides in bit positions 8 through 15, and the Y coordinate is defined as an 8-bit relative value that resides in bit positions 16 through 24, resulting in a data packet that is presented to the host.
614:. This enables HID devices that traditionally were only found on USB to also be used on alternative buses. This is done since existing support for USB HID devices can typically be adapted much faster than having to invent an entirely new protocol to support mouse, touchpad, keyboards, and the like. Known buses that use HID are: 548:
The above mechanism describes what is known as HID "report protocol". Because it was understood that not all hosts would be capable of parsing HID descriptors, HID also defines "boot protocol". In boot protocol, only specific devices are supported with only specific features because fixed data packet
531:
The HID protocol makes implementation of devices very simple. Devices define their data packets and then present a "HID descriptor" to the host. The HID descriptor is a hard coded array of bytes that describes the device's data packets. This includes: how many packets the device supports, the size of
414:
Prior to HID (c.1995), proprietary drivers needed to be installed for almost every device attached to a PC. This meant that device vendors needed to track OS releases, and regularly offer updated drivers for their devices, and to develop drivers for each OS that they wanted to support. Also, at the
497:
A Report Descriptor is extremely versatile, allowing a device to specify the resolution, range, and many other characteristics of each control that it presents. Being designed at a time when a mouse or keyboard controller was lucky to have 1KB of ROM for all its code and data, the Report Descriptor
589:
According to the HID specification, a device is described, during the report mode, as a set of controls or group of controls. Controls are matched by a field containing the data, and another containing a usage tag. Each usage tag is described in the spec as the constructor suggested use of the data
539:
The host is expected to be a more complex entity than the device. The host needs to retrieve the HID descriptor from the device and parse it before it can fully communicate with the device. Parsing the HID descriptor can be complicated. Multiple operating systems were known to have shipped bugs in
515:
In the HID protocol, there are 2 entities: the "host" and the "device". The device is the entity that directly interacts with a human, such as a keyboard or mouse. The host communicates with the device and receives input data from the device on actions performed by the human. Output data flows from
498:
syntax has many features that allow its size to be minimized e.g., selected control parameters can persist across control multiple definitions, only needing to be redeclared if their value changes. The reports generated by a basic mouse can be described in 50 bytes, and a 104 keyboard in 65 bytes.
493:
For example, a basic mouse defines a 3 byte Report where the least significant (0) bit of the report is the left button, the next (1) bit is the middle button, and the third (2) bit is the right button. To allow the mouse 8-bit X and Y position coordinates to conveniently land on byte boundaries, a
434:
will recognize standard USB HID devices, such as keyboards and mice, without needing a specialized driver. However its versatility has been demonstrated by the fact that it has not been updated in over 22 years, and it is still supported by every PC, tablet and cell phone in production today. USB,
506:
A little known or understood feature of HID is the Physical Descriptor. The Physical Descriptor is used to define the parts of the human body that interact with the individual controls defined in the Report Descriptor. When controlling a game, the index finger and thumb are usually used to invoke
489:
The Report Descriptor exposes the messages that are generated or accepted by a HID device. Each message is referred to as a 'Report'. Reports can define bits/controls in a device that can be read or written, or generated periodically to keep a host updated on the current status of the device. For
426:
So the HID class decoupled device vendors from game and OS vendors, enabling device vendors to innovate faster, and reducing their development costs (e.g., no drivers or game developer support). The HID Usage Table document defines thousands of controls that can be presented by HID devices. Game
393:
A working committee with representatives from several prominent companies developed the HID standard. The list of participants appears in the "Device Class Definition for Human Interface Devices (HID)" document. The concept of a self-describing extensible protocol initially came from Mike Van
601:
is a Windows app that can be used to generate all the descriptors associated with a HID device (see link below). It performs syntax checking, and can generate C, C Header and binary files for the HID descriptors. Its text-based Usage Table definion files can also be easily extended to define
406:
while at Forte Technologies. SIM was also self-describing and extensible, however it was more focused on SIMulation devices used for VR and motion capture. After comparing notes at a Consumer Game Developer Conference, Steve and Mike agreed to collaborate on a new standard for the emerging
549:
formats are used. The HID descriptor is not used in this mode so innovation is limited. However, the benefit is that minimal functionality is still possible on hosts that otherwise would be unable to support HID. The only devices supported in boot protocol are
427:
vendors can query the OS's HID parser to identify the set of controls that are presented by a device, then map those controls to features in their game. Since its original release, the HID Usage Table (HUT) document has had hundreds of new uses added to it.
553:
Keyboard – Any of the first 256 key codes ("Usages") defined in the HID Usage Tables, Usage Page 7 can be reported by a keyboard using the boot protocol, but most systems only handle a subset of these keys. Most systems support all 104 keys on the
435:
hence HID, devices can be hot-plugged, so when installed, a message saying that "A 'HID-compliant device' has been recognized" generally appears on screen. In comparison, this message did not usually appear for devices connected via the
447:, which means that connecting a PS/2 keyboard or mouse with the computer powered on does not always work and may pose a hazard to the computer's motherboard. Likewise, the PS/2 standard did not support the HID protocol. The 544:
responsible for parsing the HID descriptors years after the device drivers were originally released to the public. However, this complexity is the reason why rapid innovation with HID devices is possible.
156:
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
581:
is often done using only boot mode. Sometimes a message will appear informing the user that the device has installed the correct driver and is now usable.
370:
and to simplify the process of installing such devices. Prior to the introduction of the HID concept, devices usually conformed to strictly defined
390:
with application functionality, which has enabled rapid innovation and development, and prolific diversification of new human-interface devices.
89: 573:
Mouse – Only the X-axis, Y-axis, and the first 3 buttons will be available. Any additional features on the mouse will not function.
61: 828: 533: 42: 577:
One common usage of boot mode is during the first moments of a computer's boot up sequence. Directly configuring a computer's
68: 618: 75: 454:
The HID protocol (Report Descriptor and Report mechanism) has been implemented on many buses other than USB, including
108: 740: 682: 677: 448: 145: 57: 672: 466: 46: 761: 398:, and independently from Steve McGowan, who worked on a "SIM" project that defined a device protocol for the 157: 654: 602:
proprietary Usages (control types) or Usage Tables (the set of Usages associated with a device or feature).
465:
There are also a number of extensions to HID defined in "HID Integrated Usage Table Documents", including
221: 182: 667: 525: 82: 719:
Device Class Definition for Human Interface Devices (HID): Firmware Specification -- Final 1/30/97
697: 371: 284: 35: 794: 256: 687: 651:
HID over SPI – Developed by Microsoft for faster, lower latency fixed-device communications
628: 408: 379: 341: 217: 153: 8: 812: 516:
the host to the device and then to the human. The most common example of a host is a
517: 375: 364: 334: 304: 230: 197: 806: 431: 308: 177: 800: 717: 611: 555: 261: 226: 192: 436: 242: 822: 541: 474: 470: 444: 440: 399: 138: 521: 478: 387: 367: 274: 134: 563: 318: 314: 251: 187: 610:
Since HID's original definition over USB, HID is now also used in other
394:
Flandern and Manolito Adan while working on a project named "Raptor" at
692: 559: 403: 329: 130: 16:
Computer device that takes input from humans and gives output to humans
657:– Used for HID devices connected using Bluetooth Low Energy technology 160:
because the proposed standard supported bi-directional communication.
622: 455: 395: 347: 324: 246: 234: 149: 24: 567: 416: 383: 266: 238: 270: 430:
The HID protocol has its limitations, but all modern mainstream
641:) supports HID devices through the Zigbee input device profile. 634: 363:
The HID standard was adopted primarily to enable innovation in
279: 645: 638: 420: 578: 148:
specification. The term was coined by Mike Van Flandern of
788: 459: 621:– Used for mouse and keyboards that are connected via 419:
designed for flight simulators with extra buttons or
443:which preceded USB. PS/2 did not typically support 49:. Unsourced material may be challenged and removed. 648:– Used for embedded devices in Microsoft Windows 8 510: 820: 762:"Introduction to HID over SPI - Windows drivers" 558:layout, plus the three extra keys designed for 795:HID Device Class Definition 1.11 Specification 311:devices: gear sticks, steering wheels, pedals 605: 144:The term "HID" most commonly refers to the 584: 109:Learn how and when to remove this message 402:VR Headset and its peripherals based on 821: 501: 807:HID Integrated Usage Table Documents 484: 47:adding citations to reliable sources 18: 596: 13: 801:HID Usage Tables 1.4 Specification 133:usually used by humans that takes 14: 840: 782: 627:Serial HID – Used in Microsoft's 683:Graphical user interface builder 678:USB human interface device class 449:USB human interface device class 162: 23: 722:. USB Implementer's Forum. 1997 358: 34:needs additional citations for 754: 733: 710: 590:described in the report mode. 511:Components of the HID protocol 467:uninterruptible power supplies 415:time any novel devices, e.g., 1: 703: 631:PC remote control receivers. 612:computer communication buses 477:devices, arcade and gaming ( 7: 661: 594: 222:Refreshable braille display 183:Refreshable braille display 10: 845: 829:Human–computer interaction 673:Human–computer interaction 668:Human interface guidelines 152:when he proposed that the 606:Other protocols using HID 292: 205: 165: 58:"Human interface device" 698:Tangible user interface 637:input device – Zigbee ( 585:Definition of a device 257:Magnetic Stripe Reader 123:human interface device 595:HID Descriptor Tool ( 451:describes a USB HID. 789:HID developers forum 688:Linux on the desktop 655:HOGP (HID over GATT) 629:Windows Media Center 562:(the left and right 560:Microsoft Windows 95 409:Universal Serial Bus 342:Sudden Motion Sensor 319:Nintendo Power Glove 43:improve this article 813:HID Descriptor Tool 528:also can be hosts. 502:Physical Descriptor 350:'s Telepathy device 285:Fingerprint Scanner 766:docs.microsoft.com 485:Report Descriptor 432:operating systems 356: 355: 335:Surface computing 305:Driving simulator 198:Haptic technology 137:from or provides 119: 118: 111: 93: 836: 776: 775: 773: 772: 758: 752: 751: 749: 748: 737: 731: 730: 728: 727: 714: 600: 309:flight simulator 295:Less common HIDs 227:Pointing devices 178:Computer monitor 163: 114: 107: 103: 100: 94: 92: 51: 27: 19: 844: 843: 839: 838: 837: 835: 834: 833: 819: 818: 785: 780: 779: 770: 768: 760: 759: 755: 746: 744: 739: 738: 734: 725: 723: 716: 715: 711: 706: 664: 608: 597:#External links 587: 513: 504: 487: 361: 262:Graphics tablet 168:HIDs for Output 131:computer device 129:) is a type of 115: 104: 98: 95: 52: 50: 40: 28: 17: 12: 11: 5: 842: 832: 831: 817: 816: 810: 804: 798: 792: 784: 783:External links 781: 778: 777: 753: 741:"HID over I2C" 732: 708: 707: 705: 702: 701: 700: 695: 690: 685: 680: 675: 670: 663: 660: 659: 658: 652: 649: 642: 632: 625: 607: 604: 586: 583: 575: 574: 571: 542:device drivers 512: 509: 503: 500: 486: 483: 441:DIN connectors 360: 357: 354: 353: 352: 351: 345: 338: 332: 327: 322: 312: 299: 298: 290: 289: 288: 287: 282: 277: 264: 259: 254: 249: 243:Pointing stick 224: 212: 211: 203: 202: 201: 200: 195: 190: 185: 180: 172: 171: 117: 116: 99:September 2014 31: 29: 22: 15: 9: 6: 4: 3: 2: 841: 830: 827: 826: 824: 814: 811: 808: 805: 802: 799: 796: 793: 790: 787: 786: 767: 763: 757: 742: 736: 721: 720: 713: 709: 699: 696: 694: 691: 689: 686: 684: 681: 679: 676: 674: 671: 669: 666: 665: 656: 653: 650: 647: 643: 640: 636: 633: 630: 626: 624: 620: 619:Bluetooth HID 617: 616: 615: 613: 603: 598: 591: 582: 580: 572: 569: 565: 561: 557: 552: 551: 550: 546: 543: 537: 535: 529: 527: 523: 519: 508: 499: 495: 491: 482: 480: 479:slot machines 476: 475:point of sale 472: 471:video monitor 468: 463: 461: 457: 452: 450: 446: 445:plug-and-play 442: 438: 433: 428: 424: 422: 418: 412: 410: 405: 401: 397: 391: 389: 385: 381: 377: 373: 369: 368:input devices 366: 349: 346: 343: 339: 336: 333: 331: 328: 326: 323: 320: 316: 313: 310: 306: 303: 302: 301: 300: 297: 296: 291: 286: 283: 281: 278: 276: 272: 268: 265: 263: 260: 258: 255: 253: 250: 248: 244: 240: 236: 232: 228: 225: 223: 219: 216: 215: 214: 213: 210: 209: 204: 199: 196: 194: 191: 189: 186: 184: 181: 179: 176: 175: 174: 173: 170: 169: 164: 161: 159: 155: 151: 147: 142: 140: 136: 132: 128: 124: 113: 110: 102: 91: 88: 84: 81: 77: 74: 70: 67: 63: 60: â€“  59: 55: 54:Find sources: 48: 44: 38: 37: 32:This article 30: 26: 21: 20: 769:. Retrieved 765: 756: 745:. Retrieved 735: 724:. Retrieved 718: 712: 609: 592: 588: 576: 547: 538: 530: 514: 505: 496: 492: 488: 464: 453: 429: 425: 413: 392: 362: 359:HID standard 307:devices and 294: 293: 275:Analog stick 207: 206: 188:Loudspeakers 167: 166: 143: 141:to humans. 126: 122: 120: 105: 96: 86: 79: 72: 65: 53: 41:Please help 36:verification 33: 743:. Microsoft 564:Windows key 522:cell phones 481:) devices. 315:Wired glove 252:Touchscreen 208:Common HIDs 771:2022-09-06 747:2016-01-19 726:2014-04-28 704:References 693:Peripheral 566:, and the 556:IBM AT-101 473:controls, 404:ACCESS.bus 330:Wii Remote 69:newspapers 815:, USB.org 809:, USB.org 803:, USB.org 797:, USB.org 791:, USB.org 644:HID over 623:Bluetooth 520:but some 456:Bluetooth 417:Joysticks 396:Microsoft 384:joysticks 380:keyboards 372:protocols 348:Neuralink 325:Dance pad 247:Light pen 235:Trackball 150:Microsoft 823:Category 662:See also 568:Menu key 340:Apple's 267:Joystick 239:Touchpad 218:Keyboard 411:(USB). 271:Gamepad 193:Headset 146:USB HID 83:scholar 635:Zigbee 439:6-pin 421:D-pads 344:device 337:device 280:Webcam 139:output 85:  78:  71:  64:  56:  639:RF4CE 376:mouse 231:Mouse 135:input 90:JSTOR 76:books 593:The 579:BIOS 540:the 526:PDAs 524:and 458:and 437:PS/2 400:VFX1 382:and 374:for 220:and 62:news 646:I²C 534:CPU 460:I2C 388:I/O 158:DEC 154:USB 127:HID 45:by 825:: 764:. 536:. 518:PC 469:, 462:. 378:, 365:PC 273:, 269:, 245:, 241:, 237:, 233:, 229:: 121:A 774:. 750:. 729:. 599:) 321:) 317:( 125:( 112:) 106:( 101:) 97:( 87:· 80:· 73:· 66:· 39:.

Index


verification
improve this article
adding citations to reliable sources
"Human interface device"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
computer device
input
output
USB HID
Microsoft
USB
DEC
Computer monitor
Refreshable braille display
Loudspeakers
Headset
Haptic technology
Keyboard
Refreshable braille display
Pointing devices
Mouse
Trackball
Touchpad
Pointing stick

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑