DirectInput- und XUSB-Geräte

Der Treiber für die Xbox Common Controller-Klasse (XUSB) auf Windows implementiert die Kernelmodusschnittstelle für die XINPUT-DLL. Um eine gute Erfahrung für Ältere Titel zu bieten, die die DirectInput-API mit dem gemeinsamen Controllergerät verwenden, exportiert der Treiber auch eine Eingabegeräte-Klassenschnittstelle (HID), die von DirectInput verwendet wird. Wir haben die Zuordnung von XUSB zu HID basierend auf dem typischen Verhalten in einer Reihe von Gaminganwendungen für die ursprüngliche XINPUT-Version ausgewählt und die Zuordnung für neuere Untertypen aktualisiert. In diesem Thema wird die Zuordnung beschrieben.

Eingabegerät (Human Interface Device, HID)

DER HID-Standard ist ein Standard des USB-Ausschuss (Universal Serial Bus), der ursprünglich von Microsoft zum Generalisieren von Protokollen für Eingabegeräte vorgeschlagen wurde. Sie besteht aus einer Beschreibungssprache mit Bytecode und kann Gamepads, Mausen, Wilden, Drosselungs- und Drosselungssteuerelemente sowie Controller mit mehreren Achsen ausdrücken. Da dieser Standard so generalisiert ist, können Sie Schwierigkeiten beim Schreiben von Software haben, die Eingaben von beliebigen Geräten verwendet. Daher haben wir für die spielorientierte DirectInput-API eine spezifische Unterzuordnung von Typen entwickelt, um Hardwarehersteller zur Unterstützung durch ihre Treiber zu ermutigen.

Wichtig

Sie können auch über die RawInput-API auf HID-Eingabegeräte zugreifen und Eingabeberichte über die LOW-API verarbeiten, aber Vibrationsfeedback funktioniert nicht wie bei DirectInput.

Zuordnungen

Der XUSB-Treiber implementiert sowohl eine XUSB-Klassenschnittstelle als auch eine HID-Klassenschnittstelle für Geräte, um die Verwendung von XINPUT und DirectInput zu unterstützen. Diese Zuordnung basiert auf den XUSB-Untertypinformationen. Der Treiber implementiert vier verschiedene Gruppen von Zuordnungen.

XUSB-Untertyp Zuordnung
XINPUT _ DEVSUBTYPE _ GAMEPAD (Untertyp 1) Gamepad
XINPUT _ DEVSUBTYPE _ WHEEL (Untertyp 2) Wheel
XINPUT _ DEVSUBTYPE _ STICK _ (Untertyp 3) Stick-/Pad-Pad "Stick"
XINPUT _ DEVSUBTYPE _ FLIGHT STICK _ (Untertyp 4) Flight Stick
XINPUT _ DEVSUBTYPE _ PAD PAD _ (Untertyp 5) Standard für jeden neuen Untertyp
XINPUT _ DEVSUBTYPE _ XI (Untertyp 6) Gitarre
XINPUT _ DEVSUBTYPE _ ALTERNATIVE _ (Subtyp 7)
XINPUT _ DEVSUBTYPE _ KITS _ (Untertyp 8)
XINPUT _ DEVSUBTYPE _ GD _ (Untertyp 11)
XINPUT _ DEVSUBTYPE _ pad _ (Untertyp 19)

Hinweis

Die folgenden HID-Zuordnungen sind statisch. Dies bedeutet, dass die Zuordnung auch dann, wenn der Bericht zu den Gerätefunktionen angibt, dass eine bestimmte Schaltfläche oder Achse nicht unterstützt wird, sie enthält, aber immer einen Wert vom Status "Deaktiviert" oder "Mitte" anzeigt.

Gamepad

Dies ist die Standardzuordnung, die auf dem Standardmäßigen Xbox Common Controller-Gamepad ausgerichtet ist und als Gamepad HID-Verwendungstyp verfügbar gemacht wird.

Control HID-Verwendungsname Seite "Nutzung" Nutzungs-ID
Linker Stick X, Y 0x01 0x30, 0x31
Rechter Stick Rx, Ry 0x01 0x33, 0x34
Linker Trigger + Rechter Trigger Z* 0x01 0x32
D-Pad Up, Down, Left, Right Hat Switch 0x01 0x39
Ein Schaltfläche 1 0x09 0x01
B Schaltfläche 2 0x09 0x02
X Schaltfläche 3 0x09 0x03
J Schaltfläche 4 0x09 0x04
LB (linker Bumper) Schaltfläche 5 0x09 0x05
RB (rechtes Bumper) Schaltfläche 6 0x09 0x06
Zurück Schaltfläche 7 0x09 0x07
START Schaltfläche 8 0x09 0x08
LSB (Linke Stick-Taste) Schaltfläche 9 0x09 0x09
RSB (rechte Stick-Taste) Schaltfläche 10 0x09 0x0A

Hinweis

( ): Dies wird so kombiniert, dass Z das Zentrierungsverhalten auftut, das von den meisten Titeln für die Drehung erwartet wird. Dies bedeutet, dass es nicht möglich ist, alle möglichen Triggerkombinationswerte über * DirectInput und HID zu sehen.

Stick-/Pad-Pad "Stick"

Dies ist die Zuordnung, die um den Stick-Controller von Stick entworfen wurde und als Gamepad-HID-Verwendungstyp verfügbar gemacht wird. Das Pad "Pad"-Pad ist sehr ähnlich wie ein Stick stick, aber in einem kleineren Formfaktor. Diese Entwürfe ersetzen den analogen linken und rechten Trigger durch digitale Schaltflächen, die den minimalen und maximalen Achsenwert melden.

Control HID-Verwendungsname Seite "Nutzung" Nutzungs-ID
D-Pad Up, Down, Left, Right Hat Switch 0x01 0x39
Ein Schaltfläche 1 0x09 0x01
B Schaltfläche 2 0x09 0x02
X Schaltfläche 3 0x09 0x03
J Schaltfläche 4 0x09 0x04
LB (linker Bumper) Schaltfläche 5 0x09 0x05
RB (rechtes Bumper) Schaltfläche 6 0x09 0x06
Zurück Schaltfläche 7 0x09 0x07
START Schaltfläche 8 0x09 0x08
Linker Trigger Schaltfläche 9 0x09 0x09
Rechter Trigger Schaltfläche 10 0x09 0x0A

Diese Geräte unterstützen möglicherweise zusätzliche Steuerelemente, aber diese werden von der HID-Zuordnung nicht verfügbar gemacht: Left Stick, Right Stick, LSB (linke Stick-Taste) und RSB (rechte Sticktaste).

Wheel

Diese Zuordnung ist um das Xbox Racing Wheel herum konzipiert und wird als Gamepad HID-Verwendungstyp verfügbar gemacht.

Control HID-Verwendungsname Seite "Nutzung" Nutzungs-ID
Wheel (Left Stick X) X 0x01 0x30
Accelerator Accelerator (rechter Trigger) + Veralten (linker Trigger) Z* 0x01 0x32
D-Pad Up, Down, Left, Right Hat Switch 0x01 0x39
Ein Schaltfläche 1 0x09 0x01
B Schaltfläche 2 0x09 0x02
X Schaltfläche 3 0x09 0x03
J Schaltfläche 4 0x09 0x04
LB (linker Bumper) Schaltfläche 5 0x09 0x05
RB (rechtes Bumper) Schaltfläche 6 0x09 0x06
LSB (Linke Stick-Taste) Schaltfläche 7 0x09 0x07
RSB (rechte Stick-Taste) Schaltfläche 8 0x09 0x08
Zurück Schaltfläche 9 0x09 0x09
START Schaltfläche 10 0x09 0x0A

Hinweis

( ): Dies wird so kombiniert, dass Z das Zentrierungsverhalten auftut, das von den meisten Titeln für die Steuerungen für Diebeschleunigung und das Beschleunigersteuerelemente erwartet wird. Dies bedeutet, dass es nicht möglich ist, über DirectInput alle möglichen Werte der Kombinationskombination zu * sehen.

Flight Stick

Diese Zuordnung ist auf den Xbox Flight Stick ausgelegt und wird als Hid HID-Verwendungstyp verfügbar gemacht.

Control Verwendungsname Seite "Nutzung" Nutzungs-ID
Flight Stick (Left Stick) X, Y 0x01 0x30, 0x31
POV Hat (Right Stick) Rx, Ry 0x01 0x33, 0x34
Drosselung (rechter Trigger) Z 0x01 0x32
Grober (linker Trigger) Rz 0x01 0x35
D-Pad Up, Down, Left, Right Hat Switch 0x01 0x39
Primäres Primäres (A) Schaltfläche 1 0x09 0x01
Sekundäres Replikat (B) Schaltfläche 2 0x09 0x02
X Schaltfläche 3 0x09 0x03
J Schaltfläche 4 0x09 0x04
LB (linker Bumper) Schaltfläche 5 0x09 0x05
RB (rechtes Bumper) Schaltfläche 6 0x09 0x06
Zurück Schaltfläche 7 0x09 0x07
START Schaltfläche 8 0x09 0x08
LSB (Linke Stick-Taste) Schaltfläche 9 0x09 0x09
RSB (rechte Stick-Taste) Schaltfläche 10 0x09 0x0A

Hinweis

Dies basiert auf dem endgültigen Flight Stick-Design. Da sich dies von frühen Flight Stick-Definitionen unterscheidet, verfügen viele Geräte über einen Modusschalter, der das alte und das neue Modell unterstützt. Bei dieser Zuordnung wird das neue Modell angenommen.