Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dieses Thema richtet sich an Hersteller von Windows 10-kompatiblen Gamecontrollern und gilt nicht für die Mehrzahl der Entwickler.
Der Windows.Gaming.Input-Namespace ermöglicht unabhängigen Hardwareanbietern (IHVs) das Hinzufügen von Daten zur Registrierung des PCs, sodass ihre Geräte je nach Bedarf als Gamepads, RacingWheels, ArcadeSticks, FlightSticks und UINavigationControllers angezeigt werden können. Alle IHVs sollten diese Daten für ihre kompatiblen Controller hinzufügen. Dadurch können alle UWP-Spiele (und alle Desktopspiele, die die WinRT-API verwenden) Ihren Gamecontroller unterstützen.
Zuordnungsschema
Zuordnungen für ein Gerät mit Anbieter-ID (VID) VVVV, Produkt-ID (PID) PPPP, Nutzungsseite UUUU und Nutzungs-ID XXXX werden von diesem Speicherort in der Registrierung gelesen:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GameInput\Devices\VVVVPPPPUUUUXXXX
In der folgenden Tabelle werden die erwarteten Werte unter dem Stammspeicherort des Geräts erläutert:
Name | type | Erforderlich? | Info |
---|---|---|---|
Disabled | DWORD | No |
Gibt an, dass dieses bestimmte Gerät deaktiviert werden soll.
|
Beschreibung | REG_SZ | No | Eine kurze Beschreibung des Geräts. |
Ihr Geräteinstallationsprogramm sollte diese Daten zur Registrierung hinzufügen (entweder über Setup oder eine INF-Datei).
Unterschlüssel unter dem Gerätestammspeicherort werden in den folgenden Abschnitten beschrieben.
Gamepad
In der folgenden Tabelle sind die erforderlichen und optionalen Unterschlüssel unter dem Gamepad-Unterschlüssel aufgeführt:
Unterschlüssel | Erforderlich? | Info |
---|---|---|
Menü | Ja | Siehe Schaltflächenzuordnung |
Ansicht | Ja | |
A | Ja | |
b | Ja | |
X | Ja | |
J | Ja | |
LeftShoulder | Ja | |
RightShoulder | Ja | |
LeftThumbstickButton | Ja | |
RightThumbstickButton | Ja | |
DPadUp | Ja | |
DPadDown | Ja | |
DPadLeft | Ja | |
DPadRight | Ja | |
Paddel1 | No | |
Paddel2 | No | |
Paddel3 | No | |
Paddel4 | No | |
LeftTrigger | Ja | Siehe Achsenzuordnung |
RightTrigger | Ja | |
LeftThumbstickX | Ja | |
LeftThumbstickY | Ja | |
RightThumbstickX | Ja | |
RightThumbstickY | Ja |
Hinweis
Wenn Sie Ihren Gamecontroller als unterstütztes Gamepad hinzufügen, wird dringend empfohlen, ihn auch als unterstützte UINavigationController hinzuzufügen.
Rennrad
In der folgenden Tabelle sind die erforderlichen und optionalen Unterschlüssel unter dem Unterschlüssel "RacingWheel " aufgeführt:
Unterschlüssel | Erforderlich? | Info |
---|---|---|
PreviousGear | Ja | Siehe Schaltflächenzuordnung |
NextGear | Ja | |
DPadUp | No | |
DPadDown | No | |
DPadLeft | No | |
DPadRight | No | |
Schaltfläche1 | No | |
Schaltfläche2 | No | |
Button3 | No | |
Button4 | No | |
Schaltfläche5 | No | |
Schaltfläche6 | No | |
Schaltfläche7 | No | |
Schaltfläche8 | No | |
Schaltfläche9 | No | |
Schaltfläche10 | No | |
Schaltfläche11 | No | |
Schaltfläche12 | No | |
Schaltfläche13 | No | |
Schaltfläche14 | No | |
Schaltfläche15 | No | |
Schaltfläche16 | No | |
FirstGear | No | |
SecondGear | No | |
ThirdGear | No | |
FourthGear | No | |
FifthGear | No | |
Sechste Anlage | No | |
Siebtes Anlagen | No | |
ReverseGear | No | |
Wheel | Ja | Siehe Achsenzuordnung |
Drosselung | Ja | |
Bremse | Ja | |
Kupplung | No | |
Handbremse | No | |
MaxWheelAngle | Ja | Eigenschaftenzuordnung anzeigen |
ArcadeStick
In der folgenden Tabelle sind die erforderlichen und optionalen Unterschlüssel unter dem ArcadeStick-Unterschlüssel aufgeführt:
Unterschlüssel | Erforderlich? | Info |
---|---|---|
Aktion 1 | Ja | Siehe Schaltflächenzuordnung |
Aktion2 | Ja | |
Aktion3 | Ja | |
Aktion4 | Ja | |
Aktion5 | Ja | |
Aktion6 | Ja | |
Special1 | Ja | |
Special2 | Ja | |
StickUp | Ja | |
StickDown | Ja | |
StickLeft | Ja | |
StickRight | Ja |
FlightStick
In der folgenden Tabelle sind die erforderlichen und optionalen Unterschlüssel unter dem FlightStick-Unterschlüssel aufgeführt:
Unterschlüssel | Erforderlich? | Info |
---|---|---|
FirePrimary | Ja | Siehe Schaltflächenzuordnung |
FireSecondary | Ja | |
Rollen | Ja | Siehe Achsenzuordnung |
Neigung | Ja | |
Gieren | Ja | |
Drosselung | Ja | |
HatSwitch | Ja | Siehe Switch-Zuordnung |
UINavigation
In der folgenden Tabelle sind die erforderlichen und optionalen Unterschlüssel unter uiNavigation-Unterschlüssel aufgeführt:
Unterschlüssel | Erforderlich? | Info |
---|---|---|
Menü | Ja | Siehe Schaltflächenzuordnung |
Ansicht | Ja | |
Accept | Ja | |
Abbrechen | Ja | |
PrimaryUp | Ja | |
PrimaryDown | Ja | |
PrimaryLeft | Ja | |
PrimaryRight | Ja | |
Kontext1 | No | |
Context2 | No | |
Context3 | No | |
Context4 | No | |
BildAuf | No | |
BildAb | No | |
PageLeft | No | |
PageRight | No | |
ScrollUp | No | |
ScrollDown | No | |
ScrollLeft | No | |
ScrollRight | No | |
SecondaryUp | No | |
SecondaryDown | No | |
SecondaryLeft | No | |
SecondaryRight | No |
Weitere Informationen zu Ui-Navigationscontrollern und den obigen Befehlen finden Sie unter UI-Navigationscontroller.
Tasten
In den folgenden Abschnitten werden die Inhalte der einzelnen Unterschlüssel unter den Tasten Gamepad, RacingWheel, ArcadeStick, FlightStick und UINavigation erläutert.
Schaltflächenzuordnung
In der folgenden Tabelle sind die Werte aufgeführt, die zum Zuordnen einer Schaltfläche erforderlich sind. Wenn Sie z. B. DPadUp auf dem Gamecontroller drücken, sollte die Zuordnung für DPadUp den ButtonIndex-Wert enthalten (Quelle ist Schaltfläche). Wenn DPadUp von einer Switchposition zugeordnet werden muss, sollte die DPadUp-Zuordnung die Werte SwitchIndex und SwitchPosition enthalten (Quelle ist Switch).
Quelle | Name des Werts | Werttyp | Erforderlich? | Wertinformationen |
---|---|---|---|---|
Taste | ButtonIndex | DWORD | Ja | Index im RawGameController-Schaltflächenarray . |
Achse | AxisIndex | DWORD | Ja | Index im RawGameController-Achsenarray . |
Invertierung | DWORD | No | Gibt an, dass der Achsenwert invertiert werden soll, bevor die Faktoren "Threshold Percent " und "DebouncePercent " angewendet werden. | |
ThresholdPercent | DWORD | Ja | Gibt die Achsenposition an, an der der zugeordnete Schaltflächenwert zwischen den gedrückten und losgelassenen Zuständen wechselt. Der gültige Wertebereich beträgt 0 bis 100. Die Schaltfläche wird als gedrückt betrachtet, wenn der Achsenwert größer oder gleich diesem Wert ist. | |
DebouncePercent | DWORD | Ja |
Definiert die Größe eines Fensters um den ThresholdPercent-Wert , der verwendet wird, um den Zustand der gemeldeten Schaltfläche zu entprellen. Der gültige Wertebereich beträgt 0 bis 100. Schaltflächenzustandsübergänge können nur auftreten, wenn der Achsenwert die oberen oder unteren Begrenzungen des Entprässfensters überschreitet. Beispielsweise führt ein ThresholdPercent von 50 und DebouncePercent von 10 zu Entprellbegrenzungen bei 45 % und 55 % der Werte der Vollbereichsachse. Die Schaltfläche kann erst dann zum gedrückten Zustand wechseln, wenn der Achsenwert 55 % oder höher erreicht, und er kann erst wieder zum losgelassenen Zustand wechseln, wenn der Achsenwert 45 % oder darunter erreicht. Die berechneten Entprellenfensterbegrenzungen werden zwischen 0 % und 100 % geklemmt. Beispielsweise würde ein Schwellenwert von 5 % und ein Entprellfenster von 20 % dazu führen, dass die Entprellfenstergrenzen auf 0 % und 15 % fallen. Der Schaltflächenzustand für Achsenwerte von 0 % und 100 % wird immer als losgelassen gemeldet bzw. gedrückt, unabhängig vom Schwellenwert und entprelligen Werten. |
|
Schalter | SwitchIndex | DWORD | Ja | Index im RawGameController-Switcharray . |
SwitchPosition | REG_SZ | Ja |
Gibt die Schalterposition an, die dazu führt, dass die zugeordnete Schaltfläche angezeigt wird, dass sie gedrückt wird. Die Positionswerte können eine der folgenden Zeichenfolgen sein:
|
|
IncludeAdjacent | DWORD | No | Gibt an, dass benachbarte Schalterpositionen auch dazu führen, dass die zugeordnete Schaltfläche angezeigt wird, dass sie gedrückt wird. |
Achsenzuordnung
In der folgenden Tabelle sind die Werte aufgeführt, die zum Zuordnen einer Achse erforderlich sind:
Quelle | Name des Werts | Werttyp | Erforderlich? | Wertinformationen | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Taste | MaxValueButtonIndex | DWORD | Ja |
Index im RawGameController-Schaltflächenarray , das in den zugeordneten unidirektionalen Achsenwert übersetzt wird.
|
|||||||||||||||
MinValueButtonIndex | DWORD | No |
Gibt an, dass die zugeordnete Achse bidirektional ist. Werte von MaxButton und MinButton werden wie unten dargestellt in einer einzelnen bidirektionalen Achse kombiniert.
|
||||||||||||||||
Achse | AxisIndex | DWORD | Ja | Index im RawGameController-Achsenarray . | |||||||||||||||
Invertierung | DWORD | No | Gibt an, dass der zugeordnete Achsenwert vor der Rückgabe invertiert werden soll. | ||||||||||||||||
Schalter | SwitchIndex | DWORD | Ja | Index im RawGameController-Switcharray . | |||||||||||||||
MaxValueSwitchPosition | REG_SZ | Ja |
Eine der folgenden Zeichenfolgen:
Sie gibt die Position des Schalters an, der bewirkt, dass der zugeordnete Achsenwert als 1,0 gemeldet wird. Die entgegengesetzte Richtung von MaxValueSwitchPosition wird als 0,0 behandelt. Wenn z. B. MaxValueSwitchPosition up ist, wird die Achsenwertübersetzung unten angezeigt:
|
||||||||||||||||
IncludeAdjacent | DWORD | No |
Gibt an, dass benachbarte Schalterpositionen auch dazu führen, dass die zugeordnete Achse 1,0 meldet. Wenn "IncludeAdjacent" im obigen Beispiel festgelegt ist, erfolgt die Achsenübersetzung wie folgt:
|
Switch-Zuordnung
Schalterpositionen können entweder aus einer Reihe von Schaltflächen im Schaltflächenarray des RawGameController oder aus einem Index im Switchesarray zugeordnet werden. Schalterpositionen können nicht von Achsen zugeordnet werden.
Quelle | Name des Werts | Werttyp | Wertinformationen | ||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Taste | ButtonCount | DWORD | 2, 4 oder 8 | ||||||||||||||||||||||||||
SwitchKind | REG_SZ | TwoWay, FourWay oder EightWay | |||||||||||||||||||||||||||
UpButtonIndex | DWORD | Siehe *ButtonIndex-Werte | |||||||||||||||||||||||||||
DownButtonIndex | DWORD | ||||||||||||||||||||||||||||
LeftButtonIndex | DWORD | ||||||||||||||||||||||||||||
RightButtonIndex | DWORD | ||||||||||||||||||||||||||||
UpRightButtonIndex | DWORD | ||||||||||||||||||||||||||||
DownRightButtonIndex | DWORD | ||||||||||||||||||||||||||||
DownLeftButtonIndex | DWORD | ||||||||||||||||||||||||||||
UpLeftButtonIndex | DWORD | ||||||||||||||||||||||||||||
Achse | SwitchKind | REG_SZ | TwoWay, FourWay oder EightWay | ||||||||||||||||||||||||||
XAxisIndex | DWORD | YAxisIndex ist immer vorhanden. XAxisIndex ist nur vorhanden, wenn SwitchKind FourWay oder EightWay ist. | |||||||||||||||||||||||||||
YAxisIndex | DWORD | ||||||||||||||||||||||||||||
XDeadZonePercent | DWORD | Geben Sie die Größe des inaktiven Bereichs um die Mittelposition der Achsen an. | |||||||||||||||||||||||||||
YDeadZonePercent | DWORD | ||||||||||||||||||||||||||||
XDebouncePercent | DWORD | Definieren Sie die Größe der Fenster um die Begrenzungen der oberen und unteren inaktiven Zone, die verwendet werden, um den gemeldeten Schalterzustand zu entspringen. | |||||||||||||||||||||||||||
YDebouncePercent | DWORD | ||||||||||||||||||||||||||||
XInvert | DWORD | Geben Sie an, dass die entsprechenden Achsenwerte vor der Inaktivierungszone invertiert werden sollen und entprenkte Fensterberechnungen angewendet werden. | |||||||||||||||||||||||||||
YInvert | DWORD | ||||||||||||||||||||||||||||
Schalter | SwitchIndex | DWORD | Index im RawGameController-Switcharray . | ||||||||||||||||||||||||||
Invertierung | DWORD | Gibt an, dass der Schalter seine Positionen in einer Gegenrichtung im Uhrzeigersinn und nicht in der Standardreihenfolge im Uhrzeigersinn meldet. | |||||||||||||||||||||||||||
PositionBias | DWORD |
Verschiebt den Ausgangspunkt, wie Positionen durch den angegebenen Betrag gemeldet werden. PositionBias wird immer im Uhrzeigersinn vom ursprünglichen Ausgangspunkt gezählt und wird angewendet, bevor die Reihenfolge der Werte umgekehrt wird. Beispielsweise kann ein Schalter, der Positionen meldet, die mit DownRight im Gegenzeigersinn beginnen, durch Festlegen des Invert-Flags und Angeben einer PositionBias von 5 normalisiert werden:
|
*ButtonIndex-Werte
*ButtonIndex values index into the RawGameController's button array:
ButtonCount | SwitchKind | RequiredMappings |
---|---|---|
2 | TwoWay |
|
4 | FourWay |
|
4 | EightWay |
|
8 | EightWay |
|
Eigenschaftenzuordnung
Hierbei handelt es sich um statische Zuordnungswerte für verschiedene Zuordnungstypen.
Zuordnung | Name des Werts | Werttyp | Wertinformationen |
---|---|---|---|
Rennrad | MaxWheelAngle | DWORD | Gibt den maximalen physischen Radwinkel an, der vom Rad in einer einzelnen Richtung unterstützt wird. Beispielsweise würde ein Rad mit einer möglichen Drehung von -90 Grad auf 90 Grad 90 Grad 90 angeben. |
Beschriftungen
Bezeichnungen sollten unter dem Bezeichnungsschlüssel unter dem Gerätestamm vorhanden sein. Bezeichnungen können drei Unterschlüssel aufweisen: Schaltflächen, Achsen und Schalter.
Schaltflächenbeschriftungen
Die Tastentaste ordnet jede der Schaltflächenpositionen im Array der RawGameController-Schaltflächen einer Zeichenfolge zu. Jede Zeichenfolge wird intern dem entsprechenden GameControllerButtonLabel-Enumerationswert zugeordnet. Wenn z. B. ein Gamepad zehn Tasten und die Reihenfolge enthält, in der der RawGameController die Schaltflächen analysiert und in dem Schaltflächenbericht angezeigt wird, sieht dies wie folgt aus:
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
Die Beschriftungen sollten in dieser Reihenfolge unter der Taste "Schaltflächen" angezeigt werden:
Name | Wert (Typ: REG_SZ) |
---|---|
Schaltfläche0 | Menü |
Schaltfläche1 | Ansicht |
Schaltfläche2 | LeftStickButton |
Button3 | RightStickButton |
Button4 | LetterA |
Schaltfläche5 | LetterB |
Schaltfläche6 | LetterX |
Schaltfläche7 | LetterY |
Schaltfläche8 | LeftBumper |
Schaltfläche9 | RightBumper |
Achsenbeschriftungen
Die Achsentaste zuordnen alle Achsenpositionen im Achsenarray des RawGameController zu einer der Bezeichnungen, die in GameControllerButtonLabel Enum aufgeführt sind, genau wie die Schaltflächenbeschriftungen. Sehen Sie sich das Beispiel in Schaltflächenbeschriftungen an.
Bezeichnungen wechseln
Die Schaltertasten ordnet Die Positionswechselpositionen zu Beschriftungen zu. Die Werte folgen dieser Benennungskonvention: Um eine Position eines Schalters zu bezeichnen, deren Index x im Switcharray von RawGameController ist, fügen Sie diese Werte unter dem Unterschlüssel "Switches" hinzu:
- SwitchxUp
- SwitchxUpRight
- SwitchxRight
- SwitchxDownRight
- SwitchxDown
- SwitchxDownLeft
- SwitchxUpLeft
- SwitchxLeft
Die folgende Tabelle zeigt einen Beispielsatz von Beschriftungen für Schalterpositionen eines 4-Wege-Schalters, der bei Index 0 im RawGameController angezeigt wird:
Name | Wert (Typ: REG_SZ) |
---|---|
Switch0Up | XboxUp |
Switch0Right | XboxRight |
Switch0Down | XboxDown |
Switch0Left | XboxLeft |
Beispielregistrierungsdatei
Um zu zeigen, wie alle diese Zuordnungen und Werte zusammenkommen, finden Sie hier eine Beispielregistrierungsdatei für ein generisches 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