manipulate USB HID devices
can be used to output or modify the state
of a USB HID (Human Interface Device). If a list of items is present on the
command line, then usbhidctl
prints the current
value of those items for the specified device. If the
flag is specified
attempts to set the specified items to
the given values.
The options are as follows:
- Show all items and their current values. This option fails
if the device does not support the GET_REPORT command. This is the
default, if no parameters other than -f are
given to usbhidctl.
- Specify a path name for the device to operate on. If
device is numeric, it is taken to be the
USB HID device number. If it is a relative path, it is taken to be the
name of the device under /dev. An absolute
path is taken to be the literal device pathname.
- Loop and dump the device data every time it changes. Only
'input' items are displayed in this mode.
- Suppress printing of the item name when querying specific
items. Only output the current value.
- Dump the USB HID report descriptor.
- Specify a path name for the HID usage table file.
- Be verbose. Repeating this option increases verbosity.
- Change item values. Only 'output' and 'feature' kinds can
be set with this option.
parses the names of items specified on
the command line against the human interface items reported by the USB device.
Each human interface item is mapped from its native form to a human readable
name, using the HID usage table file. Command line items are compared with the
generated item names, and the USB HID device is operated on when a match is
Each human interface item is named by the “page” it appears in, the
“usage” within that page, and the list of
“collections” containing the item. Each collection in turn is also
identified by page, and the usage within that page.
On the usbhidctl
command line the page name is
separated from the usage name with the character
’. The collections are separated by
the character ‘.
As an alternative notation in items on the command line, the native numeric
value for the page name or usage can be used instead of the full human
readable page name or usage name. Numeric values can be specified in decimal,
octal or hexadecimal.
- The default HID usage table.
On a standard USB mouse the item
reflects the current status of button 2. The “button 2” item is
encapsulated within two collections, the “Mouse” collection in the
“Generic Desktop” page, and the “Pointer” collection
in the “Generic Desktop” page. The item itself is the usage
“Button_2” in the “Button” page.
An item can generally be named by omitting one or more of the page names. For
example the “button 2” item would usually just be referred to on
the command line as:
$ usbhidctl -f /dev/wsmouse0
Items can also be named by referring to parts of the item name with the numeric
representation of the native HID usage identifiers. This is most useful when
items are missing from the HID usage table. The page identifier for the
“Generic Desktop” page is 1, and the usage identifier for the
usage “Button_2” is 2, so the following can be used to refer to
the “button 2” item:
$ usbhidctl -f /dev/wsmouse0
Devices with human interface outputs can be manipulated with the
option. For example, some USB mice have a
Light Emitting Diode under software control as usage 2 under page 0xffff, in
the “Mouse” collection. The following can be used to switch this
$ usbhidctl -f /dev/wsmouse0 -w
command first appeared in
Some USB HID devices report multiple items with exactly the same usage
identifiers. The current naming scheme does not provide the means to specify
which of a set of identically named items you are referring to.