Awesome WebHID
Curated list of resources relating to the WebHID (Human Interface Device) API
WebHID is a browser API (navigator.hid
) that provides access to HID input/output devices. It's a higher level of abstraction than the WebUSB and Web Bluetooth APIs, but lower than the Gamepad API and basic input (pointer/keyboard).
Contributions welcome. Add links through pull requests or create an issue to start a discussion. See contribution guidelines.
Contents
Status
Enabled by default since Chrome 89 (March 2021).
Good to know
- WebHID is not a W3C Standard nor is it on the W3C Standards Track(ref).
- Devices that generate trusted input (e.g. keyboards, mice, security keys) will not be accessible. Such devices define their reports in top-level HID collections that will be considered protected usages(ref1), (ref2).
- Access to a device must be granted by the user via a chooser dialog provided by the browser, similarly to WebUSB and Web Bluetooth. Launching the chooser must be done from the context of a user gesture (e.g. a mouse click).
- Neither the WebUSB(ref) or Web Bluetooth(ref) APIs allow access to HID-class devices.
Specification & documentation
Blogs & articles
Talks & videos
None yet.
Devices
Devices that work well with WebHID, and device-specific abstraction libraries. Do also file an issue to inform others of devices that don't. Not all devices in the USB HID device class will communicate using the high-level abstractions.
Candidates
- Cleware - sensors, switches, and lights (see clewarecontrol, sniner/cleware)
- Espruino Pico board - has an USB HID mode, might also be useful as an emulator?
- Jabra headsets (see Standard USB HID Specification)
- Nintendo Switch Pro Controller(ref)
- Sony DualShock 3(ref)
- X-keys - keyboards, switches, analog controls, and pedals (see HID Data Reports, Integration, xkeys, node-xkeys)
- Xbox Wireless Controller(ref)
Tools
Software that aids working with devices.
- USBDeview - View device information.
- USB Device Tree Viewer - View device information including interface and HID descriptors.
- node-hid - Cross-platform library for accessing USB HID devices from Node.js or Electron.
Bluetooth, USB, & HID reference
Information about the underlying technologies, including specifications and explanations.
Libraries
Demos, experiments & hacks
Real-world applications
Inspiration from elsewhere
Transferrable inspiration from related areas such as general Bluetooth/USB HID, Web Bluetooth, and WebUSB.
Ideas
Great idea, no time or no device? File an issue to share.
- Device explorer tool - Web tool for conveniently viewing device info, monitoring input reports, and sending output/feature reports; something in the style of this one for Web Bluetooth.
Forums & discussion
Miscellaneous
None yet.
Related
License