c51b743b1e
keys; based on Mihai Chelaru's description on current-users in February. Bump date.
254 lines
7.4 KiB
Groff
254 lines
7.4 KiB
Groff
.\" $NetBSD: usbhidctl.1,v 1.23 2011/03/30 11:35:25 wiz Exp $
|
|
.\"
|
|
.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" This code is derived from software contributed to The NetBSD Foundation
|
|
.\" by David Sainty <David.Sainty@dtsp.co.nz>
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
|
.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
|
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
.\" POSSIBILITY OF SUCH DAMAGE.
|
|
.\"
|
|
.Dd March 30, 2011
|
|
.Dt USBHIDCTL 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm usbhidctl
|
|
.Nd manipulate USB HID devices
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Fl f Ar device
|
|
.Op Fl t Ar table
|
|
.Op Fl lv
|
|
.Fl a
|
|
.Nm
|
|
.Fl f Ar device
|
|
.Op Fl t Ar table
|
|
.Op Fl v
|
|
.Fl r
|
|
.Nm
|
|
.Fl f Ar device
|
|
.Op Fl t Ar table
|
|
.Op Fl lnv
|
|
.Ar item Op ...
|
|
.Nm
|
|
.Fl f Ar device
|
|
.Op Fl t Ar table
|
|
.Op Fl z
|
|
.Fl w
|
|
.Ar item=value Op ...
|
|
.Sh DESCRIPTION
|
|
.Nm
|
|
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
|
|
.Nm
|
|
prints the current value of those items for the specified device.
|
|
If the
|
|
.Fl w
|
|
flag is specified
|
|
.Nm
|
|
attempts to set the specified items to the given values.
|
|
.Pp
|
|
The options are as follows:
|
|
.Bl -tag -width Ds
|
|
.It Fl a
|
|
Show all items and their current values.
|
|
This option fails if the device does not support the
|
|
.Dv GET_REPORT
|
|
command.
|
|
.It Fl f Ar device
|
|
Specify a path name for the device to operate on.
|
|
If
|
|
.Ar 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
|
|
.Pa /dev .
|
|
An absolute path is taken to be the literal device pathname.
|
|
.It Fl l
|
|
Loop and dump the device data every time it changes.
|
|
Only 'input' items are displayed in this mode.
|
|
.It Fl n
|
|
Suppress printing of the item name when querying specific items.
|
|
Only output the current value.
|
|
.It Fl r
|
|
Dump the USB HID report descriptor.
|
|
.It Fl t Ar table
|
|
Specify a path name for the HID usage table file.
|
|
.It Fl v
|
|
Be verbose.
|
|
Repeating this option increases verbosity.
|
|
.It Fl w
|
|
Change item values.
|
|
Only 'output' and 'feature' kinds can be set with this
|
|
option.
|
|
.It Fl z
|
|
Reset all feature and output flags to zero before attempting to change them.
|
|
May be required for changing item values (via
|
|
.Fl w )
|
|
on devices that don't implement
|
|
.Dv GET_REPORT .
|
|
.El
|
|
.Sh FILES
|
|
.Pa /usr/share/misc/usb_hid_usages
|
|
The default HID usage table.
|
|
.Sh SYNTAX
|
|
.Nm
|
|
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.
|
|
.Pp
|
|
Each human interface item is named by the
|
|
.Qq page
|
|
it appears in, the
|
|
.Qq usage
|
|
within that page, and the list of
|
|
.Qq collections
|
|
containing the item.
|
|
Each collection in turn is also identified by page, and
|
|
the usage within that page.
|
|
.Pp
|
|
On the
|
|
.Nm
|
|
command line the page name is separated from the usage name with the character
|
|
.Sq Cm \&: .
|
|
The collections are separated by the character
|
|
.Sq Cm \&. .
|
|
.Pp
|
|
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.
|
|
.Pp
|
|
Some devices give the same name to more than one item.
|
|
.Nm
|
|
supports isolating each item by appending a
|
|
.Sq Cm \&# .
|
|
character and a decimal item instance number, starting at zero.
|
|
.Sh EXAMPLES
|
|
On a standard USB mouse the item
|
|
.Dl Generic_Desktop:Mouse.Generic_Desktop:Pointer.Button:Button_2
|
|
reflects the current status of button 2.
|
|
The
|
|
.Qq button 2
|
|
item is encapsulated within two collections, the
|
|
.Qq Mouse
|
|
collection in the
|
|
.Qq Generic Desktop
|
|
page, and the
|
|
.Qq Pointer
|
|
collection in the
|
|
.Qq Generic Desktop
|
|
page.
|
|
The item itself is the usage
|
|
.Qq Button_2
|
|
in the
|
|
.Qq Button
|
|
page.
|
|
.Pp
|
|
An item can generally be named by omitting one or more of the page names.
|
|
For example the
|
|
.Qq button 2
|
|
item would usually just be referred to on the command line as:
|
|
.Dl usbhidctl -f /dev/mouse Mouse.Pointer.Button_2
|
|
.Pp
|
|
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
|
|
.Qq Generic Desktop
|
|
page is 1, and the usage identifier for the usage
|
|
.Qq Button_2
|
|
is 2, so the following can be used to refer to the
|
|
.Qq button 2
|
|
item:
|
|
.Dl usbhidctl -f /dev/mouse 1:Mouse.1:Pointer.Button:2
|
|
.Pp
|
|
Devices with human interface outputs can be manipulated with the
|
|
.Fl w
|
|
option.
|
|
For example, some USB mice have a Light Emitting Diode under software
|
|
control as usage 2 under page 0xffff, in the
|
|
.Qq Mouse
|
|
collection.
|
|
The following can be used to switch this LED off:
|
|
.Dl usbhidctl -f /dev/mouse -w Mouse.0xffff:2=0
|
|
.Pp
|
|
The output below is from a device that uses the same name repeatedly.
|
|
.Bd -literal -offset indent
|
|
% usbhidctl -f /dev/uhid0 -a
|
|
Consumer_Control.Volume_Up=0
|
|
Consumer_Control.Volume_Down=0
|
|
Consumer_Control.Mute=0
|
|
Consumer_Control.Unassigned=0
|
|
Consumer_Control.Unassigned=0
|
|
.Ed
|
|
.Pp
|
|
The
|
|
.Qq Consumer_Control.Unassigned
|
|
name is used twice.
|
|
Each can be individually accessed by providing an instance number.
|
|
For example, to set the value for the first item:
|
|
.Dl usbhidctl -f /dev/uhid0 -w 'Consumer_Control.Unassigned#0=1'
|
|
.Pp
|
|
Another example is configuring multimedia keys on a keyboard.
|
|
First you would look in the
|
|
.Xr dmesg 8
|
|
output, which
|
|
.Xr uhid 4
|
|
devices are attached to the keyboard's
|
|
.Xr uhidev 4
|
|
device and use
|
|
.Nm
|
|
to see how the controls are reported:
|
|
.Dl usbhidctl -f /dev/uhidX -lv -a
|
|
Then press the special keys; you should see something like
|
|
.Dv Consumer:Volume_Up
|
|
etc.
|
|
Then create a configuration file containing the actions, like:
|
|
.Bd -literal -offset indent
|
|
Consumer:Volume_Up 1 /usr/pkg/bin/dcop amarok player volumeUp &
|
|
Consumer:Volume_Down 1 /usr/pkg/bin/dcop amarok player volumeDown &
|
|
Consumer:Mute 1 /usr/pkg/bin/dcop amarok player mute &
|
|
.Ed
|
|
and use
|
|
.Dl usbhidaction -c /path/to/file -f /dev/uhidX
|
|
once during your X startup.
|
|
.Sh SEE ALSO
|
|
.Xr usbhidaction 1 ,
|
|
.Xr usbhid 3 ,
|
|
.Xr uhid 4 ,
|
|
.Xr usb 4
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
command first appeared in
|
|
.Nx 1.4 .
|
|
.Sh AUTHORS
|
|
.An David Sainty Aq David.Sainty@dtsp.co.nz
|