Human Interface Devices (HID) Specifications and Tools

HID USB Device Class Definition

The Device Class Definition for HID 1.11 is intended to supplement the USB Specification and provide HID manufacturers with the information necessary to build USB-compatible devices. It also specifies how the HID class driver should extract data from USB devices. The primary and underlying goals of the HID class definition are to:

  • be as compact as possible to save device data space
  • allow the software application to skip unknown information
  • be extensible and robust
  • support nesting and collections
  • be self-describing to allow generic software applications

HID Usage Tables

The HID Usage Tables 1.3 document defines constants (Usages) that can be interpreted by an application to identify the purpose and meaning of a data field in a HID report. Usages are also used to define the meaning of groups of related data items. This is accomplished by the hierarchical assignment of Usage information to Collections.

Usages identify the purpose of a collection and the items it contains. Each Input, Output, Feature, and/or Collection data item within a Collection item can be assigned a purpose with its own Usage item. Usages assigned to a Collection apply to the items within the collection.

Integrated Usage Table Documents

The HID Usage Tables 1.3 document also includes all Usage definitions as a JSON file as an attachment to the PDF. The PDF serves as the 'single' source of truth.

Approved HUTRRs

The following HID Usage Table Review Requests (HUTRRs) have been approved for implementation by the USB Device Working Group HID Committee (HID-WG). HUTRRs assign ids and recommended meaning to new Usages allocated after the publication of the last HID Usage Tables (currently v1.3). All HUTRRs will be integrated into a revised HUT document at the start of next year. Integrated Usage Table Review Requests.

Note:  The creation of a new Usage does not imply support for that Usage by any USB HID Host vendor.

Authoring New HUTRRs

HID-WG members may request changes to the HID Usage Tables (HUT) by filling out and submitting the HUTRR form below. Please note the voting and submission policies at the end of the document. 

PID USB Device Class Definition 

The Device Class Definition for PID 1.0 provides information for the development of Physical Interface Devices. These devices include force feedback joysticks, steering wheels, etc. It allows peripheral and driver developers to use a common set of HID report descriptors, device usages and reports to describe the characteristics of a PID class device.

Tools

Waratah

Waratah is a HID descriptor composition tool. It offers a high-level of abstraction, eliminates common errors (by design), and optimizes the descriptor to reduce byte size. It implements the HID 1.11 specification so developers don't have to.

Authored by Microsoft, released under MIT OSS license.

Nuget Packages

Microsoft.HidTools.HidSpecification - Reference for HID specification constants, units, and public Usages

Microsoft.HidTools.HidEngine - HID Report Descriptor Engine. Main body of Waratah.

 

Deprecated Links and Tools