XBOX360コントローラはXInput形式・DirectInput形式の両方に対応しています。残念ながらDirectInput形式で使用する際にはいくつかの問題を持っています。(詳しくはこちら) - LT/RTが同時に使えない
- 振動機能に対応していない
XInput PlusのDirectInput出力機能では、XInput出力をDirectInput出力に変換して出力することでこの問題を解決します。
*現状DirectInput出力機能が対応しているのは、DirectInput5以降を使用しているアプリケーションのみです。 *DirectInputのすべての機能に対応していないため、うまく動作しないアプリケーションもあります。
XInput Plusの「DirectInput」タブで「DirectInput出力を有効にする」にチェックをします。
- 「キー割り当て」で右スティック・左右トリガー(LT/RT)・方向バッド・ガイドボタンをDirectInputのどのキーに割り当てるか指定します。
- 左右トリガーの割り当て指定では、「反転」「+領域」「-領域」のオプションが指定可能です。「+領域」「-領域」を指定すると、トリガーの入力値は中心値より半分の領域に割り当てられます。DirectInputの値範囲が -10000~10000 の場合、「+領域」では出力値は 0~10000、「-領域」では出力値が0~-10000となります。
- 「SHIFT」にボタンを指定すると、そのボタンはSHIFTボタンとして機能します。SHIFTボタンを押しながら他のボタンを押すと、割り当てられたボタン番号+17のボタンが出力されます。(SHIFT+Aボタンを押すとボタン18が出力されます)
- DirectInputのフォースフィードバックによりコントローラを振動させる場合には、「フォースフィードバックエミュレーションを有効にする」にチェックをします。
「詳細設定」のサブタブ
- 「デバイスID」ではコントローラー番号のデバイスIDを指定します。2つ以上のコントローラを使用する場合には、XInputでのコントローラ番号(1~4)が、DirectInputでのどのデバイスIDに対応するかを指定する必要があります。(コントローラを1つしか使用しない場合には設定不要です)。コントローラ1~4の「検出ボタン」を押して、コントーラのボタンを押すことでデバイスIDが指定されます。
XInput Plusの通常の設定に加え、上記設定を行うことで、XInput PlusのXInput出力がDirectInputに変換されて出力されます。 DirectInput出力機能を使用した場合、「Dinput8.dll」「Dinput.dll」が対象アプリケーションのフォルダにコピーされます。
- 実際の動作
- XInputの出力は、以下の表のようにDirectInput出力に変換されます。
| XInput出力 | DirectInput出力 | DirectInputオブジェクト名 | | 左スティック | X軸/Y軸 | X Axis(LS) / Y Axis(LS) | | 右スティック | X回転/Y回転 Z軸/Z回転 *設定にて指定 | X Rot(RS) / Y Rot(RS) Z Axis(RS) / Z Rot(RS) | | 左右トリガー | Z軸/Z回転 スライダ1/スライダ2 ボタン11/ボタン12 ボタン12/ボタン13 *設定にて指定 | Z Axis(LT) / Z Rot(RT) Slider1(LT) / Slider2(RT) Button11(LT) / Button12(RT) Button12(LT) / Button13(RT) | | 方向パッド | POV1 ボタン13/14/15/16 ボタン14/15/16/17 *設定にて指定
| POV(DPAD) Button13(UP)/Button14(RIGHT)/Button15(DOWN)/Button16(LEFT) Button14(UP)/Button15(RIGHT)/Button16(DOWN)/Button17(LEFT) | | Aボタン | ボタン1 | Button1(A) | | Bボタン | ボタン2 | Button2(B) | | Xボタン | ボタン3 | Button3(X) | | Yボタン | ボタン4 | Button4(Y) | | LBボタン | ボタン5 | Button5(LB) | | RBボタン | ボタン6 | Button6(RB) | | BACKボタン | ボタン7 | Button7(BACK) | | STARTボタン | ボタン8 | Button8(START) | | 右スティック押し込み | ボタン9 | Button9(LSB) | | 左スティック押し込み | ボタン10 | Button10(RSB) | | ガイドボタン | ボタン11 ボタン13 ボタン17 *設定にて指定
| Button11(Guide) Button13(Guide) Button17(Guide) |
キーコンフィグでDirectInputのオブジェクト名が表示されるゲームでは、表のオブジェクト名が表示されます。
DirectInputのフォースフィードバック機能は、元々ハンドルなどの反力等を再現するもので、単純な振動機能ではありません。 フォースフィードバックエミュレーション機能では、フォースフィードバックの以下の要素を元に、コントローラを振動させています。
これらのフォースを強さを合計し、コントローラの左右振動モータに振り分けて振動をさせています。
DirectInput出力機能では、XInput Plusの他の設定(キー割り当てなど)が適用された最終的なXInput出力をDirectInputに変換して出力します。 キー割り当て設定にて方向パッドで左スティックを操作するように指定していた場合、DirectInputでは方向パッドの入力がX軸/Y軸として出力されることになります。
|
|