XInput Plus:DirectInput出力機能について
はじめに
XBOX360コントローラはXInput形式・DirectInput形式の両方に対応しています。残念ながらDirectInput形式で使用する際にはいくつかの問題を持っています。(詳しくはこちら)
LT/RTが同時に使えない
振動機能に対応していない
XInput PlusのDirectInput出力機能では、XInput出力をDirectInput出力に変換して出力することでこの問題を解決します。
*現状DirectInput出力機能が対応しているのは、DirectInput5以降を使用しているアプリケーションのみです。
*DirectInputのすべての機能に対応していないため、うまく動作しないアプリケーションもあります。
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出力に変換されます。
キーコンフィグでDirectInputのオブジェクト名が表示されるゲームでは、表のオブジェクト名が表示されます。
フォースフィードバックエミュレーションについて
DirectInputのフォースフィードバック機能は、元々ハンドルなどの反力等を再現するもので、単純な振動機能ではありません。
フォースフィードバックエミュレーション機能では、フォースフィードバックの以下の要素を元に、コントローラを振動させています。
コンスタントフォース
ランプフォース
周期フォース
これらのフォースを強さを合計し、コントローラの左右振動モータに振り分けて振動をさせています。
XInput Plusの他の設定との関連
DirectInput出力機能では、XInput Plusの他の設定(キー割り当てなど)が適用された最終的なXInput出力をDirectInputに変換して出力します。
キー割り当て設定にて方向パッドで左スティックを操作するように指定していた場合、DirectInputでは方向パッドの入力がX軸/Y軸として出力されることになります。