180 lines
6.0 KiB
Groff
180 lines
6.0 KiB
Groff
.\" $NetBSD: usbhidaction.1,v 1.16 2018/05/15 01:41:29 jmcneill Exp $
|
|
.\"
|
|
.\" Copyright (c) 2000 The NetBSD Foundation, Inc.
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" This code is derived from software contributed to The NetBSD Foundation
|
|
.\" by Lennart Augustsson (lennart@augustsson.net).
|
|
.\"
|
|
.\" 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 May 14, 2018
|
|
.Dt USBHIDACTION 1
|
|
.Os
|
|
.Sh NAME
|
|
.Nm usbhidaction
|
|
.Nd perform actions according to USB HID controls
|
|
.Sh SYNOPSIS
|
|
.Nm
|
|
.Fl c Ar config-file
|
|
.Op Fl d
|
|
.Op Fl i
|
|
.Fl f Ar device
|
|
.Op Fl p Ar pidfile
|
|
.Op Fl t Ar table
|
|
.Op Fl v
|
|
.Op Ar arg ...
|
|
.Sh DESCRIPTION
|
|
.Nm
|
|
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.
|
|
.Pp
|
|
The options are as follows:
|
|
.Bl -tag -width Ds
|
|
.It Fl c Ar config-file
|
|
Specify a path name for the config file.
|
|
When running as a daemon this needs to be an absolute path for the HUP
|
|
signal to work.
|
|
.It Fl d
|
|
Toggle the daemon flag.
|
|
.It Fl i
|
|
Ignore HID items in the config file that do not exist in the device.
|
|
.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 p Ar pidfile
|
|
Writes a file containing the process ID of the program.
|
|
The file name has the form
|
|
.Pa /var/run/usbhidaction.pid .
|
|
If the option is not given,
|
|
.Ar pidfile
|
|
defaults to
|
|
.Pa usbhidaction .
|
|
.It Fl t Ar table
|
|
Specify a path name for the HID usage table file.
|
|
.It Fl v
|
|
Be verbose, and do not become a daemon.
|
|
.El
|
|
.Pp
|
|
The config file will be re-read if the process gets a HUP signal.
|
|
.Sh CONFIGURATION
|
|
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.
|
|
.Pp
|
|
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.
|
|
.Pp
|
|
The item names are similar to those used by
|
|
.Xr usbhidctl 1 ,
|
|
but each part must be prefixed by its page name
|
|
(use the
|
|
.Fl v
|
|
flag to
|
|
.Xr usbhidctl 1
|
|
to see the page name).
|
|
Replace spaces in the item name by underscores.
|
|
.Pp
|
|
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.
|
|
.Pp
|
|
The action is a normal command that is executed with
|
|
.Xr system 3 .
|
|
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.
|
|
.Sh FILES
|
|
.Pa /usr/share/misc/usb_hid_usages
|
|
The HID usage table.
|
|
.Sh EXAMPLES
|
|
The following configuration file can be used to control a pair
|
|
of Philips USB speakers with the HID controls on the speakers.
|
|
.Bd -literal -offset indent
|
|
# Configuration for various Philips USB speakers
|
|
Consumer:Consumer_Control.Consumer:Volume_Up 1
|
|
mixerctl -f $1 -n -w outputs.master++
|
|
Consumer:Consumer_Control.Consumer:Volume_Down 1
|
|
mixerctl -f $1 -n -w outputs.master--
|
|
Consumer:Consumer_Control.Consumer:Mute 1
|
|
mixerctl -f $1 -n -w outputs.mute++
|
|
Consumer:Consumer_Control.Consumer:Channel_Top.Microsoft:Base_Up 1
|
|
mixerctl -f $1 -n -w outputs.bass++
|
|
Consumer:Consumer_Control.Consumer:Channel_Top.Microsoft:Base_Down 1
|
|
mixerctl -f $1 -n -w outputs.bass--
|
|
.Ed
|
|
.Pp
|
|
A sample invocation using this configuration would be
|
|
.Bd -literal -offset indent
|
|
usbhidaction -f /dev/uhid1 -c conf /dev/mixer1
|
|
.Ed
|
|
.Pp
|
|
This configuration file can be used for various keyboards with extra keys:
|
|
.Bd -literal -offset indent
|
|
# Configuration for extra keyboard keys
|
|
Consumer:Consumer_Control.Consumer:Volume_Up 1
|
|
mixerctl -n -w outputs.master++
|
|
Consumer:Consumer_Control.Consumer:Volume_Down 1
|
|
mixerctl -n -w outputs.master--
|
|
Consumer:Consumer_Control.Consumer:Mute 1
|
|
mixerctl -n -w outputs.mute++
|
|
Consumer:Consumer_Control.Consumer:Pause/Play 1
|
|
xmms -p
|
|
Consumer:Consumer_Control.Consumer:Stop 1
|
|
xmms -s
|
|
Consumer:Consumer_Control.Consumer:Scan_Previous_Track 1
|
|
xmms -r
|
|
Consumer:Consumer_Control.Consumer:Scan_Next_Track 1
|
|
xmms -f
|
|
.Ed
|
|
.Pp
|
|
And this configuration can be used with, e.g.,
|
|
.Bd -literal -offset indent
|
|
usbhidaction -f /dev/uhid0 -c conf -i
|
|
.Ed
|
|
.Sh SEE ALSO
|
|
.Xr usbhidctl 1 ,
|
|
.Xr usbhid 3 ,
|
|
.Xr uhid 4 ,
|
|
.Xr usb 4
|
|
.Sh HISTORY
|
|
The
|
|
.Nm
|
|
command first appeared in
|
|
.Nx 1.6 .
|