PSO2 XBOX Elite controller 無線化その2

今回は以前XBOX Elite controller無線化について記載した記事の続報になります。

前回、無線化に成功したときの残課題として

1:G13を接続した状態ではXBOX Elite controller(以下エリコン)が反応しない。

というのを記載しました。

暫定的にではありますが、その解決方法を見つけたのでメモ書きとして残しておきます

最初に言っておきますが、PSO2クライアントの作成があまりに雑なのでちょっと文句を書いてしまうかもしれないので、その辺りを許容できる方のみ続きをお読みください。





1:そもそも何でこんなことが起きてしまうのか?

私が簡単に調査した限りでの予測になってしまいますが、下記の理由が予想されます

・OS側で優先設定したゲームパッド設定を無視して、PSO2側で一番最初に認識したジョイスティックを強制使用する仕様になっている。
  検証内容
    1:ゲームパッドとして反応するデバイスをエリコンを除き全て外す
     →エリコンが正常に反応する

    2:G13のゲームパッドドライバのみを停止させた状態でエリコンが反応するか試す 
     →エリコンが正常に反応する

    3:エリコンドライバのみを有効にした後、PSO2本体(※1)を起動。
      その後、G13のゲームパッドドライバを有効にする
     →エリコンが正常に反応する

※1:PSO2はランチャーソフトを起動してから本体を起動するというステップを取っている

上記結果から、PSO2本体起動時にPCが認識しているゲームパッドドライバの内、一番最初にPSO2本体が識別できるものを強制選択されていると思われる。

よって、他のゲームパッド接続を解除することにより動くと思われる
(あんまりしっかりとした検証ではないので断言はできませんが・・・)

裏を返せばエリコンのドライバ以外が認識されていない状態の時にPSO2を起動すれば問題なく動くということになる。

最初はXINPUTデバイスのみで起きるのか、とかDirectInputが一つ以上接続されていると起きるのか、とかいろいろ考えましたが多分その辺りは関係ないのかなと思います。

2:じゃ、実際どうやってこの問題を解決するのか?

SEGAゲームパッドドライバの認識をOS側が優先設定したものを認識できるように変えてもらう!!
・しっかりとクライアントが作りこまれているゲームだとゲーム側で使うコントローラーを選択できるので、その仕様をPSO2でも作ってもらう!!

・・・などなど正直クライアントそのものの問題なのでプレイヤー側でできることはかなり限られてくると思います。

プレイヤー側として対応できる方法は、項目1の検証内容にあるように

・エリコンを除くすべてのゲームパッドの接続を解除する

・・・のが一番手っ取り早いですが、この方法ではPSO2を起動する度にUSBポートからコントローラーを抜いたり挿したりすることになるのでUSBコネクタを痛めてしまいます

なので、次の取れる手段が
・エリコンのドライバ以外をすべて無効状態にする

おそらく、これが一番楽かと思います。

書いてることはすごく面倒に見えますが、やることはとても簡単で

バイスマネージャーからエリコン以外のゲームパッドドライバを無効化すれば問題なく動きます。

どのデバイスがコントローラーとして機能しているかを調べるには、「コントロールパネル」から「USBゲームコントローラーのセットアップ」で、出てくるゲームパッドの設定画面に項目として表示されているものすべてが対象になります。

・・・ということで、そこに表示されているドライバを停止させれば無事無線化したエリコンを使用することができます




・・・・・・・・・そんなの面倒っていう人も言いそうかな?

といっても現状、これしか手段がないためこれ以上の手段を取りたい場合はPSO2開発チームに改善要望を出してください・・・としか言えなかったりします。


・・・どうしても・・・どうしても・・・という方はプログラミングに関する知識が必要にはなりますが、下記案を読めばなんとかなると思います。


で、その手段ですが

あんまり深く考えず、PSO2のランチャーを起動する前にゲームパッドドライバを無効化し、エリコンのドライバのみにするプログラムを書いて実行すればいいんです!!

私も現在この暫定対応で対応しています。
C#とバッチファイルを組み合わせて作成しました)

そのうち、余裕ができたらこのプログラムについても記事にしていこうかなと思います。
(ただし、結構面倒なので理解できる記事にまとめるのは大変そう・・・)

ということで今回はこのあたりでー