This page linked from [ ]

Linux でゲームパッドを使う

ELECOM の「USBtoPS/PS2ゲームパッドコンバータ JC-PS101USV」というのを買ってきた。
プレステのコントローラを USB ポートにつなぐためのもの。
これを Linux で使ってみる。

環境

IBM ThinkPad? X22
Debian woody
kernel 2.4.18

joydev モジュールを使うっぽい。

hotplug 編

よくわからん。

murasaki 編

murasaki, devfsd あたりを入れておく。

とりあえずさしてみると

Sep 15 01:47:28 templo kernel: hub.c: USB new device connect on bus2/1, assigned device number 17
Sep 15 01:47:28 templo kernel: usb.c: USB device 17 (vend/prod 0x925/0x8888) is not claimed by any active driver.
Sep 15 01:47:28 templo kernel: usb.c: registered new driver hiddev
Sep 15 01:47:28 templo kernel: usb.c: registered new driver hid
Sep 15 01:47:28 templo kernel: input0: USB HID v1.00 Joystick [WiseGroup.,Ltd WiseGroup.,Ltd] on usb2:17.0
Sep 15 01:47:28 templo kernel: hid-core.c: v1.8 Andreas Gal, Vojtech Pavlik <vojtech@suse.cz>
Sep 15 01:47:28 templo kernel: hid-core.c: USB HID support drivers

とか言われる。
この状態で

lsmod | grep joydev

すると joydev はロードされてないのがわかる。
2行目の (vend/prod 0x925/0x8888) がミソ。
/etc/murasaki/murasaki.usbmap の最後に以下を追加。

joydev 0x0003 0x0925 0x8888 0x0 0x0 0x0 0x0 0x0 0x00 0x00 0x00 0x00000000

先頭がモジュール名、その次の次に vend の値を、さらにその次に prod の値を書く。
他の項はなんだかわからん。
(書くだけでいいっぽい。特にプロセス再起動などは必要ないっぽい。)
んで、USB 端子を抜いてさす。
すると

$ lsmod | grep joydev
joydev                  5696   0 (unused)
input                   3328   0 [hid joydev mousedev]

とモジュールがロードされる。
/dev/js0 ができているのを確認する。

動作試験

joystick パッケージを入れて

jstest /dev/js0

で動作試験ができる。
パッドのボタンを押すと表示が変わる。


ANALOG OFF のときANALOG ON のとき
軸0十字キー左右左スティック左右
軸1十字キー上下左スティック上下
軸2右スティック左右
軸3右スティック上下
軸4十字キー左右
軸5十字キー上下
ボタン0△ボタン△ボタン
ボタン1○ボタン○ボタン
ボタン2×ボタン×ボタン
ボタン3□ボタン□ボタン
ボタン4L2ボタンL2ボタン
ボタン5R2ボタンR2ボタン
ボタン6L1ボタンL1ボタン
ボタン7R1ボタンR1ボタン
ボタン8STARTボタンSTARTボタン
ボタン9SELECTボタンSELECTボタン
ボタン10左スティック押し
ボタン11右スティック押し

xmame で使う

コンパイル時に JOY_I386 = 1 を有効にしておく。
実行時に -jdev /dev/js0 -jt 4 とオプションをつける。