Xbox360エミュ XeniaのコントローラーをPS配列に設定する
Xeniaにはいわゆるキーコンフィグ的な機能は実装されていませんが、特に何か設定しなくてもコントローラーを利用出来るので普通に使う分にはこれと言って困る事は無いんですよね。
と言ってもそれは普通に使う分にはの話なので、ボタンのレイアウトをカスタマイズしたい場合はどうしたらいいの?という時の為に gamecontrollerdb.txt を利用した設定方法を紹介したいと思います。
Xinput接続のコントローラーを利用している場合、当エントリーで紹介する方法ではうまくいかない可能性もありますのでその点はあらかじめご了承くださいね?ちなみに私もこの後に購入した中華製のPS4コントローラーではこの方法は利用出来ませんでした…ぐぬぬ。
gamecontrollerdb.txt の作成
Xenia本体と同じ場所に gamecontrollerdb.txt という名前で新規にテキストファイルを作成しますが、Xeniaの導入時にこちらから gamecontrollerdb.txt をダウンロードしている場合はそこに追記して利用する事も可能です。
その辺に関してはこちらのエントリーでコントローラーの設定に関するところにちょろっと書いてたりしますので参考になれば幸いです。
コントローラーの設定内容を作成する
要は gamecontrollerdb.txt にGameControllerDBと同じフォーマットで設定を追加してやればいい話なんですが、自分の使っているコントローラーのGUIDやボタンの番号なんかがわからない事にはやりようがないわけでして…
とりあえずいくつか方法を挙げておきますのでお好きなやり方でどうぞ。
既存の設定を編集する方法
使用しているコントローラーのGUIDがわかる場合は、先ほど貼ったリンク先から gamecontrollerdb.txt をダウンロードしてきて該当するGUIDの行をコピー&変更したい部分だけ手動で編集するという方法があります。
例えば当エントリーのタイトルの件「XeniaのコントローラーをPS配列に設定する」という事であればAボタンとBボタン、XボタンとYボタンの設定をそれぞれ入れ替えてやればOKなわけです。
この例で言うと黄色い下線を引いた部分を
03000000250900008888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows,
こうですね?
03000000250900008888000000000000,PS2 Controller,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,platform:Windows,
SDL2 Gamepad Toolを利用する方法
SDL2 Gamepad Toolのダウンロードはこちらからになります。
ダウンロードしたら任意の場所に展開しましょう。
注意点としては最終更新が結構前のツールなので最新のSDLの仕様に対応していないようですが、一番わかりやすいツールだったのと今回の用途では特に問題無さそうに思えたので利用してみました。
試しに同梱されていたSDL2.dll(2.0.7)を最新バージョン(2.0.20)に差し替えて同様に設定した結果を比較してみたところ、JC-PS101U経由で接続したデュアルショック2(Dinput)では差異無し、中華製のSwitch Proコン(Xinput)ではGUIDが変わり右スティックと左トリガーに差異が発生した(a2~a4の位置が変わった)のでコントローラーによっては正確に設定出来ない可能性があるかもしれません。とりあえずご参考までに。
SDL2 Gamepad Toolの使い方
gamepad-tool.exe を実行します。
一番上のプルダウンメニューから設定したいコントローラーを選択します。表示されない場合はPCに認識されていないと思われるのでまずはそちらの方を頑張って何とかしていただきたいという事で。
Create A New Mapping をクリックするとダイアログが表示されるのでそれも OK で次へ。
色が変わった部分をアサインしたいボタンかスティックを押すなり倒すなりで設定していきます。アサインするボタンが無い場合は Skip をクリックして次に行きます。例えばデュアルショックだとガイドボタンに相当するボタンは無いのでそんな時に使う感じで。
ちなみにスティックは全体に色がついている時はボタンとしての設定で、矢印が表示されている時は方向の設定になります、念の為。
最後にコントローラーというか設定に名前をつけて終了です。自動でセットされた名前が気に入らなければ適当に打ち直してから OK をクリックします。
Copy Mapping String をクリックすると設定した内容がクリップボードにコピーされて確認のダイアログが表示されるので OK をクリックします。
尚、Copy Gamepad GUID をクリックでGUIDのみ取得する事も出来るので、ここで入手したGUIDを元に前出の gamecontrollerdb.txt から設定をコピーして~という方法もありかと思います。GUIDは起動時のログにも出てるのでそれでわかると言えばわかりますけどね?
Steamのコントローラー設定を流用する方法
PCにSteamのクライアントをインストールしている場合は、そちらの設定ファイルからコントローラーに関する部分を流用するという方法もあります。
Steamのインストールフォルダ/config/config.vdf
上記のファイルを開いて SDL_GamepadBind で検索するか、最後の方から見ていくといかにもそれっぽい部分が見つかるはずなのでそれをコピーします。
gamecontrollerdb.txt の編集
ここまでに紹介した何れかの方法で作成した設定内容を gamecontrollerdb.txt に貼り付けて保存します。新規に作成した空ファイルでなくダウンロードした gamecontrollerdb.txt に貼り付ける場合は一番最後に追加しましょう。
厳密には最後でなくても構いませんが、同じGUIDの設定が存在する場合は下に書いてある方が有効になるのでそういう事にしていると思われます。また、パラメータの並び順が違う場合がありますが特に問題は無いようなので気にしなくてもいいかなと。
Xinputでも応用は可能かも?
Xinput接続のコントローラーでも同様の手順で設定出来る事は確認しましたが、コントローラーによってはボタンが入れ替わったりする可能性があるのでダメ元でお試しを。
configも hid = “any" のままでOKでした、むしろここはイジらない方がよさげかと。
とりあえずXeniaのキーコンフィグはこれで
これでXeniaでもデュアルショック2の○ボタンで決定、×ボタンでキャンセルが出来るようになりました。Xeniaにキーコンフィグ機能が実装されたらこの手順は不要になりますが、GameControllerDBを利用している時点でそれは無いような気もするんですよねぇ…なのでとりあえず覚えておいても損は無いかもしれませんという事で。