※2020/06/13 Dual Shock4 Emulationモードの入力不具合を修正しました。
https://github.com/ProjectAsura/RdpGamepad/releases/tag/DS4_7
※2020/11/20 Dual Senseからの入力を試験的にサポートすることにしました。
https://github.com/ProjectAsura/RdpGamepad/releases/tag/DS5_1
こんにちわ,Pocolです。
今回はテレワークお役立ち情報の続編です。
前回はWindows 10 HomeがRemote Fx USBリダイレクト使えなくて,リモートデスクトップでパッドが使えなくて困って,リモートデスクトップでゲームパッドが扱えない場合にゲームパッドを使えるようにするプラグインを紹介したのですが…
今回はそのプラグインを改造して,少し扱いやすくしました!というお話です。
前回紹介した、https://github.com/microsoft/RdpGamepadはXInput対応のゲームを開発する際にはとても役に立つのですが,残念ながらDual Shock 4にしか対応していないゲームを開発する際にはリモート越しで操作出来なくてこまってしまうという場面に出くわします(※まぁ開発者の人ならわかりますよね)。
「無いなら作ろう!」というわけで,作ってみました。
https://github.com/ProjectAsura/RdpGamepad/releases/tag/DS4_6
基本的には
- XInput —> Dual Shock 4
- Dual Shock 4 —> Dual Shock 4
- Dual Shock 4 —> XInput
という処理を付け足しました。
使い方は簡単で,本家の代わりにこちらで改造した版のインストーラーを使ってインストールしてください。
転送先のPCで右下に常駐する「Microsoft Remote Desktop Gamepad Receiver」を右クリックして,転送先で振る舞うコントローラータイプを選択してください。
Xbox 360を選択すると,
[ローカルPC:XInput] → [リモートPC:XInput]として動作します。
Xbox 360 Emulationを選択すると,
[ローカルPC:Dual Shock 4] → [リモートPC:XInput]として動作します。
Dual Shock 4を選択すると,
[ローカルPC:Dual Shock 4] → [リモートPC:Dual Shock 4]として動作します。
Dual Shock 4 Emulationを選択すると,
[ローカルPC : XInput] → [リモートPC: Dual Shock 4]として動作します。
XInputでDual Shock 4をエミュレーションする場合にはボタン数が足らないため,PSボタンとタッチパッドボタンが効かない仕様です。
また,サブモジュールとして使用しているViGEmClientがジャイロなどに対応していない関係で,Dual Shock 4のジャイロは非サポートです。
また,Bluetoothを使った接続に関しても非サポートです。
ちなみに分かっている情報として,Xbox OneゲームパッドをRemote FX USBリダイレクトでつなぐとリモート先のPCがブルースクリーンになるなどの問題が報告されています。
現在所属会社の方では,Remote FX USBリダイレクトでブルースクリーンが発生する問題を避ける方法としてRdpGamepadの使用が推奨されています。
そんなわけで,転送先PCでDual Shock 4として認識してくれないと開発に困る!という方たちにはもしかしたら有益な情報かもしれませんし,ブルースクリーンで悩んでいる方に有益な情報かもしれません。
テレワークでの開発にお役に立てば幸いです。
※追記ですが,ViGEmBusのドライバー側にバグがあるようで,入力を受け付けなくなってBSODになったりするみたいです。DirectInputやXInputの初期化処理で関数から帰ってこなくなったら,このバグが発生している可能性あります。この状態でリモート接続を切断してしまうと,再接続できなくなるようなので,バグが発生したらリモート側のPCをいったん再起動して対処するほかないようです(再起動にも20分とか時間がかかるようです)。現在,Issueが発行されています。1日以上PCを起動しっぱなしにするとバグを踏む確率が高くなるので,対処として1日に1回PCの再起動かけると良いかと思います。