Freigeben über


DirectInput- und XUSB-Geräte

Der Treiber für XUSB unter Windows implementiert die Kernelmodusschnittstelle für die XINPUT-DLL. Um bei Verwendung von Legacytiteln, die die DirectInput-API mit dem allgemeinen Controllergerät verwenden, eine gute Erfahrung zu bieten, exportiert der Treiber auch eine HID-Klassenschnittstelle (Human Interface Device), die von DirectInput übernommen wird. Wir haben die Zuordnung von XUSB zu HID auf der Grundlage des typischen Verhaltens in einer Reihe von Spieleanwendungen für die ursprüngliche XINPUT-Version gewä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 vom USB-Ausschuss (Universal Serial Bus), der ursprünglich von Microsoft vorgeschlagen wurde und Protokolle für Eingabegeräte verallgemeinern sollte. Es besteht aus einer Byte-Code-Beschreibungssprache und kann Gamepads, Mäuse, Joysticks, Gas- und Rudersteuerungen und Multiachsencontroller darstellen. Da dieser Standard so allgemein gehalten ist, könnten Sie Schwierigkeiten haben, Software zu schreiben, die Eingaben von beliebigen Geräten verarbeitet. Daher haben wir für die spieleorientierte DirectInput-API eine spezifische Unterkategorie von Typen entwickelt, um die Hardware-Hersteller zu ermutigen, diese durch ihre Treiber zu unterstützen.

Wichtig

Sie können auch über die RawInput-API auf HID-Eingabegeräte zugreifen und Eingabeberichte über HID-API auf niedriger Ebene verarbeiten, doch 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_ARCADE_STICK (Untertyp 3) Arcade-Joystick/Arcade-Pad
XINPUT_DEVSUBTYPE_FLIGHT_STICK (Untertyp 4) Steuerknüppel
XINPUT_DEVSUBTYPE_DANCE_PAD (Untertyp 5) Standard für jeden neuen Untertyp
XINPUT_DEVSUBTYPE_GUITAR (Untertyp 6) Gitarre
XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE (Untertyp 7)
XINPUT_DEVSUBTYPE_DRUM_KIT (Untertyp 8)
XINPUT_DEVSUBTYPE_GUITAR_BASS (Untertyp 11)
XINPUT_DEVSUBTYPE_ARCADE_PAD (Untertyp 19)

Hinweis

Die folgenden HID-Zuordnungen sind statisch. Dies bedeutet, dass selbst dann, wenn der Bericht über die Gerätefähigkeiten anzeigt, dass eine bestimmte Taste oder Achse nicht unterstützt wird, die Zuordnung diese trotzdem enthält, aber immer einen ausgeschalteten Zustand oder einen mittleren Wert meldet.

Gamepad

Dies ist die Standardzuordnung. Sie ist für ein Standard-Gamepad konzipiert und wird als HID-Verwendungstyp Gamepad verfügbar gemacht.

Control HID-Verwendungsname Seite „Verwendung“ Verwendungs-ID
Linker Stick X, Y 0x01 0x30, 0x31
Rechter Stick Rx, Ry 0x01 0x33, 0x34
Linker Trigger + Rechter Trigger Z* 0x01 0x32
D-Pad nach oben, unten, links, rechts Mehrwegeschalter 0x01 0x39
H Taste 1 0x09 0x01
b Taste 2 0x09 0x02
X Taste 3 0x09 0x03
J Taste 4 0x09 0x04
LB (Linker Bumper) Taste 5 0x09 0x05
RB (Rechter Bumper) Taste 6 0x09 0x06
Zurück Taste 7 0x09 0x07
Start Taste 8 0x09 0x08
LSB (Linke Sticktaste) Taste 9 0x09 0x09
RSB (Rechte Sticktaste) Taste 10 0x09 0x0A

Hinweis

(*): Dies wird so kombiniert, dass Z das von den meisten Titeln erwartete Zentrierverhalten für die Drehung aufweist; dies bedeutet, dass es nicht möglich ist, alle möglichen Triggerkombinationswerte über DirectInput und HID anzuzeigen.

Arcade-Joystick/Arcade-Pad

Dies ist die Zuordnung, die für Arcade-Stick-Controller entworfen wurde und als HID-Verwendungstyp Gamepad verfügbar gemacht wird. Das Arcade-Pad ähnelt einem Arcade-Stick, hat jedoch einen kleineren Formfaktor. Diese Entwürfe ersetzen den analogen linken und rechten Trigger durch digitale Tasten, die den minimalen und maximalen Achsenwert melden.

Control HID-Verwendungsname Seite „Verwendung“ Verwendungs-ID
D-Pad nach oben, unten, links, rechts Mehrwegeschalter 0x01 0x39
H Taste 1 0x09 0x01
b Taste 2 0x09 0x02
X Taste 3 0x09 0x03
J Taste 4 0x09 0x04
LB (Linker Bumper) Taste 5 0x09 0x05
RB (Rechter Bumper) Taste 6 0x09 0x06
Zurück Taste 7 0x09 0x07
Start Taste 8 0x09 0x08
Linker Trigger Taste 9 0x09 0x09
Rechter Trigger Taste 10 0x09 0x0A

Diese Geräte können zusätzliche Steuerelemente unterstützen oder auch nicht, aber diese werden nicht durch die HID-Zuordnung verfügbar gemacht: Linker Stick, Rechter Stick, LSB (Linke Sticktaste) und RSB (Rechte Sticktaste).

Wheel

Diese Zuordnung ist für ein Rennlenkrad konzipiert und wird als HID-Verwendungstyp Gamepad verfügbar gemacht.

Control HID-Verwendungsname Seite „Verwendung“ Verwendungs-ID
Rad (Linker Stick X) X 0x01 0x30
Gaspedal (rechter Trigger) + Bremspedal (linker Trigger) Z* 0x01 0x32
D-Pad nach oben, unten, links, rechts Mehrwegeschalter 0x01 0x39
H Taste 1 0x09 0x01
b Taste 2 0x09 0x02
X Taste 3 0x09 0x03
J Taste 4 0x09 0x04
LB (Linker Bumper) Taste 5 0x09 0x05
RB (Rechter Bumper) Taste 6 0x09 0x06
LSB (Linke Sticktaste) Taste 7 0x09 0x07
RSB (Rechte Sticktaste) Taste 8 0x09 0x08
Zurück Taste 9 0x09 0x09
Start Taste 10 0x09 0x0A

Hinweis

(*): Dies wird so kombiniert, dass Z das von den meisten Titeln erwartete Zentrierverhalten für Brems- und Gaspedal aufweist; dies bedeutet, dass es nicht möglich ist, alle möglichen Pedalkombinationswerte über DirectInput und HID anzuzeigen.

Steuerknüppel

Diese Zuordnung ist für einen Steuerknüppel konzipiert und wird als HID-Verwendungstyp Joystick verfügbar gemacht.

Control Verwendungsname Seite „Verwendung“ Verwendungs-ID
Steuerknüppel (linker Stick) X, Y 0x01 0x30, 0x31
POV-Mehrwegeschalter (rechter Stick) Rx, Ry 0x01 0x33, 0x34
Gas (rechter Trigger) Z 0x01 0x32
Ruder (linker Trigger) Rz 0x01 0x35
D-Pad nach oben, unten, links, rechts Mehrwegeschalter 0x01 0x39
Primäre Waffe (A) Taste 1 0x09 0x01
Sekundäre Waffe (B) Taste 2 0x09 0x02
X Taste 3 0x09 0x03
J Taste 4 0x09 0x04
LB (Linker Bumper) Taste 5 0x09 0x05
RB (Rechter Bumper) Taste 6 0x09 0x06
Zurück Taste 7 0x09 0x07
Start Taste 8 0x09 0x08
LSB (Linke Sticktaste) Taste 9 0x09 0x09
RSB (Rechte Sticktaste) Taste 10 0x09 0x0A

Hinweis

Dies basiert auf dem endgültigen Steuerknüppeldesign. Da sich dies von frühen Steuerknüppeldefinitionen 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 vorausgesetzt.