いつもお世話になっております。
PCに複数のゲームパッドを接続している場合の優先順位について確認させてください。
XInput形式のゲームパッド2個(以下、XInput_A、XInput_B)と
DirectInput形式のゲームパッド1個(以下、DirectInput_A)の
合わせて3個のゲームパッドをPCに接続している状態で
GetJoypadXInputState、GetJoypadDirectInputState、GetJoypadNameを呼び出すと
【 DX_INPUT_PAD1 】
・GetJoypadXInputState … 成功(0)
・GetJoypadDirectInputState … 成功(0)
・GetJoypadName … 「Controller (XBOX 360 For Windows)」というデバイス名が取得される
【 DX_INPUT_PAD2 】
・GetJoypadXInputState … 成功(0)
・GetJoypadDirectInputState … 成功(0)
・GetJoypadName … 「Controller (XBOX 360 For Windows)」というデバイス名が取得される
【 DX_INPUT_PAD3 】
・GetJoypadXInputState … 失敗(-1)
・GetJoypadDirectInputState … 成功(0)
・GetJoypadName … XInput_Aのデバイス名が取得される
【 DX_INPUT_PAD4 】
・GetJoypadXInputState … 失敗(-1)
・GetJoypadDirectInputState … 成功(0)
・GetJoypadName … XInput_Bのデバイス名が取得される
【 DX_INPUT_PAD5 】
・GetJoypadXInputState … 失敗(-1)
・GetJoypadDirectInputState … 成功(0)
・GetJoypadName … DirectInput_Aのデバイス名が取得される
というように、XInput形式のゲームパッド1個の情報は2つのInputTypeに割り当てられていて
GetJoypadXInputState、GetJoypadDirectInputStateともに成功になるXInput形式のゲームパッドの情報が
優先的に若い番号のInputTypeに割り当てられ、それに続いて、GetJoypadDirectInputStateのみ成功する
XInput形式のゲームパッドの情報が割り当てられ、その後に、DirectInput形式のゲームパッドの情報が
割り当てられる、という結果になりました。
このような割り当ての優先順位はDXライブラリの仕様でしょうか?
ゲームパッドの優先順位を変更する以下2つの方法を試してみましたが、上記の結果は変わりませんでした。
そのため、PC側の設定の問題ではないのでは、と思い質問させていただいた次第です。
【方法1】
「コントロールパネル」→「ハードウェアとサウンド」→「デバイスとプリンター」→ゲームパッドのアイコンを右クリック
→「ゲームコントローラの設定」→「詳細設定」→優先デバイスを選択
【方法2】
すべてのゲームパッドのドライバを削除 → 再起動 → 優先させたいゲームパッドから順番に接続する
使用したゲームパッドと開発環境は以下の通りです。
・ゲームパッド
ELECOM JC-U4113SWH
Microsoft Xbox One Controller + Cable for Windows
iBUFFALO レトロ調 USBゲームパッド 8ボタンタイプ BSGP801GY
・開発環境
VisualStudio2017 Community
DXライブラリバージョン:3.19d
OS:Windows7(64bit) Home
以上です。よろしくお願い致します。