1ce5b9347SMatthew N. Dodd.\" $FreeBSD$ 2ce5b9347SMatthew N. Dodd.\" $NetBSD: usbhidaction.1,v 1.8 2003/02/25 10:35:59 wiz Exp $ 3ce5b9347SMatthew N. Dodd.\" 4ce5b9347SMatthew N. Dodd.\" Copyright (c) 2000 The NetBSD Foundation, Inc. 5ce5b9347SMatthew N. Dodd.\" All rights reserved. 6ce5b9347SMatthew N. Dodd.\" 7ce5b9347SMatthew N. Dodd.\" This code is derived from software contributed to The NetBSD Foundation 8ce5b9347SMatthew N. Dodd.\" by Lennart Augustsson (lennart@augustsson.net). 9ce5b9347SMatthew N. Dodd.\" 10ce5b9347SMatthew N. Dodd.\" Redistribution and use in source and binary forms, with or without 11ce5b9347SMatthew N. Dodd.\" modification, are permitted provided that the following conditions 12ce5b9347SMatthew N. Dodd.\" are met: 13ce5b9347SMatthew N. Dodd.\" 1. Redistributions of source code must retain the above copyright 14ce5b9347SMatthew N. Dodd.\" notice, this list of conditions and the following disclaimer. 15ce5b9347SMatthew N. Dodd.\" 2. Redistributions in binary form must reproduce the above copyright 16ce5b9347SMatthew N. Dodd.\" notice, this list of conditions and the following disclaimer in the 17ce5b9347SMatthew N. Dodd.\" documentation and/or other materials provided with the distribution. 18ce5b9347SMatthew N. Dodd.\" 3. All advertising materials mentioning features or use of this software 19ce5b9347SMatthew N. Dodd.\" must display the following acknowledgement: 20ce5b9347SMatthew N. Dodd.\" This product includes software developed by the NetBSD 21ce5b9347SMatthew N. Dodd.\" Foundation, Inc. and its contributors. 22ce5b9347SMatthew N. Dodd.\" 4. Neither the name of The NetBSD Foundation nor the names of its 23ce5b9347SMatthew N. Dodd.\" contributors may be used to endorse or promote products derived 24ce5b9347SMatthew N. Dodd.\" from this software without specific prior written permission. 25ce5b9347SMatthew N. Dodd.\" 26ce5b9347SMatthew N. Dodd.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 27ce5b9347SMatthew N. Dodd.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 28ce5b9347SMatthew N. Dodd.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 29ce5b9347SMatthew N. Dodd.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 30ce5b9347SMatthew N. Dodd.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 31ce5b9347SMatthew N. Dodd.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 32ce5b9347SMatthew N. Dodd.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 33ce5b9347SMatthew N. Dodd.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 34ce5b9347SMatthew N. Dodd.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 35ce5b9347SMatthew N. Dodd.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 36ce5b9347SMatthew N. Dodd.\" POSSIBILITY OF SUCH DAMAGE. 37ce5b9347SMatthew N. Dodd.\" 38ce5b9347SMatthew N. Dodd.Dd April 9, 2003 39ce5b9347SMatthew N. Dodd.Dt USBHIDACTION 1 40ce5b9347SMatthew N. Dodd.Os 41ce5b9347SMatthew N. Dodd.Sh NAME 42ce5b9347SMatthew N. Dodd.Nm usbhidaction 43ce5b9347SMatthew N. Dodd.Nd perform actions according to USB HID controls 44ce5b9347SMatthew N. Dodd.Sh SYNOPSIS 45ce5b9347SMatthew N. Dodd.Nm 46f5a4d3f0SMatthew N. Dodd.Op Fl diev 47ce5b9347SMatthew N. Dodd.Fl c Ar config-file 48ce5b9347SMatthew N. Dodd.Fl f Ar device 49ce5b9347SMatthew N. Dodd.Op Fl p Ar pidfile 50ce5b9347SMatthew N. Dodd.Ar arg ... 51ce5b9347SMatthew N. Dodd.Sh DESCRIPTION 52ce5b9347SMatthew N. Dodd.Nm 53ce5b9347SMatthew N. Doddcan be used to execute commands when certain values appear on HID controls. 54ce5b9347SMatthew N. DoddThe normal operation for this program is to read the configuration file 55ce5b9347SMatthew N. Doddand then become a daemon and execute commands as the HID items specify. 56ce5b9347SMatthew N. DoddIf a read from the HID device fails the program dies; this will make it 57ce5b9347SMatthew N. Dodddie when the USB device is unplugged. 58ce5b9347SMatthew N. Dodd.Pp 59ce5b9347SMatthew N. DoddThe options are as follows: 60ce5b9347SMatthew N. Dodd.Bl -tag -width Ds 61ce5b9347SMatthew N. Dodd.It Fl d 62ce5b9347SMatthew N. DoddToggle the daemon flag. 63f5a4d3f0SMatthew N. Dodd.It Fl e 64f5a4d3f0SMatthew N. DoddInstruct 65f5a4d3f0SMatthew N. Dodd.Nm 66f5a4d3f0SMatthew N. Doddto die early. Useful when specified with multiple 67f5a4d3f0SMatthew N. Doddverbose options to see how files are parsed. 68ce5b9347SMatthew N. Dodd.It Fl i 69ce5b9347SMatthew N. DoddIgnore HID items in the config file that does not exist in the device. 70f5a4d3f0SMatthew N. Dodd.It Fl v 71f5a4d3f0SMatthew N. DoddBe verbose, and do not become a daemon. 72f5a4d3f0SMatthew N. Dodd.It Fl c Ar config-file 73f5a4d3f0SMatthew N. DoddSpecify a path name for the config file. 74ce5b9347SMatthew N. Dodd.It Fl f Ar device 75ce5b9347SMatthew N. DoddSpecify a path name for the device to operate on. 76ce5b9347SMatthew N. DoddIf 77ce5b9347SMatthew N. Dodd.Ar device 78ce5b9347SMatthew N. Doddis numeric, it is taken to be the USB HID device number. 79ce5b9347SMatthew N. DoddIf it is a relative 80ce5b9347SMatthew N. Doddpath, it is taken to be the name of the device under 81ce5b9347SMatthew N. Dodd.Pa /dev . 82ce5b9347SMatthew N. DoddAn absolute path is taken to be the literal device pathname. 83ce5b9347SMatthew N. Dodd.It Fl p Ar pidfile 84ce5b9347SMatthew N. DoddSpecify an alternate file in which to store the process ID. 85ce5b9347SMatthew N. Dodd.El 86ce5b9347SMatthew N. Dodd.Pp 87ce5b9347SMatthew N. DoddThe config file will be re-read if the process gets a HUP signal. 88ce5b9347SMatthew N. Dodd.Sh CONFIGURATION 89ce5b9347SMatthew N. DoddThe configuration file has a very simple format. 90ce5b9347SMatthew N. DoddEach line describes an 91ce5b9347SMatthew N. Doddaction; if a line begins with a whitespace it is considered a continuation 92ce5b9347SMatthew N. Doddof the previous line. 93ce5b9347SMatthew N. DoddLines beginning with `#' are considered as comments. 94ce5b9347SMatthew N. Dodd.Pp 95f5a4d3f0SMatthew N. DoddEach line has four parts: a name of a USB HID item, a value for that item, 96f5a4d3f0SMatthew N. Dodda debounce value, and an action. 97ce5b9347SMatthew N. DoddThere must be whitespace between the parts. 98ce5b9347SMatthew N. Dodd.Pp 99ce5b9347SMatthew N. DoddThe item names are similar to those used by 100ce5b9347SMatthew N. Dodd.Xr usbhidctl 1 , 101ce5b9347SMatthew N. Doddbut each part must be prefixed by its page name. 102ce5b9347SMatthew N. Dodd.Pp 103ce5b9347SMatthew N. DoddThe value is simply a numeric value. 104ce5b9347SMatthew N. DoddWhen the item reports this value 105ce5b9347SMatthew N. Doddthe action will be performed. 106ce5b9347SMatthew N. DoddIf the value is `*' it will match any value. 107ce5b9347SMatthew N. Dodd.Pp 108f5a4d3f0SMatthew N. DoddThe debouce value is an integer not less than 0. The value of 0 109f5a4d3f0SMatthew N. Doddindicates that no debouncing should occur. A value of 1 will only 110f5a4d3f0SMatthew N. Doddexecute the action when the state changes. Values greater than one 111f5a4d3f0SMatthew N. Doddspecify that an action should be performed only when the value 112f5a4d3f0SMatthew N. Doddchanges by that amount. 113f5a4d3f0SMatthew N. Dodd.Pp 114ce5b9347SMatthew N. DoddThe action is a normal command that is executed with 115ce5b9347SMatthew N. Dodd.Xr system 3 . 116ce5b9347SMatthew N. DoddBefore it is executed some substitution will occur: 117ce5b9347SMatthew N. Dodd`$n' will be replaced by the nth argument on the 118ce5b9347SMatthew N. Doddcommand line, `$V' will be replaced by the numeric value 119ce5b9347SMatthew N. Doddof the HID item, `$N' will be replaced by the name 120ce5b9347SMatthew N. Doddof the control, and `$H' will be replaced by the name 121ce5b9347SMatthew N. Doddof the HID device. 122ce5b9347SMatthew N. Dodd.Sh FILES 123f5a4d3f0SMatthew N. Dodd.Bl -tag -width indent 124ce5b9347SMatthew N. Dodd.It Pa /usr/share/misc/usb_hid_usages 125ce5b9347SMatthew N. DoddThe HID usage table. 126ce5b9347SMatthew N. Dodd.It Pa /var/run/usbaction.pid 127ce5b9347SMatthew N. DoddThe default location of the pid file. 128ce5b9347SMatthew N. Dodd.El 129ce5b9347SMatthew N. Dodd.Sh EXAMPLES 130ce5b9347SMatthew N. DoddThe following configuration file can be used to control a pair 131ce5b9347SMatthew N. Doddof Philips USB speakers with the HID controls on the speakers. 132ce5b9347SMatthew N. Dodd.Bd -literal -offset indent 133ce5b9347SMatthew N. Dodd# Configuration for various Philips USB speakers 134f5a4d3f0SMatthew N. DoddConsumer:Volume_Up 1 0 mixer -f $1 vol +1 135f5a4d3f0SMatthew N. DoddConsumer:Volume_Down 1 0 mixer -f $1 vol -1 136f5a4d3f0SMatthew N. Dodd# mute not supported 137f5a4d3f0SMatthew N. Dodd#Consumer:Mute 1 0 mixer -f $1 mute 138f5a4d3f0SMatthew N. DoddConsumer:Channel_Top.Microsoft:Base_Up 1 0 mixer -f $1 bass +1 139f5a4d3f0SMatthew N. DoddConsumer:Channel_Top.Microsoft:Base_Down 1 0 mixer -f $1 bass -1 140ce5b9347SMatthew N. Dodd.Ed 141ce5b9347SMatthew N. Dodd.Pp 142ce5b9347SMatthew N. DoddA sample invocation using this configuration would be 143ce5b9347SMatthew N. Dodd.Bd -literal -offset indent 144ce5b9347SMatthew N. Doddusbhidaction -f /dev/uhid1 -c conf /dev/mixer1 145ce5b9347SMatthew N. Dodd.Ed 146f5a4d3f0SMatthew N. Dodd.Pp 147f5a4d3f0SMatthew N. DoddThe following example controls the mixer volume using a Logitech Wingman. 148f5a4d3f0SMatthew N. DoddNotice the debouce of 1 for buttons and 5 for the slider. 149f5a4d3f0SMatthew N. Dodd.Bd -literal -offset indent 150f5a4d3f0SMatthew N. DoddButton:Button_1 1 1 mixer vol +10 151f5a4d3f0SMatthew N. DoddButton:Button_2 1 1 mixer vol -10 152f5a4d3f0SMatthew N. DoddGeneric_Desktop:Z * 5 mixer vol `echo $V | awk '{print int($$1/255*100)}'` 153f5a4d3f0SMatthew N. Dodd.Ed 154ce5b9347SMatthew N. Dodd.Sh SEE ALSO 155ce5b9347SMatthew N. Dodd.Xr usbhidctl 1 , 156ce5b9347SMatthew N. Dodd.Xr usbhid 3 , 157ce5b9347SMatthew N. Dodd.Xr uhid 4 , 158ce5b9347SMatthew N. Dodd.Xr usb 4 159ce5b9347SMatthew N. Dodd.Sh HISTORY 160ce5b9347SMatthew N. DoddThe 161ce5b9347SMatthew N. Dodd.Nm 162ce5b9347SMatthew N. Doddcommand first appeared in 163ce5b9347SMatthew N. Dodd.Nx 1.6 . 164ce5b9347SMatthew N. DoddThe 165ce5b9347SMatthew N. Dodd.Nm 166ce5b9347SMatthew N. Doddcommand appeard in 167ce5b9347SMatthew N. Dodd.Fx 5.1 . 168