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経由の記事とごちゃまぜなので深くは追及しない


--



コメント

このブログの人気の投稿

Ubuntu20.04にxrdpで接続するとAuthentication Requiredが発生する件

Oculus Quest 2と音ゲー

WSL2でKVMを動かす