USB ジョイスティックを使う


原理

ジョイスティックデバイスからの入力をスキャンコードに変換し,キーボードもどきドライバへと投げてやります. プログラム側からはキーボードからの入力として解釈されます.

というわけで

という特徴があります. ソースコードが公開されていないゲームでもジョイスティックが使えるようになると思います.

使用したジョイスティック

サンワサプライの JY-P33U というジョイパッドです. 青のスケルトンカラーのもので,xy 入力のスティックが1つ,ボタンが8つあります. ちなみに,2000 年 9 月現在では,実売価格は 1,400 円前後のようです.

ドライバ

  1. 2.2 系のカーネルを使っている場合は,バックポートパッチを当てます.
    ディストリビューションによっては既に適用済のこともあります.
  2. カーネルを再構築します.
  3. キーボードから入力されたふりをさせるドライバも動くようにしておきましょう.

デバイスファイルの作成

必要なデバイスファイルを作成します.

mknod /dev/pseudokbd c 10 241
mknod /dev/usbjs0 c 13 0

モジュールの読み込み

動作に必要なモジュールをロードします.

modprobe pseudokbd
modprobe usb-uhci (もしくは usb-ohci)
modprobe joydev
modprobe hid

ジョイスティックデバイスのテスト

ここで,ジョイスティックデバイス単独で動いているかテストしてみます. jsdump

./jsdump < /dev/usbjs0
と実行してみましょう.

正常動作している場合は,ジョイスティックのボタンやスティックを操作する度にイベントが表示されます.

xkobo 用フィルタ

JG にある xkobo 用のフィルタを作成してみました. perl スクリプトです.

ジョイスティックを差し込んだ後,

./xkobo &
と実行し,xkobo のウィンドウをアクティブにすると,ジョイスティックで操作できるようになります.

kterm なんかのウィンドウにフォーカスを移すと,変な動作をしますが,これはご愛敬(としてください)

スクリプトの先頭にジョイスティックイベントとスキャンコードの変換テーブルがあります. このテーブルを書き換えるだけで多くのゲームでジョイスティックを使えるようになると思います.


Linux のお部屋のもくじ
いまいくんのページのもくじ
2002 年 8 月 21 日更新
imai@jr0bak.homelinux.net