借り初めのひみつきち

仮ブログです。

DirectInput と XInput

USB ゲームパッドは大きく分けると DirectInput 形式と XInput 形式の2種類存在しています。
いったい何が違うのでしょうか?

DirectInput

DirectInput 形式の名前の由来は Windows APIDirectInput からきていて、規格としては USB HID (03 00 00) をベースにしています。
XInput 形式よりはるか昔からあるので、古いゲームパッドは基本的に DirectInput 形式に対応しています。

HID 規格というのはユーザーの操作をスイッチやセンサーを通じてコンピューターにデータ入力するあらゆるデバイスを統括しようとしたとても壮大な規格で、 USB キーボードやマウスも USB HID 規格の一部です。

HID 規格のゲームパッドはどのボタンをどこにどう配置するのか決まっていないのでハードウェアを設計する人が自由に決めることができます。
逆に、どのボタンがどこに配置されているのかという情報はソフトウェア側からわかりません。
そのため DirectInput 形式のゲームパッドに対応するゲームではボタンの割り当てをユーザーが設定できるものが多いです。

XInput

XInput 形式は比較的最近登場した新しい形式で、規格としてはベンダー定義の独自プロトコル (FF 5D 01〜04) となっています。

XBox で使われているゲームパッドがベースになっているのでボタンの個数や配置などがある程度決まっています。
Windows で扱う場合はあらかじめ要件が決まっているので扱いやすいのだと思います。

仕様が一般に公開されておらず、第三者によるプロトコル解析によるとバリエーションが数種類あるようです。
バリエーションの判別方法や今後別のバリエーションが増える可能性を考えると Windows 以外では正常に動作する保証がありません。