API は
GameInput のマウスとキーボードデバイスを別途定義します。これらのデバイスは Windows で特別な意味を持ち、他所で扱われています。詳細については、Developing keyboard and mouse HID client drivers を参照してください。GameInput は、コントローラー、ゲームパッド、フライトスティック、アーケードスティック、レーシングホイール、UI ナビゲーションコントローラーなど、多種多様なデバイスを表します。各デバイス種別には、そのデバイスとやり取りするために使用できる独自のインターフェイスがあります。ハードウェアデバイスがこれらのインターフェイスのいずれかの下に表示されるかどうかは、そのデバイスがゲーミング入力コントローラーの既存の Windows ドライバープロトコルの 1 つに準拠しているか、または汎用 HID デバイスであるかによります。
XInput 互換デバイスの場合、GameInput API はこれらのデバイスをコントローラー、ゲームパッド、および UI ナビゲーションコントローラーとして列挙します。これらのデバイスのマッピングはプロトコルによって厳密に定められており、プロトコルは追加のボタンをサポートしません。これらのデバイスは、デュアルまたはクアッドランブル効果もサポートします。これらの効果は、左右のモーターと左右のトリガーに対応しています。XInput には 3 つの主要な有線プロトコルがあります: XUSB、XInputHID、および Game Input Protocol (GIP) です。コンソールでは、システムは GIP デバイスのみをサポートします。これらすべてのプロトコルに関する詳細は XInput API Documentation for Hardware Devices にあります。PC では、デバイスは XInputHID ドライバーを介してインターフェイスする必要があります。ゲームパッド以外の他の Game Input Protocol (GIP) デバイスについては、GameInput API は接続時に提示されるメタデータに基づいて、これらのデバイスをフライトスティック、アーケードスティック、レーシングホイール、または UI ナビゲーションコントローラーとして列挙します。この動作はコンソールと PC の両方に当てはまります。詳細については、Game Input Protocol (GIP) documentation を参照してください。
HID デバイスの場合、GameInputはデバイスがオペレーティングシステムにどのように提示されるかについて、より高い柔軟性を提供します。この柔軟性は、HID デバイスが標準のゲームコントローラープロトコルが定義するものを超える幅広い機能を公開できる可能性があることを意味します。たとえば、レーシングホイールデバイスは、GameInput にゲームパッドおよびフライトスティックとして提示される可能性があります。デバイスで利用可能なボタン、スイッチ、および軸の完全なリストは、デバイスの HID レポート記述子によって定義され、GetControllerButtonState、GetControllerButtonCount、および軸やスイッチを取得するための同種の呼び出しから IGameInputReading インターフェイスを介して公開されます。これらの機能をゲームパッドやレーシングホイールなどの他のインターフェイスにマッピングするために、GameInput は Windows レジストリ内の一連のマッピングを使用します。Windows.Gaming.Input (WGI) API はこれらのマッピングを共有します。詳細については、Registry Data for Game Controllers を参照してください。独立系ハードウェアベンダー (IHV) は、ドライバーインストールの一部として HKLM\SYSTEM\CurrentControlSet\Control\GameInput\Devices パスに自身のレジストリマッピングを追加できます。GameInput API は、ゲームとともに再配布する API の今後のリリースで、一般的なデバイス向けの既定のマッピングを定期的に追加します。IHV のマッピングは既定のマッピングより優先されます。API にパッケージされているマッピングは HKLM\SOFTWARE\Microsoft\GameInputRedist にあります。
