EN JA
USBHIDACTION(1)
USBHIDACTION(1) FreeBSD General Commands Manual USBHIDACTION(1)

名称

usbhidactionUSB の HID コントロールにしたがってアクションを実行する

書式

usbhidaction [ -diev] -c config-file -f device [ -p pidfile][ -t tablefile] arg ...

解説

usbhidaction ユーティリティは、特定の値が HID コントロールに現れた時にコマンドを実行するのに使用されます。このプログラムの通常の動作は、設定ファイルの読み込み後にデーモンとなり、 HID の項目に指定された通りにコマンドを実行します。 HID デバイスからの読み込みが失敗した場合、プログラムは、終了します。つまり USB デバイスが抜かれた場合にも、プログラムは、終了するということです。

オプションは、以下の通りです:

-d
デーモンになるかどうかのフラグをトグルさせます。
-e
usbhidaction がすぐ終了するように指示します。これは、複数の冗長オプションをつけた時に、どのようにファイルが解釈されるかを確認するのに便利です。
-i
設定ファイルに記述されているが、デバイスに存在しない HID 項目を無視します。
-v
出力を冗長にします。デーモンにはなりません。
-c config-file
設定ファイルのパス名を指定します。
-t tablefile
HID 使用法テーブルファイルのパス名を指定します。
-f device
作動対象のデバイスのパス名を指定します。 device が数字の場合は、 USB HID デバイス番号とみなします。相対パスの場合は、 /dev 以下のデバイスの名前とみなします。絶対パスの場合は、そのままデバイスのパス名とみなします。
-p pidfile
プロセス ID を格納する別のファイル名を指定します。

プロセスが SIGHUP シグナルを受け取とると、設定ファイルが再び読み込まれます。

設定

設定ファイルは、非常に単純な形式をしています。各行は、アクションを記述しています。空白で始まる行は、前の行からの継続とみなされます。‘ #’で始まる行は、コメントとみなされます。

各行は、4 つの部分で構成されます。それは、USB HID の項目名、その項目の値、デバウンス値、アクションです。それぞれの部分は、空白で区切られます。

項目名は、 usbhidctl(1) によって使用されるもと同様です。

項目の値は、単なる数値です。その項目がこの値を示した時に、アクションが実行されます。この値が‘ *’の場合は、すべての値にマッチします。

デバウンス値は、非負の整数です。値 0 は、デバウンスしないことを示します。値 1 は、状態が変化した時のみアクションを実行します。値が 2 以上の場合は、項目の値がこの量だけ変化した時にのみ実行されます。

アクションは、 system(3) で実行される通常のコマンドです。コマンドが実行される前に、いくつかの置換が行われます。‘ $n’は、コマンドライン上の n 番目の引数に置き換えられます。‘ $V’は、HID 項目の数値に置き換えられます。‘ $N’は、コントロール名に置き換えられ、‘ $H’は、HID デバイス名に置き換えられます。

関連ファイル

/usr/share/misc/usb_hid_usages
HID の使用法テーブル
/var/run/usbaction.pid
デフォルトの PID ファイルの場所

使用例

以下の設定ファイルは、スピーカに HID コントロールを持つ 1 組の Philips USB スピーカを制御するのに使われます。

# 様々な Philips USB スピーカ用の設定 
Consumer:Volume_Up    1 0 mixer -f $1 vol +1 
Consumer:Volume_Down    1 0 mixer -f $1 vol -1 
# mute は未サポート 
#Consumer:Mute     1 0 mixer -f $1 mute 
Consumer:Channel_Top.Microsoft:Base_Up  1 0 mixer -f $1 bass +1 
Consumer:Channel_Top.Microsoft:Base_Down 1 0 mixer -f $1 bass -1

この設定を使用した起動例は、次のようになります。

usbhidaction -f /dev/uhid1 -c conf /dev/mixer1

以下は、Logitech Wingman でミキサボリュームを制御する例です。ボタンに対するデバウンス値は、1 で、スライダに対する値は、5 であることに注意してください。

Button:Button_1   1 1 mixer vol +10 
Button:Button_2   1 1 mixer vol -10 
Generic_Desktop:Z * 5 mixer vol `echo $V | awk '{print int($$1/255*100)}'`

歴史

usbhidaction コマンドは、 NetBSD 1.6 ではじめて登場しました。 usbhidaction コマンドは、 FreeBSD 5.1 で登場しました。
April 9, 2003 FreeBSD