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.