usbhidctl - manipulate USB HID devices
usbhidctl -f device [-t table] [-lv] -a
usbhidctl -f device [-t table] [-v] -r
usbhidctl -f device [-t table] [-lnv] name ...
usbhidctl -f device [-t table] -w name=value ...
usbhidctl 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 -w flag is specified usbhidctl attempts to
set the specified
items to the given values.
The options are as follows:
-a Show all items and their current values. This option fails if
the device does not support the GET_REPORT command.
-f device
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.
-l Loop and dump the device data every time it changes.
Only 'input'
items are displayed in this mode.
-n Suppress printing of the item name when querying
specific items.
Only output the current value.
-r Dump the USB HID report descriptor.
-t table
Specify a path name for the HID usage table file.
-v Be verbose. Repeating this option increases verbosity.
-w Change item values. Only 'output' and 'feature'
kinds can be set
with this option.
usbhidctl 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
found.
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.
/usr/share/misc/usb_hid_usages The default HID usage table.
On a standard USB mouse the item
Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_2
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/mouse Mouse.Pointer.Button_2
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/mouse 1:Mouse.1:Pointer.Button:2
Devices with human interface outputs can be manipulated with
the -w 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 LED off:
$ usbhidctl -f /dev/mouse -w Mouse.0xffff:2=0
usbhidaction(1), usbhid(3), uhid(4), usb(4)
The usbhidctl command first appeared in OpenBSD 3.0.
David Sainty <[email protected]>
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.
OpenBSD 3.6 August 27, 2000
[ Back ] |