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 | □ボタン | □ボタン |
ボタン4 | L2ボタン | L2ボタン |
ボタン5 | R2ボタン | R2ボタン |
ボタン6 | L1ボタン | L1ボタン |
ボタン7 | R1ボタン | R1ボタン |
ボタン8 | STARTボタン | STARTボタン |
ボタン9 | SELECTボタン | SELECTボタン |
ボタン10 | 左スティック押し | |
ボタン11 | 右スティック押し |
xmame で使う
コンパイル時に JOY_I386 = 1 を有効にしておく。
実行時に -jdev /dev/js0 -jt 4 とオプションをつける。