DirectInput デバイスと XUSB デバイス

WindowsのXUSB用ドライバは、XINPUT DLLのカーネルモードインターフェイスを実装します。 共通のコントローラー デバイスで DirectInput API を使用するレガシ タイトルに優れたエクスペリエンスを提供するために、ドライバーは DirectInput によって取得されるヒューマン インターフェイス デバイス (HID) クラス インターフェイスもエクスポートします。 Microsoft は、元の XINPUT バージョンの一連のゲーム アプリケーションでの一般的な動作に基づいて XUSB から HID へのマッピングを選択し、新しいサブタイプのマッピングを更新しました。 このトピックでは、 マッピングについて説明します。

ヒューマン インターフェイス デバイス (HID)

HID 標準は、入力デバイスのプロトコルを一般化するために Microsoft によってもともと提案されたユニバーサル シリアル バス (USB) 委員会の標準です。 これはバイトコード記述言語で構成され、ゲームパッド、マウス、ジョイスティック、スロットルおよびラダー コントロール、および多軸コントローラーを表現できます。 この標準は非常に一般化されているため、任意のデバイスからの入力を消費するソフトウェアを記述するのが難しい場合があります。 そのため、ゲーム中心の DirectInput API では、ハードウェア メーカーがドライバーを通じてサポートすることを奨励するために、特定のサブマッピングの型を開発しました。

重要

RAWInput API を使用して HID 入力デバイスにアクセスし、低レベルの HID API を使用して入力レポートを処理することもできますが、振動フィードバックは DirectInput と同じようには機能しません。

マッピング

XUSB ドライバーは、XINPUT と DirectInput の両方の使用法をサポートするために、デバイスの XUSB クラス インターフェイスと HID クラス インターフェイスの両方を実装します。 このマッピングは、XUSB サブタイプ情報に基づいています。 ドライバーは、マッピングの 4 つの異なるグループを実装します。

XUSB サブタイプ マッピング
XINPUT_DEVSUBTYPE_GAMEPAD (サブタイプ 1) Gamepad
XINPUT_DEVSUBTYPE_WHEEL (サブタイプ 2) レーシング ホイール
XINPUT_DEVSUBTYPE_ARCADE_STICK (サブタイプ 3) アーケード スティック/アーケード パッド
XINPUT_DEVSUBTYPE_FLIGHT_STICK (サブタイプ 4) フライト スティック
XINPUT_DEVSUBTYPE_DANCE_PAD (サブタイプ 5) 新しいサブタイプの既定値
XINPUT_DEVSUBTYPE_GUITAR (サブタイプ 6) ギター
XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE (サブタイプ 7)
XINPUT_DEVSUBTYPE_DRUM_KIT (サブタイプ 8)
XINPUT_DEVSUBTYPE_GUITAR_BASS (サブタイプ 11)
XINPUT_DEVSUBTYPE_ARCADE_PAD (サブタイプ 19)

Note

次の HID マッピングは静的です。 つまり、デバイス機能レポートで特定のボタンまたは軸がサポートされていないことが報告された場合でも、マッピングには引き続きそれが含まれますが、常にオフ状態または中央の値が報告されます。

Gamepad

これは既定のマッピングであり、標準のゲームパッドを中心に設計されており、ゲームパッド HID の使用法の種類として公開されています。

コントロール HID 使用法の名前 [使用法] ページ 使用 ID
左スティック X、Y 0x01 0x30、0x31
右スティック Rx、Ry 0x01 0x33、0x34
左トリガー + 右トリガー Z* 0x01 0x32
方向パッド上、下、左、右 ハット スイッチ 0x01 0x39
A ボタン 1 0x09 0x01
B ボタン 2 0x09 0x02
x ボタン 3 0x09 0x03
Y ボタン 4 0x09 0x04
LB (左バンパー) ボタン 5 0x09 0x05
RB (右バンパー) ボタン 6 0x09 0x06
BACK ボタン 7 0x09 0x07
START ボタン 8 0x09 0x08
LSB (左スティック ボタン) ボタン 9 0x09 0x09
RSB (右スティック ボタン) ボタン 10 0x09 0x0A

Note

(*): これは、回転のためにほとんどのタイトルで期待される中心動作を Z が示すよう組み合わされています。これは、DirectInput と HID を使用して、考えられるすべてのトリガーの組み合わせ値を表示できないことを意味します。

アーケード スティック/アーケード パッド

これは、アーケード スティック コントローラーを中心に設計されたマッピングであり、ゲームパッド HID の使用法の種類として公開されています。 アーケード パッドはアーケード スティックに非常に似ていますが、より小さなフォームファクター内にあります。 これらの設計は、アナログの左トリガーと右トリガーを、最小および最大軸値を報告するデジタル ボタンに置き換えます。

コントロール HID 使用法の名前 [使用法] ページ 使用 ID
方向パッド上、下、左、右 ハット スイッチ 0x01 0x39
A ボタン 1 0x09 0x01
B ボタン 2 0x09 0x02
x ボタン 3 0x09 0x03
Y ボタン 4 0x09 0x04
LB (左バンパー) ボタン 5 0x09 0x05
RB (右バンパー) ボタン 6 0x09 0x06
BACK ボタン 7 0x09 0x07
START ボタン 8 0x09 0x08
左トリガー ボタン 9 0x09 0x09
右トリガー ボタン 10 0x09 0x0A

これらのデバイスは、追加のコントロールをサポートする場合とサポートしない場合がありますが、HID マッピングによって公開されません: 左スティック、右スティック、LSB (左スティック ボタン)、RSB (右スティック ボタン)。

レーシング ホイール

このマッピングはレーシング ホイールを中心に設計されており、ゲームパッド HID の使用法の種類として公開されています。

コントロール HID 使用法の名前 [使用法] ページ 使用 ID
ホイール (左スティック X) x 0x01 0x30
アクセラレータ ペダル (右トリガー) + ブレーキ ペダル (左トリガー) Z* 0x01 0x32
方向パッド上、下、左、右 ハット スイッチ 0x01 0x39
A ボタン 1 0x09 0x01
B ボタン 2 0x09 0x02
x ボタン 3 0x09 0x03
Y ボタン 4 0x09 0x04
LB (左バンパー) ボタン 5 0x09 0x05
RB (右バンパー) ボタン 6 0x09 0x06
LSB (左スティック ボタン) ボタン 7 0x09 0x07
RSB (右スティック ボタン) ボタン 8 0x09 0x08
BACK ボタン 9 0x09 0x09
START ボタン 10 0x09 0x0A

Note

(*): これは、ブレーキ コントロールとアクセラレータ コントロールのためにほとんどのタイトルで期待される中心動作を Z が示すよう組み合わされています。これは、DirectInput を使用して、考えられるすべてのペダルの組み合わせ値を表示できないことを意味します。

フライト スティック

このマッピングはフライト スティックを中心に設計されており、ジョイスティック HID の使用法タイプとして公開されています。

コントロール 使用の名前 [使用法] ページ 使用 ID
フライト スティック (左スティック) X、Y 0x01 0x30、0x31
POVハット (右スティック) Rx、Ry 0x01 0x33、0x34
スロットル (右トリガー) Z 0x01 0x32
ラダー (左トリガー) Rz 0x01 0x35
方向パッド上、下、左、右 ハット スイッチ 0x01 0x39
プライマリ武器 (A) ボタン 1 0x09 0x01
セカンダリ武器 (B) ボタン 2 0x09 0x02
x ボタン 3 0x09 0x03
Y ボタン 4 0x09 0x04
LB (左バンパー) ボタン 5 0x09 0x05
RB (右バンパー) ボタン 6 0x09 0x06
BACK ボタン 7 0x09 0x07
START ボタン 8 0x09 0x08
LSB (左スティック ボタン) ボタン 9 0x09 0x09
RSB (右スティック ボタン) ボタン 10 0x09 0x0A

Note

これは、最終的なフライト スティックのデザインに基づいています。 これは初期のフライト スティック定義とは異なるため、多くのデバイスには、古いモデルと新しいモデルをサポートするモード スイッチがあります。 このマッピングは、新しいモデルを前提としています。