USBHIDACTION(1)

名称
usbhidaction - USB の HID コントロールにしたがってアクションを実行する

書式
usbhidaction [-diev] -c config-file -f device [-p pidfile] arg ...

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

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

-d  デーモンになるかどうかのフラグをトグルさせます。

-e  usbhidaction がすぐ終了するように指示します。 これは、複数の冗長オプションをつけた時に、 どのようにファイルが解釈されるかを確認するのに便利です。

-i  設定ファイルに記述されているが、デバイスに存在しない HID 項目を無視します。

-v  出力を冗長にします。 デーモンにはなりません。

-c config-file
    設定ファイルのパス名を指定します。

-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)}'`

関連項目
usbhidctl(1), usbhid(3), uhid(4), usb(4)

歴史
usbhidaction コマンドは NetBSD 1.6 ではじめて登場しました。 usbhidaction コマンドは FreeBSD 5.1 で登場しました。