perform actions according to USB HID controls
can be used to execute commands
when certain values appear on HID controls. The normal operation for this
program is to read the configuration file and then become a daemon and execute
commands as the HID items specify. If a read from the HID device fails the
program dies; this will make it die when the USB device is unplugged.
The options are as follows:
- Specify a path name for the config file.
- Toggle the daemon flag.
- 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.
- Ignore HID items in the config file that do not exist in the device.
- Be verbose, and do not become a daemon.
The config file will be re-read upon receiving
The configuration file has a very simple format. Each line describes an action;
if a line begins with a whitespace it is considered a continuation of the
previous line. Lines beginning with `#' are considered as comments.
Each line has three parts: a name of a USB HID item, a value for that item, and
an action. There must be whitespace between the parts.
The item names are similar to those used by
, but each part
must be prefixed by its page name.
The value is simply a numeric value. When the item reports this value the action
will be performed. If the value is `*' it will match any value.
The action is a normal command that is executed by using
. Before it is executed
some substitution will occur: `$n' will be replaced by the nth argument on the
command line, `$V' will be replaced by the numeric value of the HID item, `$N'
will be replaced by the name of the control, and `$H' will be replaced by the
name of the HID device.
The HID usage
The following configuration file can be used to control the master volume and
muting of an azalia(4)
using the multimedia keys on a Belkin USB keyboard.
# The volume range is 0..255. Moving 8 volume steps each keypress
# moves quickly through the volume range but still has decent
mixerctl -f $1 outputs.master=+8
mixerctl -f $1 outputs.master=-8
mixerctl -f $1 outputs.master.mute=toggle
A sample invocation using this configuration would be
$ usbhidaction -f /dev/uhid1 -c conf /dev/mixer0
command first appeared in