Skip to main content
  • Products
  • Evaluate our Software
  • Downloads
  • Free Utilities
  • Purchase
  • Support
  • About Us
  • Blog
  • Forum
  • Search
    • Contact Us
    • Forum
    • Wiki
    • Web Shop
    • Newsletter
    • RSS
  •   Jobs
  •   Videos
  •   Blog
  •   Sustainability
  • emUSB-Device
  • HID Class
  • Technology
  • Add-Ons
SEGGER emUSB-Device product-icon

emUSB-Device Add-Ons - HID Class

  • Handling of vendor-specific Usage Pages
  • Ready to use code examples for keyboard, mouse and vendor-specific HID
  • No host driver required for Windows / Linux /
    macOS
  • Small footprint
  1. 1.About the Human Interface Class
  2. 2.Application Samples emUSB-Device HID
  3. 3.HID Categories
  4. 4.Components
video game controller

About the Human Interface Class

The Human Interface Device class (HID) is an abstract USB class protocol defined by the USB Implementers Forum. This protocol was defined for the handling of devices which are used by humans to control the operation of computer systems.

An installation of a custom-host USB driver is not necessary, because the USB Human Interface Device class is standardized and every major OS already provides host drivers for it. Most notable usage of the HID class is the PC mouse and keyboard, but the class is also often used for pure data communication between a device and the PC even if the data is not directly created through user input (e.g. Uninterruptible Power Supply).

Application Samples emUSB-Device HID

keyboard mouse

Keyboard & Mouse

barcode scanner

Barcode Scanner

touchscreen

Touch Screen

industrial joystick

Joystick

fingerprint sensor

Fingerprint Sensor

rfid reader

RFID Reader

3d tracker

3D Mouse

trackball

Trackball

USV

Uninterruptible Power Supply

weighing scale

Weighing Scale

HID Categories

Devices which are in the HID class basically fall into one of two categories:
"True HIDs" and vendor specific HIDs, explained in the following paragraphs. One or more examples for both categories are provided.

 

True HIDs

HID devices communicating with the host operating system. Devices which are used by a human being to input / output data, but do not directly exchange data with an application program running on the host.

 

Vendor Specific HIDs

These are HID devices communicating with an application program. The host OS loads the same driver it loads for any "true HID" and will automatically enumerate the device, but it can not communicate with the device. When analyzing the report descriptor, the host finds out that it can not exchange information with the device; the device uses a protocol which is meaningless to the HID driver of the host. The Host will therefore not exchange information with the device. A host recognizes a vendor specific HID by its vendor defined usage page in the report descriptor: The numerical value of the usage page is between 0xFF00 and 0xFFFF. An application has the chance to communicate with the particular device using API functions offered by the host. This allows an application program to communicate with the device without having to load a driver. HID does not take advantage of the full USB bus bandwidth; bulk communication can be much faster, but requires a driver. Therefore it can be a good choice to select HID as device class, especially if easy-of use is important and achieving the best communication speed is not a requirement.

Components

Components required to use the HID class:

  • emUSB HID
  • emUSB-Device core
  • emUSB target driver

Resource usage

emUSB device hide class structure

More Information

Purchase

  • Pricing

Technology

  • Combining Interfaces/Addons
  • Samples
  • Drivers
  • Performance
  • Resource usage
  • WebUSB

Add-Ons

  • Audio
  • Bulk Component
  • CDC Class
  • CDC-ECM Class
  • CDC-NCM Class
  • DFU Class
  • HID Class
  • IP-over-USB
  • MSD Class
  • MTP Class
  • Printer Class
  • RNDIS Class
  • Video
  • VirtualMSD Component
  • CCID
  • MIDI

About us

  • The Company
  • Partners
  • Job Offers
  • Media
  • Contact us

Support

  • Technical Support
  • Blog
  • Forum
  • Wiki

Downloads

  • Application Notes
  • Embedded Studio
  • embOS
  • emCompress
  • emCrypt
  • emFile
  • emLib
  • emLoad
  • emModbus
  • emNet
  • emPower
  • emSecure
  • emSSH
  • emSSL
  • emUSB-Device
  • emUSB-Host
  • emVNC
  • emWin
  • Flasher
  • Free Utilities
  • IoT
  • J-Link / J-Trace
  • Linux Studio
  • SystemView
  • CE / REACH

Social Media

Headquarters

SEGGER Microcontroller GmbH

Ecolab-Allee 5
40789 Monheim am Rhein, Germany
info@segger.com
Tel.: +49-2173-99312-0
Fax: +49-2173-99312-28

Locations

USA: SEGGER Microcontroller Systems LLC

Boston area
101 Suffolk Lane
Gardner, MA 01440, USA
us-east@segger.com
Tel.: +1-978-874-0299
Fax: +1-978-874-0599

Silicon Valley
Milpitas, CA 95035, USA
us-west@segger.com
Tel.: +1-408-767-4068

China: SEGGER Microcontroller China Co., Ltd.

Room 218, Block A, Dahongqiaoguoji
No. 133 Xiulian Road
Minhang District, Shanghai 201199, China
china@segger.com
Tel.: +86-133-619-907-60

ISO 9001 certified

ISO 9001

30+ years of experience

First-class embedded software tools since 1992
  • Imprint
  • Disclaimer
  • Privacy Policy

© 2023 SEGGER - All rights reserved.