xref: /freebsd/usr.bin/usbhidaction/usbhidaction.1 (revision d5ad1713cc38b680920efc0596e3904532c07dc7)
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.\"
19ce5b9347SMatthew N. Dodd.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20ce5b9347SMatthew N. Dodd.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21ce5b9347SMatthew N. Dodd.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22ce5b9347SMatthew N. Dodd.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23ce5b9347SMatthew N. Dodd.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24ce5b9347SMatthew N. Dodd.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25ce5b9347SMatthew N. Dodd.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26ce5b9347SMatthew N. Dodd.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27ce5b9347SMatthew N. Dodd.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28ce5b9347SMatthew N. Dodd.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29ce5b9347SMatthew N. Dodd.\" POSSIBILITY OF SUCH DAMAGE.
30ce5b9347SMatthew N. Dodd.\"
31*d5ad1713SHans Petter Selasky.Dd March 14, 2022
32ce5b9347SMatthew N. Dodd.Dt USBHIDACTION 1
33ce5b9347SMatthew N. Dodd.Os
34ce5b9347SMatthew N. Dodd.Sh NAME
35ce5b9347SMatthew N. Dodd.Nm usbhidaction
36ce5b9347SMatthew N. Dodd.Nd perform actions according to USB HID controls
37ce5b9347SMatthew N. Dodd.Sh SYNOPSIS
38ce5b9347SMatthew N. Dodd.Nm
39f5a4d3f0SMatthew N. Dodd.Op Fl diev
40ce5b9347SMatthew N. Dodd.Fl c Ar config-file
41ce5b9347SMatthew N. Dodd.Fl f Ar device
42ce5b9347SMatthew N. Dodd.Op Fl p Ar pidfile
43986bd841SWarner Losh.Op Fl t Ar tablefile
44ce5b9347SMatthew N. Dodd.Ar arg ...
45ce5b9347SMatthew N. Dodd.Sh DESCRIPTION
46ffc07c4cSRuslan ErmilovThe
47ce5b9347SMatthew N. Dodd.Nm
48ffc07c4cSRuslan Ermilovutility
49ce5b9347SMatthew N. Doddcan be used to execute commands when certain values appear on HID controls.
50ce5b9347SMatthew N. DoddThe normal operation for this program is to read the configuration file
51ce5b9347SMatthew N. Doddand then become a daemon and execute commands as the HID items specify.
52ffc07c4cSRuslan ErmilovIf a read from the HID device fails, the program dies; this will make it
53ce5b9347SMatthew N. Dodddie when the USB device is unplugged.
54ce5b9347SMatthew N. Dodd.Pp
55ce5b9347SMatthew N. DoddThe options are as follows:
56ffc07c4cSRuslan Ermilov.Bl -tag -width indent
57ce5b9347SMatthew N. Dodd.It Fl d
58ce5b9347SMatthew N. DoddToggle the daemon flag.
59f5a4d3f0SMatthew N. Dodd.It Fl e
60f5a4d3f0SMatthew N. DoddInstruct
61f5a4d3f0SMatthew N. Dodd.Nm
62ffc07c4cSRuslan Ermilovto die early.
63ffc07c4cSRuslan ErmilovUseful when specified with multiple verbose options to see how files are parsed.
64ce5b9347SMatthew N. Dodd.It Fl i
65ffc07c4cSRuslan ErmilovIgnore HID items in the configuration file that do not exist in the device.
66f5a4d3f0SMatthew N. Dodd.It Fl v
67f5a4d3f0SMatthew N. DoddBe verbose, and do not become a daemon.
68f5a4d3f0SMatthew N. Dodd.It Fl c Ar config-file
69ffc07c4cSRuslan ErmilovSpecify a path name for the configuration file.
70986bd841SWarner Losh.It Fl t Ar tablefile
71986bd841SWarner LoshSpecify a path name for the HID usage table file.
72ce5b9347SMatthew N. Dodd.It Fl f Ar device
73ce5b9347SMatthew N. DoddSpecify a path name for the device to operate on.
74ce5b9347SMatthew N. DoddIf
75ce5b9347SMatthew N. Dodd.Ar device
76ce5b9347SMatthew N. Doddis numeric, it is taken to be the USB HID device number.
77ce5b9347SMatthew N. DoddIf it is a relative
78ce5b9347SMatthew N. Doddpath, it is taken to be the name of the device under
79ce5b9347SMatthew N. Dodd.Pa /dev .
80ce5b9347SMatthew N. DoddAn absolute path is taken to be the literal device pathname.
81ce5b9347SMatthew N. Dodd.It Fl p Ar pidfile
82ce5b9347SMatthew N. DoddSpecify an alternate file in which to store the process ID.
83ce5b9347SMatthew N. Dodd.El
84ce5b9347SMatthew N. Dodd.Pp
85ffc07c4cSRuslan ErmilovThe configuration file will be re-read if the process gets a
86ffc07c4cSRuslan Ermilov.Dv SIGHUP
87ffc07c4cSRuslan Ermilovsignal.
88ce5b9347SMatthew N. Dodd.Sh CONFIGURATION
89ce5b9347SMatthew N. DoddThe configuration file has a very simple format.
90ce5b9347SMatthew N. DoddEach line describes an
91ffc07c4cSRuslan Ermilovaction; if a line begins with a whitespace, it is considered a continuation
92ce5b9347SMatthew N. Doddof the previous line.
93ffc07c4cSRuslan ErmilovLines beginning with
94ffc07c4cSRuslan Ermilov.Ql #
95ffc07c4cSRuslan Ermilovare considered as comments.
96ce5b9347SMatthew N. Dodd.Pp
97f5a4d3f0SMatthew N. DoddEach line has four parts: a name of a USB HID item, a value for that item,
98f5a4d3f0SMatthew N. Dodda debounce value, and an action.
99ce5b9347SMatthew N. DoddThere must be whitespace between the parts.
100ce5b9347SMatthew N. Dodd.Pp
101ce5b9347SMatthew N. DoddThe item names are similar to those used by
1027778ab7eSAlexander Motin.Xr usbhidctl 1 .
103ce5b9347SMatthew N. Dodd.Pp
104ce5b9347SMatthew N. DoddThe value is simply a numeric value.
105ffc07c4cSRuslan ErmilovWhen the item reports this value,
106ce5b9347SMatthew N. Doddthe action will be performed.
107ffc07c4cSRuslan ErmilovIf the value is
108ffc07c4cSRuslan Ermilov.Ql * ,
109ffc07c4cSRuslan Ermilovit will match any value.
110ce5b9347SMatthew N. Dodd.Pp
111ffc07c4cSRuslan ErmilovThe debounce value is an integer not less than 0.
112ffc07c4cSRuslan ErmilovThe value of 0 indicates that no debouncing should occur.
113ffc07c4cSRuslan ErmilovA value of 1 will only execute the action when the state changes.
114ffc07c4cSRuslan ErmilovValues greater than one specify that an action should be performed
115ffc07c4cSRuslan Ermilovonly when the value changes by that amount.
116f5a4d3f0SMatthew N. Dodd.Pp
117ce5b9347SMatthew N. DoddThe action is a normal command that is executed with
118ce5b9347SMatthew N. Dodd.Xr system 3 .
119ce5b9347SMatthew N. DoddBefore it is executed some substitution will occur:
120ffc07c4cSRuslan Ermilov.Ql $n
121ffc07c4cSRuslan Ermilovwill be replaced by the
122ffc07c4cSRuslan Ermilov.Ar n Ns th
123ffc07c4cSRuslan Ermilovargument on the command line,
124ffc07c4cSRuslan Ermilov.Ql $V
125ffc07c4cSRuslan Ermilovwill be replaced by the numeric value of the HID item,
126ffc07c4cSRuslan Ermilov.Ql $N
127ffc07c4cSRuslan Ermilovwill be replaced by the name of the control, and
128ffc07c4cSRuslan Ermilov.Ql $H
129ffc07c4cSRuslan Ermilovwill be replaced by the name of the HID device.
130ce5b9347SMatthew N. Dodd.Sh FILES
131ffc07c4cSRuslan Ermilov.Bl -tag -width ".Pa /usr/share/misc/usb_hid_usages"
132ce5b9347SMatthew N. Dodd.It Pa /usr/share/misc/usb_hid_usages
133ce5b9347SMatthew N. DoddThe HID usage table.
134ce5b9347SMatthew N. Dodd.It Pa /var/run/usbaction.pid
135ffc07c4cSRuslan ErmilovThe default location of the PID file.
136ce5b9347SMatthew N. Dodd.El
137ce5b9347SMatthew N. Dodd.Sh EXAMPLES
138ce5b9347SMatthew N. DoddThe following configuration file can be used to control a pair
139ce5b9347SMatthew N. Doddof Philips USB speakers with the HID controls on the speakers.
140ce5b9347SMatthew N. Dodd.Bd -literal -offset indent
141ce5b9347SMatthew N. Dodd# Configuration for various Philips USB speakers
142e83a53abSMateusz PiotrowskiConsumer:Volume_Increment		 1 0 mixer -f $1 vol.volume=+1
143e83a53abSMateusz PiotrowskiConsumer:Volume_Decrement		 1 0 mixer -f $1 vol.volume=-1
144*d5ad1713SHans Petter SelaskyConsumer:Mute				 1 0 mixer -f $1 vol.mute=^
145e83a53abSMateusz PiotrowskiConsumer:Channel_Top.Microsoft:Base_Up	 1 0 mixer -f $1 bass.volume=+1
146e83a53abSMateusz PiotrowskiConsumer:Channel_Top.Microsoft:Base_Down 1 0 mixer -f $1 bass.volume=-1
147ce5b9347SMatthew N. Dodd.Ed
148ce5b9347SMatthew N. Dodd.Pp
149ce5b9347SMatthew N. DoddA sample invocation using this configuration would be
150ffc07c4cSRuslan Ermilov.Pp
151ffc07c4cSRuslan Ermilov.Dl "usbhidaction -f /dev/uhid1 -c conf /dev/mixer1"
152f5a4d3f0SMatthew N. Dodd.Pp
153f5a4d3f0SMatthew N. DoddThe following example controls the mixer volume using a Logitech Wingman.
154ffc07c4cSRuslan ErmilovNotice the debounce of 1 for buttons and 5 for the slider.
155f5a4d3f0SMatthew N. Dodd.Bd -literal -offset indent
156e83a53abSMateusz PiotrowskiButton:Button_1	  1 1	mixer vol.volume=+10
157e83a53abSMateusz PiotrowskiButton:Button_2	  1 1	mixer vol.volume=-10
158e83a53abSMateusz PiotrowskiGeneric_Desktop:Z * 5	mixer vol.volume=`echo $V | awk '{print int($$1/255*100)}'`
159f5a4d3f0SMatthew N. Dodd.Ed
160ce5b9347SMatthew N. Dodd.Sh SEE ALSO
161ce5b9347SMatthew N. Dodd.Xr usbhidctl 1 ,
162ce5b9347SMatthew N. Dodd.Xr usbhid 3 ,
163ce5b9347SMatthew N. Dodd.Xr uhid 4 ,
164ce5b9347SMatthew N. Dodd.Xr usb 4
165ce5b9347SMatthew N. Dodd.Sh HISTORY
166ce5b9347SMatthew N. DoddThe
167ce5b9347SMatthew N. Dodd.Nm
168ce5b9347SMatthew N. Doddcommand first appeared in
169ce5b9347SMatthew N. Dodd.Nx 1.6 .
170ce5b9347SMatthew N. DoddThe
171ce5b9347SMatthew N. Dodd.Nm
172ffc07c4cSRuslan Ermilovcommand appeared in
173ce5b9347SMatthew N. Dodd.Fx 5.1 .
174