HID Driver Development

About Human Interface Devices

HID drivers allow windows driver developers to extend the functionality of devices by providing filter drivers or functional drivers. We have produced HID drivers for keyboards, mice, game controllers, touch screens, and medical instruments. These devices have functioned on a wide range of hardware buses including USB, I2C, and virtual software buses.

Typical applications for HID device drivers include

  • Keyboard drivers
  • Mouse drivers
  • Touch drivers
  • Game controller drivers
  • Keyboard filter drivers
  • Mouse filter drivers

A good entry into the HID specification can be found at this USB human interface device link as well as from Microsoft HID Documentation

Have a HID driver project? See our Windows driver development services or contact us to get started.

Frequently Asked Questions

What is a HID driver in Windows?
HID stands for Human Interface Device, a USB device class specification that defines how input devices such as keyboards, mice, game controllers, and touch screens describe their data format to the operating system. Windows includes a built-in HID class driver that handles conforming USB HID devices without additional software. Custom HID drivers are needed when a device uses a non-standard HID descriptor, requires functionality not exposed through the standard HID interface, or connects over a non-USB bus such as I2C or a proprietary virtual bus.
When do I need a custom HID minidriver?
You need a custom HID minidriver when your hardware communicates over a non-USB transport (I2C, SPI, or a virtual software bus), when the device reports data in a proprietary format the standard HID class driver cannot parse correctly, or when you need features such as firmware update or device-specific configuration that the standard driver does not support. For USB devices that fully conform to the HID specification, the in-box Windows HID class driver typically handles everything without additional software.
How do USB HID devices communicate with Windows?
USB HID devices communicate through the USB HID class protocol, which uses the interrupt transfer type for input reports and optionally control or interrupt transfers for output and feature reports. During enumeration the device provides a HID report descriptor that tells Windows the format and meaning of each data field. The Windows HID class driver reads this descriptor and presents the device to applications through the HID API (hidsdi.h / hidpi.h), or routes the data to the appropriate Windows input subsystem for keyboards and mice.
What is a HID filter driver used for?
A HID filter driver sits above or below the HID class driver in the device stack and intercepts the input report stream without replacing the functional driver. Common uses include modifying or augmenting report data (for example, remapping keys on a specialty keyboard), logging input for accessibility or security auditing, applying policy to block or restrict specific devices, and injecting synthetic input to simulate a physical device. Lower-edge filter drivers can also intercept raw USB traffic before the HID class driver interprets it.

Technologies

Developer Tools

  • What our customers say about us?