Partager via


Appareils DirectInput et XUSB

Le pilote pour XUSB sous Windows implémente l’interface en mode noyau pour la DLL XINPUT. Pour offrir une bonne expérience pour les titres hérités qui utilisent l’API DirectInput avec le périphérique de contrôleur commun, le pilote exporte également une interface de classe Interface Homme-machine (HID), qui est récupérée par DirectInput. Nous avons choisi le mappage de XUSB à HID en fonction du comportement typique dans un ensemble d’applications de jeu pour la version XINPUT d’origine, et nous avons mis à jour le mappage pour les sous-types plus récents. Cette rubrique décrit le mappage.

Interface Homme-machine (HID)

La norme HID est une norme du comité USB (Universal Serial Bus) initialement proposée par Microsoft pour généraliser les protocoles pour les périphériques d’entrée. Il se compose d’un langage de description de code d’octets et peut exprimer des boîtiers de commande, des souris, des manettes de jeu, des contrôleurs d’accélération et de gouvernail et des contrôleurs multi-axes. Cette norme étant tellement généralisée, vous pouvez avoir des difficultés à écrire des logiciels qui consomment des entrées à partir d’appareils arbitraires. Par conséquent, pour l’API DirectInput centrée sur le jeu, nous avons développé un sous-mappage spécifique de types pour encourager les fabricants matériels à les prendre en charge par le biais de leurs pilotes.

Important

Vous pouvez également accéder aux périphériques d’entrée HID via l’API RawInput et traiter les rapports d’entrée via l’API HID de bas niveau, mais les retours de vibrations ne fonctionnent pas comme avec DirectInput.

Mappages

Le pilote XUSB implémente à la fois une interface de classe XUSB et une interface de classe HID pour les appareils afin de prendre en charge l’utilisation de XINPUT et DirectInput. Ce mappage est basé sur les informations de sous-type XUSB. Le pilote implémente quatre groupes distincts de mappages.

Sous-type XUSB Mappage
XINPUT_DEVSUBTYPE_GAMEPAD (Sous-type 1) Boîtier de commande
XINPUT_DEVSUBTYPE_WHEEL (Sous-type 2) Roulette
XINPUT_DEVSUBTYPE_ARCADE_STICK (Sous-type 3) Arcade Stick/Arcade Pad
XINPUT_DEVSUBTYPE_FLIGHT_STICK (Sous-type 4) Manche à balai
XINPUT_DEVSUBTYPE_DANCE_PAD (Sous-type 5) Valeur par défaut pour tout nouveau sous-type
XINPUT_DEVSUBTYPE_GUITAR (Sous-type 6) Guitare
XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE (Sous-type 7)
XINPUT_DEVSUBTYPE_DRUM_KIT (Sous-type 8)
XINPUT_DEVSUBTYPE_GUITAR_BASS (Sous-type 11)
XINPUT_DEVSUBTYPE_ARCADE_PAD (Sous-type 19)

Remarque

Les mappages HID suivants sont statiques. Cela signifie que même si le rapport des fonctionnalités de l’appareil indique qu’un bouton ou un axe particulier n’est pas pris en charge, le mappage l’inclut toujours, mais signale toujours une valeur hors état ou centre.

Boîtier de commande

Il s’agit du mappage par défaut, conçu autour d’un boîtier de commande standard et exposé en tant que type d’utilisation HID de boîtier de commande.

Contrôler Nom d’utilisation IHM Page d’utilisation ID d’utilisation
Stick gauche X, Y 0x01 0x30, 0x31
Manche droit Rx, Ry 0x01 0x33, 0x34
Déclencheur gauche + déclencheur droit Z* 0x01 0x32
D-Pad Haut, Bas, Gauche, Droit Changement de chapeau 0x01 0x39
A Bouton 1 0x09 0x01
o Bouton 2 0x09 0x02
X Bouton 3 0x09 0x03
Y Bouton 4 0x09 0x04
LB (pare-choc gauche) Bouton 5 0x09 0x05
RB (pare-choc droit) Bouton 6 0x09 0x06
RETOUR Bouton 7 0x09 0x07
START Bouton 8 0x09 0x08
LSB (bouton stick gauche) Bouton 9 0x09 0x09
RSB (bouton stick droit) Bouton 10 0x09 0x0A

Remarque

(*) : Ceci est combiné afin que Z présente le comportement de centrage attendu par la plupart des titres pour la rotation ; cela signifie qu’il n’est pas possible de voir toutes les valeurs de combinaison de déclencheurs possibles via DirectInput et HID.

Arcade Stick/Arcade Pad

Il s’agit du mappage conçu autour du contrôleur Arcade Stick, exposé en tant que type d’utilisation HID de boîtier de commande. L’Arcade Pad est très similaire à un Stick Arcade, mais dans un facteur de forme plus petit. Ces conceptions remplacent le déclencheur gauche et le déclencheur droit analogiques par des boutons numériques qui signalent la valeur d’axe minimale et maximale.

Contrôler Nom d’utilisation IHM Page d’utilisation ID d’utilisation
D-Pad Haut, Bas, Gauche, Droit Changement de chapeau 0x01 0x39
A Bouton 1 0x09 0x01
o Bouton 2 0x09 0x02
X Bouton 3 0x09 0x03
Y Bouton 4 0x09 0x04
LB (pare-choc gauche) Bouton 5 0x09 0x05
RB (pare-choc droit) Bouton 6 0x09 0x06
RETOUR Bouton 7 0x09 0x07
START Bouton 8 0x09 0x08
Déclencheur gauche Bouton 9 0x09 0x09
Déclencheur droit Bouton 10 0x09 0x0A

Ces appareils peuvent ou non prendre en charge des contrôles supplémentaires, mais ils ne sont pas exposés par le mappage HID : Stick gauche, Stick droit, LSB (bouton stick gauche) et RSB (bouton stick droit).

Roulette

Ce mappage est conçu autour d’un volant de course et est exposé en tant que type d’utilisation HID de boîtier de commande.

Contrôler Nom d’utilisation IHM Page d’utilisation ID d’utilisation
Volant (stick gauche X) X 0x01 0x30
Pédale d’accélérateur (déclencheur droit) + pédale de frein (déclencheur gauche) Z* 0x01 0x32
D-Pad Haut, Bas, Gauche, Droit Changement de chapeau 0x01 0x39
A Bouton 1 0x09 0x01
o Bouton 2 0x09 0x02
X Bouton 3 0x09 0x03
Y Bouton 4 0x09 0x04
LB (pare-choc gauche) Bouton 5 0x09 0x05
RB (pare-choc droit) Bouton 6 0x09 0x06
LSB (bouton stick gauche) Bouton 7 0x09 0x07
RSB (bouton stick droit) Bouton 8 0x09 0x08
RETOUR Bouton 9 0x09 0x09
START Bouton 10 0x09 0x0A

Remarque

(*) : Ceci est combiné afin que Z présente le comportement de centrage attendu par la plupart des titres pour les commandes de frein et d’accélérateur ; cela signifie qu’il n’est pas possible de voir toutes les valeurs de combinaison de pédales possibles via DirectInput.

Manche à balai

Ce mappage est conçu autour d’un manche à balai et est exposé en tant que type d’utilisation HID de Manette de jeu.

Contrôler Nom d’utilisation Page d’utilisation ID d’utilisation
Manche à balai (stick gauche) X, Y 0x01 0x30, 0x31
POV Hat (stick droit) Rx, Ry 0x01 0x33, 0x34
Accélérateur (déclencheur droit) Z 0x01 0x32
Gouvernail (déclencheur gauche) Rz 0x01 0x35
D-Pad Haut, Bas, Gauche, Droit Changement de chapeau 0x01 0x39
Arme principale (A) Bouton 1 0x09 0x01
Arme secondaire (B) Bouton 2 0x09 0x02
X Bouton 3 0x09 0x03
Y Bouton 4 0x09 0x04
LB (pare-choc gauche) Bouton 5 0x09 0x05
RB (pare-choc droit) Bouton 6 0x09 0x06
RETOUR Bouton 7 0x09 0x07
START Bouton 8 0x09 0x08
LSB (bouton stick gauche) Bouton 9 0x09 0x09
RSB (bouton stick droit) Bouton 10 0x09 0x0A

Remarque

Ceci est basé sur la conception finale du manche à balai. Étant donné que cela diffère des premières définitions du manche à balai, de nombreux appareils ont un commutateur de mode qui prend en charge l’ancien et le nouveau modèle. Ce mappage suppose le nouveau modèle.