ゲーム コントローラーのレジストリ データ

注意

このトピックは、Windows 10 互換のゲーム コントローラーの製造元向けです。開発者の大部分には適用されません。

Windows.Gaming.Input 名前空間を使うと、独立系ハードウェア ベンダー (IHV) は、PC のレジストリにデータを追加して、デバイスが GamepadsRacingWheelsArcadeSticksFlightSticksUINavigationControllers として表示されるようにできます。 互換性のあるコントローラー用にこのデータを追加することを、すべての IHV に推奨します。 これにより、すべての UWP ゲーム (および WinRT API を使用するすべてのデスクトップ ゲーム) でゲーム コントローラーをサポートできます。

マッピング スキーム

デバイスのマッピングとして、ベンダー ID (VID) VVVV、製品 ID (PID) PPPP、使用ページ UUUU、使用 ID XXXX が、レジストリのこの場所から読み込まれます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\VVVVPPPPUUUUXXXX

次の表は、デバイスのルートの場所で予期される値を示します。

Name Type 必須 Info
無効 DWORD No

この特定のデバイスを無効にする必要があることを示します。

  • 0: デバイスは無効ではありません。
  • 1: デバイスは無効です。
説明 REG_SZNo デバイスの簡単な説明です。

デバイスのインストーラーが (セットアップ、または INF ファイルによって) このデータをレジストリに追加する必要があります。

デバイスのルートの場所の下のサブキーは、次のセクションで詳しく説明します。

ゲームパッド

次の表は Gamepad サブキーの下の必須およびオプションのサブキーを示します。

サブキー 必須 Info
メニュー はい ボタンのマッピング」をご覧ください
表示 はい
A はい
B はい
X はい
Y はい
LeftShoulder はい
RightShoulder はい
LeftThumbstickButton はい
RightThumbstickButton はい
DPadUp はい
DPadDown はい
DPadLeft はい
DPadRight はい
Paddle1 No
Paddle2 No
Paddle3 No
Paddle4 No
LeftTrigger はい 軸のマッピング」をご覧ください
RightTrigger はい
LeftThumbstickX はい
LeftThumbstickY はい
RightThumbstickX はい
RightThumbstickY はい

注意

サポートされる Gamepad として、ゲーム コントローラーを追加する場合には、サポートされる UINavigationController としても、ゲーム コントローラーを追加することを強く推奨します。

RacingWheel

次の表は RacingWheel サブキーの下の必須およびオプションのサブキーを示します。

サブキー 必須 Info
PreviousGear はい ボタンのマッピング」をご覧ください
NextGear はい
DPadUp No
DPadDown No
DPadLeft No
DPadRight No
ボタン 1 No
Button2 No
Button3 No
Button4 No
Button5 No
Button6 No
Button7 No
Button8 No
Button9 No
Button10 No
Button11 No
Button12 No
Button13 No
Button14 No
Button15 No
Button16 No
FirstGear No
SecondGear No
ThirdGear No
FourthGear No
FifthGear No
SixthGear No
SeventhGear No
ReverseGear No
Wheel はい 軸のマッピング」をご覧ください
スロットル はい
Brake はい
Clutch No
Handbrake No
MaxWheelAngle はい プロパティ マッピング」をご覧ください

ArcadeStick

次の表は ArcadeStick サブキーの下の必須およびオプションのサブキーを示します。

サブキー 必須 Info
Action1 はい ボタンのマッピング」をご覧ください
Action2 はい
Action3 はい
Action4 はい
Action5 はい
Action6 はい
Special1 はい
Special2 はい
StickUp はい
StickDown はい
StickLeft はい
StickRight はい

FlightStick

次の表は FlightStick サブキーの下の必須およびオプションのサブキーを示します。

サブキー 必須 Info
FirePrimary はい ボタンのマッピング」をご覧ください
FireSecondary はい
Roll はい 軸のマッピング」をご覧ください
[Pitch] (傾斜) はい
Yaw はい
スロットル はい
HatSwitch はい スイッチのマッピング」をご覧ください

UINavigation

次の表は UINavigation サブキーの下の必須およびオプションのサブキーを示します。

サブキー 必須 Info
メニュー はい ボタンのマッピング」をご覧ください
表示 はい
承諾 はい
キャンセル はい
PrimaryUp はい
PrimaryDown はい
PrimaryLeft はい
PrimaryRight はい
Context1 No
Context2 No
Context3 No
Context4 No
PageUp No
PageDown No
PageLeft No
PageRight No
ScrollUp No
ScrollDown No
ScrollLeft No
ScrollRight No
SecondaryUp No
SecondaryDown No
SecondaryLeft No
SecondaryRight No

UI ナビゲーション コントローラーと上記のコマンドについて詳しくは、「UI ナビゲーション コントローラー」をご覧ください。

[キー]

次のセクションでは、GamepadRacingWheelArcadeStickFlightStickUINavigation キーの下のサブキーのそれぞれのコンテンツについて説明します。

ボタンのマッピング

次の表は、ボタンのマッピングに必要な値を示します。 たとえば、ゲーム コントローラーの DPadUp キーを押すと、DPadUp のマッピングには ButtonIndex 値が含まれます (SourceButton です)。 DPadUp がスイッチの位置からマッピングされる必要がある場合は、DPadUp マッピングには SwitchIndexSwitchPosition の値が含まれます (SourceSwitch です)。

ソース 値の名前 値の型 必須 値の情報
Button ButtonIndex DWORD はい RawGameController ボタンの配列のインデックス。
AxisIndex DWORD はい RawGameController 軸の配列のインデックス。
Invert DWORD No ThresholdPercentDebouncePercent 要素を適用する前に、軸の値を反転する必要があることを示します。
ThresholdPercent DWORD はい マッピングされたボタンの値の (押した状態と離した状態の間の) 遷移の軸の位置を示します。 有効な値の範囲は 0 から 100 です。 軸の値がこの値以上の場合、ボタンが押されたと見なされます。
DebouncePercent DWORD はい

ThresholdPercent 値の周囲のウィンドウのサイズを定義します。報告されたボタンの状態をデバウンスするために使用されます。 有効な値の範囲は 0 から 100 です。 ボタンの状態の遷移は、軸の値がデバウンス ウィンドウの上限または下限を超えたときにのみ発生します。 たとえば、ThresholdPercent が 50 で、DebouncePercent が 10 の場合には、デバウンスの下限と上限は、全範囲の軸の値で 45% と 55% となります。 軸の値が 55% 以上に達すると、ボタンは押された状態に遷移し、軸の値が 45% 以下に達すると、ボタンはリリースされた状態に戻ります。

計算されるデバウンス ウィンドウの境界は 0% ~ 100% の間でクランプされます。 たとえば、しきい値が 5% で、デバウンス ウィンドウが 20% の場合、デバウンス ウィンドウの境界は 0% と 15% となります。 しきい値とデバウンスの値にかかわらず、軸の値が 0% ~ 100% にあるボタンの状態は常に、押されるか、または離されるかとして報告されます。

Switch SwitchIndex DWORD はい RawGameController スイッチの配列のインデックス。
SwitchPosition REG_SZ はい

マッピングされたボタンが押されたことを報告するスイッチの位置を示します。 位置の値には、次の文字列のいずれかを指定できます。

  • 上へ
  • UpRight
  • Right
  • DownRight
  • [下へ]
  • DownLeft
  • Left
  • UpLeft
IncludeAdjacent DWORD No 隣接するスイッチの位置も、マッピングされたボタンが押されたことを報告することを示します。

軸のマッピング

次の表は、軸のマッピングに必要な値を示します。

ソース 値の名前 値の型 必須 値の情報
Button MaxValueButtonIndex DWORD はい

マッピングされた一方向の軸の値に変換される、RawGameController ボタンの配列のインデックス。

MaxButton AxisValue
FALSE 0.0
TRUE 1.0
MinValueButtonIndex DWORD No

マッピングされた軸が双方向であることを示します。 MaxButtonMinButton の値は結合され、次に示すように 1 つの双方向の軸となります。

MinButton MaxButton AxisValue
FALSE FALSE 0.5
FALSE TRUE 1.0
TRUE FALSE 0.0
TRUE TRUE 0.5
AxisIndex DWORD はい RawGameController 軸の配列のインデックス。
Invert DWORD No マッピングされた軸の値を返す前に反転するかどうかを示します。
Switch SwitchIndex DWORD はい RawGameController スイッチの配列のインデックス。
MaxValueSwitchPosition REG_SZ はい

次の文字列のいずれかです。

  • 上へ
  • UpRight
  • Right
  • DownRight
  • [下へ]
  • DownLeft
  • Left
  • UpLeft

マッピングされた軸の値が 1.0 として報告されるスイッチの位置を示します。 反対方向の MaxValueSwitchPosition は 0.0 と見なされます。 たとえば、MaxValueSwitchPositionUp の場合、軸の値は次を意味します。

スイッチの位置 AxisValue
上へ 1.0
Center 0.5
[下へ] 0.0
IncludeAdjacent DWORD No

隣接するスイッチの位置も、マッピングされた軸が 1.0 を報告することを示します。 上記の例では、IncludeAdjacent が設定されている場合、軸は次のようになります。

スイッチの位置 AxisValue
上へ 1.0
UpRight 1.0
UpLeft 1.0
Center 0.5
[下へ] 0.0
DownRight 0.0
DownLeft 0.0

スイッチのマッピング

スイッチの位置は、RawGameController のボタンの配列のボタンのセットから、またはスイッチの配列のインデックスからマッピングされます。 軸からスイッチの位置をマッピングすることはできません。

ソース 値の名前 値の型 値の情報
Button ButtonCount DWORD 2、4、または 8
SwitchKind REG_SZ TwoWayFourWay、またはEightWay
UpButtonIndex DWORD *ButtonIndex の値」をご覧ください
DownButtonIndex DWORD
LeftButtonIndex DWORD
RightButtonIndex DWORD
UpRightButtonIndex DWORD
DownRightButtonIndex DWORD
DownLeftButtonIndex DWORD
UpLeftButtonIndex DWORD
SwitchKind REG_SZ TwoWayFourWay、またはEightWay
XAxisIndex DWORD YAxisIndex は常に存在します。 XAxisIndex は、SwitchKindFourWay または EightWay の場合のみ存在します。
YAxisIndex DWORD
XDeadZonePercent DWORD 軸の中央位置の周囲のデッド ゾーンのサイズを示します。
YDeadZonePercent DWORD
XDebouncePercent DWORD デッド ゾーンの上限と下限の周囲のウィンドウのサイズを定義します。これは報告されたスイッチの状態のデバウンスに使用されます。
YDebouncePercent DWORD
XInvert DWORD デッド ゾーンとデバウンス ウィンドウの計算を適用する前に、対応する軸の値を反転する必要があることを示します。
YInvert DWORD
Switch SwitchIndex DWORD RawGameController スイッチの配列のインデックス。
Invert DWORD スイッチが位置を、既定の時計回りの順序ではなく、反時計回りの順序で報告することを示します。
PositionBias DWORD

位置の報告の開始点を指定した量だけ移動します。 PositionBias は常に元の開始点から時計回りにカウントされます。値の順序が反転される前に適用されます。

たとえば、DownRightで始まる位置を反時計回りの順序で報告するスイッチは、Invert フラグを設定して、PositionBias を 5 と設定することによって正規化されます。

位置 報告される値 PositionBias と Invert フラグの設定後
DownRight 0 3
Right 1 2
UpRight 2 1
上へ 3 0
UpLeft 4 7
Left 5 6
DownLeft 6 5
[下へ] 7 4

*ButtonIndex の値

RawGameController のボタンの配列への *ButtonIndex の値のインデックス:

ButtonCount SwitchKind RequiredMappings
2 TwoWay
  • UpButtonIndex
  • DownButtonIndex
4 FourWay
  • UpButtonIndex
  • DownButtonIndex
  • LeftButtonIndex
  • RightButtonIndex
4 EightWay
  • UpButtonIndex
  • DownButtonIndex
  • LeftButtonIndex
  • RightButtonIndex
8 EightWay
  • UpButtonIndex
  • DownButtonIndex
  • LeftButtonIndex
  • RightButtonIndex
  • UpRightButtonIndex
  • DownRightButtonIndex
  • DownLeftButtonIndex
  • UpLeftButtonIndex

プロパティ マッピング

これらは、別のマッピングの種類の、静的マッピング値です。

マッピング 値の名前 値の型 値の情報
RacingWheel MaxWheelAngle DWORD ホイールでサポートされている、単一方向の物理ホイールの最大角度を示します。 たとえば、-90 度から 90 度まで回転できるホイールでは、90 を指定します。

ラベル

ラベルは、デバイス ルートの下の Labels キーの下に存在する必要があります。 Labels は 3 つのサブキー: ButtonsAxesSwitches を持つことができます。

ボタンのラベル

Buttons キーは、RawGameController のボタンの配列の各ボタンの位置を文字列にマッピングします。 各文字列は、対応する GameControllerButtonLabel 列挙値に内部的にマッピングされます。 たとえば、ゲームパッドに 10 個のボタンと、RawGameController がボタンを解析してボタンを表示する順序がある場合、レポートは次のようになります。

Menu,               // Index 0
View,               // Index 1
LeftStickButton,    // Index 2
RightStickButton,   // Index 3
LetterA,            // Index 4
LetterB,            // Index 5
LetterX,            // Index 6
LetterY,            // Index 7
LeftBumper,         // Index 8
RightBumper         // Index 9

ラベルは Buttons キーの下にこの順序で表示されます。

名前 値 (種類: REG_SZ)
Button0 メニュー
ボタン 1 表示
Button2 LeftStickButton
Button3 RightStickButton
Button4 LetterA
Button5 LetterB
Button6 LetterX
Button7 LetterY
Button8 LeftBumper
Button9 RightBumper

軸ラベル

Axes キーは、RawGameController の軸の配列の各軸の位置を、ボタンのラベルのように、GameControllerButtonLabel Enum に一覧表示されたラベルの 1 つにマッピングします。 「ボタンのラベル」の例をご覧ください。

スイッチのラベル

Switches キーはスイッチの位置をラベルにマッピングします。 値は次の名前付け規則に従います: インデックスが RawGameController のスイッチの配列の xであるスイッチの位置にラベルを付けるには、次の値を Switches サブキーの下に追加します。

  • SwitchxUp
  • SwitchxUpRight
  • SwitchxRight
  • SwitchxDownRight
  • SwitchxDown
  • SwitchxDownLeft
  • SwitchxUpLeft
  • SwitchxLeft

次の表は、4 方向スイッチの位置が RawGameController でインデックス 0 を示しているスイッチにラベルを付ける例を示しています。

名前 値 (種類: REG_SZ)
Switch0Up XboxUp
Switch0Right XboxRight
Switch0Down XboxDown
Switch0Left XboxLeft

レジストリ ファイルの例

これらのマッピングと値のすべての例を示すため、汎用の RacingWheel のレジストリ ファイルを示す次の例をご覧ください。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004]
"Description" = "Example Wheel Device"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\Labels\Buttons]
"Button0" = "LetterA"
"Button1" = "LetterB"
"Button2" = "LetterX"
"Button3" = "LetterY"
"Button6" = "Menu"
"Button7" = "View"
"Button8" = "RightStickButton"
"Button9" = "LeftStickButton"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\Labels\Switches]
"Switch0Down" = "Down"
"Switch0Left" = "Left"
"Switch0Right" = "Right"
"Switch0Up" = "Up"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel]
"MaxWheelAngle" = dword:000001c2

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Brake]
"AxisIndex" = dword:00000002
"Invert" = dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button1]
"ButtonIndex" = dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button2]
"ButtonIndex" = dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button3]
"ButtonIndex" = dword:00000002

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button4]
"ButtonIndex" = dword:00000003

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button5]
"ButtonIndex" = dword:00000009

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button6]
"ButtonIndex" = dword:00000008

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button7]
"ButtonIndex" = dword:00000007

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Button8]
"ButtonIndex" = dword:00000006

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Clutch]
"AxisIndex" = dword:00000003
"Invert" = dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\DPadDown]
"IncludeAdjacent" = dword:00000001
"SwitchIndex" = dword:00000000
"SwitchPosition" = "Down"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\DPadLeft]
"IncludeAdjacent" = dword:00000001
"SwitchIndex" = dword:00000000
"SwitchPosition" = "Left"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\DPadRight]
"IncludeAdjacent" = dword:00000001
"SwitchIndex" = dword:00000000
"SwitchPosition" = "Right"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\DPadUp]
"IncludeAdjacent" = dword:00000001
"SwitchIndex" = dword:00000000
"SwitchPosition" = "Up"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\FifthGear]
"ButtonIndex" = dword:00000010

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\FirstGear]
"ButtonIndex" = dword:0000000c

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\FourthGear]
"ButtonIndex" = dword:0000000f

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\NextGear]
"ButtonIndex" = dword:00000004

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\PreviousGear]
"ButtonIndex" = dword:00000005

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\ReverseGear]
"ButtonIndex" = dword:0000000b

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\SecondGear]
"ButtonIndex" = dword:0000000d

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\SixthGear]
"ButtonIndex" = dword:00000011

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\ThirdGear]
"ButtonIndex" = dword:0000000e

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Throttle]
"AxisIndex" = dword:00000001
"Invert" = dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\1234567800010004\RacingWheel\Wheel]
"AxisIndex" = dword:00000000
"Invert" = dword:00000000

こちらもご覧ください