hal_inputで呼び出したいデバイスの指定方法

hal_inputを使ってアナログコントローラやフライトスティックなどを呼び出すとき,これまでの例では,
OS本体の端末コマンド "less /proc/bus/input/devices" を使ってその「名前」の一部を呼び出しのキーワードにしていました.

ex:

I: Bus=0003 Vendor=046d Product=c215 Version=0110
N: Name="Logitech Logitech Extreme 3D"
P: Phys=usb-0000:00:1d.0-2/input0
S: Sysfs=/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/input/input8
U: Uniq=
H: Handlers=event8 js1
B: EV=1b
B: KEY=fff 0 0 0 0 0 0 0 0 0
B: ABS=30063
B: MSC=10

のとき,
loadusr -W hal_input -KRAL Extreme


名前がユニークな場合はこれで十分ですが,ひとつの機器が内部的にはふたつのデバイスに分かれているときや,
同じ機器を2つつないでるとか,そういう場合はどうしましょう.
loadusr -W hal_input -KRAL Extreme:0

loadusr -W hal_input -KRAL Extreme:1
のようにすると,区別することができます.番号はたとえば,
Mouseinput3input10にマッチするとき, MouseあるいはMouse:0 と書くとinput3を選択し,
mouse:1と記述するとinput10を使用します.


また,
H: Handlers=event8 js1
で示されているイベント番号(ここでは8)を使用して指定することもできます
loadusr -W hal_input -KRAL 8
これは連番で振られるのである時点ではユニークですが,USBデバイスを追加したり引っこ抜いたりする手順によっては変わってしまうような気もします.

USBのベンダIDまたはプロダクトIDで指定することもできます.たとえば,
I: Bus=0003 Vendor=046d Product=c215 Version=0110  のとき
loadusr -W hal_input -KRAL Vendor=046d
loadusr -W hal_input -KRAL Product=c215
が有効です.
同じメーカのデバイスが少なければ有効な手段ですが,確実に指定がひとつに絞れるかとは言えないと思います.
絞り切れないときは,「:0」記法で対処できると思います(同じデバイスを複数持っていないので検証できない)

まあ結局,名前で呼び出しかけてしまったほうがたいていの場合においては楽な気はします.

Comments