HID(4D)                            Devices                           HID(4D)
NAME
       hid - Human interface device (HID) class driver
SYNOPSIS
       keyboard@unit-address       mouse@unit-address       input@unit-address:consumer_control       #include <sys/usb/clients/hid/hid.h>       int ioctl(int fildes, int command, ... /*arg*/);DESCRIPTION
       The 
hid driver is a USBA (Solaris USB Architecture) compliant client
       driver that supports the 
Human Interface Device Class (HID) 1.0       specification. The Human Interface Device (HID) class encompasses
       devices controlled by humans to operate computer systems. Typical
       examples of HID devices include keyboards, mice, trackballs, and
       joysticks. HID also covers front-panel controls such as knobs,
       switches, and buttons. A USB device with multiple interfaces may have
       one interface for audio and a HID interface to define the buttons
       that control the audio.
       The 
hid driver is general and primarily handles the USB functionality
       of the device and generic HID functionality. For example, HID
       interfaces are required to have an interrupt pipe for the device to
       send data packets, and the 
hid driver opens the pipe to the interrupt
       endpoint and starts polling.  The 
hid driver is also responsible for
       managing the device through the default control pipe. In addition to
       being a USB client driver, the 
hid driver is also a STREAMS driver so
       that modules may be pushed on top of it.
       The HID specification is flexible, and HID devices dynamically
       describe their packets and other parameters through a HID report
       descriptor. The HID parser is a misc module that parses the HID
       report descriptor and creates a database of information about the
       device. The 
hid driver queries the HID parser to find out the type
       and characteristics of the HID device. The HID specification
       predefines packet formats for the boot protocol keyboard and mouse.
IOCTLS
       HIDIOCKMGDIRECT                          This ioctl should only be addressed to a USB
                          keyboard or mouse device. The 
hid driver maintains
                          two streams for each USB keyboard/mouse instance:
                          an internal one for the use of the kernel and an
                          external one for the use of user applications.
                          This ioctl returns the information of which stream
                          gets the input for the moment.                          
arg must point to a variable of 
int type. Upon
                          return, 
0 means the internal stream gets the
                          input, 
1 means the external stream gets the input.       
HIDIOCKMSDIRECT                          This ioctl should only be addressed to a USB
                          keyboard or mouse device. The hid driver maintains
                          two streams for each USB keyboard/mouse instance:
                          an internal one for the use of the kernel and an
                          external one for the use of user applications.
                          This ioctl sets which stream should get the input
                          for the moment.                          
arg must point to a variable of 
int type. The
                          argument 
0 means the internal stream gets the
                          input, 
1 means the external stream gets the input.
FILES
       /kernel/drv/amd64/hid           64-bit x86 ELF kernel hid module       
/kernel/drv/sparcv9/hid           64-bit SPARC ELF kernel hid module       
/kernel/misc/amd64/hidparser           64-bit x86 ELF kernel hidparser module       
/kernel/misc/sparcv9/hidparser           64-bit SPARC ELF kernel hidparser module
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +---------------+-------------------------------+
       |ATTRIBUTE TYPE |        ATTRIBUTE VALUE        |
       +---------------+-------------------------------+
       |Architecture   | SPARC, x86, PCI-based systems |
       +---------------+-------------------------------+
SEE ALSO
       usba(4D), 
virtualkm(4D), 
attributes(7), 
cfgadm_usb(8)       Writing Device Drivers       STREAMS Programming Guide       Universal Serial Bus Specification 1.0 and 1.1       Device Class Definition for Human Interface Devices (HID) 1.1       System Administration Guide: Basic AdministrationDIAGNOSTICS
       hid_attach: Unsupported HID device.           The device requires a protocol not supported by the hid driver.       
Parsing of hid descriptor failed.           The HID report descriptor cannot be parsed correctly. The device
           cannot be supported by the hid driver.       
Invalid report descriptor.           The HID report descriptor is invalid. The device cannot be
           supported by the hid driver.
       The following messages may be logged into the system log. They are
       formatted in the following manner:
         <device path><hid<instance number>): message...       
hid_attach: Unsupported HID device.           The device cannot be supported by this version of the HID driver.       
Parsing of HID descriptor failed.           The device cannot be supported by this version of the HID driver.       
Invalid report descriptor.           The device cannot be supported by this version of the HID driver.
NOTES
       The hid driver currently supports only keyboard, mouse and audio HID
       control devices.
       Normally a mouse is not power managed and consequently, screen
       darkening can be undone with a mouse movement. If power management of
       the mouse is required, add the following line to 
hid.conf then reboot
       the system:
         hid-mouse-pm-enable;
       Modern mice that are power managed require a 'click' to wake up.
       Occasionally, this may cause unexpected results.
                                June 19, 2021                        HID(4D)