WSL2でゲームパッドを使う
記述日 2023年11月28日
WSL2でUSBデバイスを使用する方法が判ったので
ここを参考に
https://github.com/microsoft/WSL/issues/7747
要点は
CONFIG_LOCALVERSION="-kotc9"
CONFIG_INPUT_JOYDEV=y
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_JOYSTICK=y
CONFIG_JOYSTICK_ANALOG=y
CONFIG_JOYSTICK_XPAD=y
CONFIG_JOYSTICK_XPAD_FF=y
Windows側からUSBデバイスをアタッチする前にwslを起動しておく必要がある
USBデバイスのアタッチは管理者で行う※デバイスによっては管理者でなくても通るかも
wsl側はlsusbやら/dev/inputやらで接続を確認
動作はjstest、evtestで確認
手持ちのコントローラであれこれ試した結果
DirectInputは使えた※F710のDirectInputモード
最初jstestとブラウザでは認識するがpygameでは認識しなくてそういうものかと諦めかけた
色々調べて入力処理方式に新旧あるのにたどり着いた
SDL1.x系は環境変数SDL_JOYSTICK_DEVICEで明示的に指定すると旧式で動作する
SDL2.x系は新式にか対応しないとの事
pygameは環境変数設定で認識する様になった
pysdl2は認識しないのでそういう事なのだろうと諦めかけた
がしかしもう少し調べた結果SDL2ではパーミッションの追加が必要との事
ユーザーをinputグループに追加した結果SDL2でも認識する様になった
諦めたらそこで終わりってのはあるんだな
XInputとPS3コントローラーはUSBデバイスとしては認識されるが動作はしない
ドライバーがないからと推測
適当にググって作業
$ sudo apt install xboxdrv
$ sudo xboxdrv -v --no-uinput --type xbox360 --detach-kernel-driver --device-by-id 046d:c21f
でF710のXInputモードでのデータが取れるのは確認
jstestを含むアプリ上で認識しないので使えないのと変わらない
xboxdrvの設定をこねればいけるかもだがDirectInputで動くなら当面はXInputは不要
PS3コントローラーもxboxdrvでいける旨の記事もあったがエラーで実行できない
記事がかなり古くBluetooth経由の記事とごちゃまぜなので深くは追及しない
--
コメント
コメントを投稿