Condividi tramite


Dispositivi DirectInput e XUSB

Il driver per XUSB in Windows implementa l'interfaccia in modalità kernel per la DLL XINPUT. Per offrire un'esperienza ottimale per i titoli legacy che usano l'API DirectInput con il dispositivo controller comune, il driver esporta anche un'interfaccia di classe HUMAN Interface Device (HID), che viene prelevata da DirectInput. Abbiamo scelto il mapping di XUSB a HID in base al comportamento tipico in un set di applicazioni di gioco per la versione originale DIPUT e abbiamo aggiornato il mapping per i sottotipi più recenti. In questo argomento viene descritto il mapping.

Dispositivo di interfaccia umana (HID)

HID Standard è uno standard del comitato USB (Universal Serial Bus) originariamente proposto da Microsoft per generalizzare i protocolli per i dispositivi di input. È costituito da un linguaggio di descrizione del codice byte e può esprimere game pad, mouse, joystick, controlli di limitazione e timone e controller a più assi. Poiché questo standard è così generalizzato, potrebbe essere difficile scrivere software che utilizza l'input da dispositivi arbitrari. Pertanto, per l'API DirectInput incentrato sul gioco, abbiamo sviluppato un mapping secondario specifico di tipi per incoraggiare le fabbricazioni hardware a supportare tramite i driver.

Importante

È anche possibile accedere ai dispositivi di input HID tramite l'API RawInput e elaborare i report di input tramite l'API HID di basso livello, ma il feedback delle vibrazioni non funzionerà come con DirectInput.

Mapping

Il driver XUSB implementa sia un'interfaccia di classe XUSB che un'interfaccia di classe HID per i dispositivi per supportare sia l'utilizzo di XINPUT che directInput . Questo mapping è basato sulle informazioni sul sottotipo XUSB. Il driver implementa quattro gruppi distinti di mapping.

Sottotipo XUSB Mapping
XINPUT_DEVSUBTYPE_GAMEPAD (sottotipo 1) Game pad
XINPUT_DEVSUBTYPE_WH edizione Enterprise L (sottotipo 2) Selettore circolare
XINPUT_DEVSUBTYPE_ARCADE_STICK (sottotipo 3) Arcade Stick/Arcade Pad
XINPUT_DEVSUBTYPE_FLIGHT_STICK (sottotipo 4) Bastone di volo
XINPUT_DEVSUBTYPE_DANCE_PAD (sottotipo 5) Impostazione predefinita per qualsiasi nuovo sottotipo
XINPUT_DEVSUBTYPE_GUITAR (sottotipo 6) Chitarra
XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE (sottotipo 7)
XINPUT_DEVSUBTYPE_DRUM_KIT (sottotipo 8)
XINPUT_DEVSUBTYPE_GUITAR_BASS (sottotipo 11)
XINPUT_DEVSUBTYPE_ARCADE_PAD (sottotipo 19)

Nota

I mapping HID seguenti sono statici. Ciò significa che anche se il report sulle funzionalità del dispositivo indica che un determinato pulsante o asse non è supportato, il mapping lo includerà comunque, ma segnala sempre uno stato o un valore centrale disattivato.

Game pad

Questo è il mapping predefinito ed è progettato intorno a un game pad standard ed è esposto come tipo di utilizzo HID del Game pad .

Controllo Nome utilizzo HID Pagina Utilizzo ID utilizzo
Stick sinistro X, Y 0x01 0x30, 0x31
Bastone destro Rx, Ry 0x01 0x33, 0x34
Trigger sinistro + Trigger destro Z* 0x01 0x32
D-Pad Up, Down, Left, Right Interruttore hat 0x01 0x39
Un Pulsante 1 0x09 0x01
G Pulsante 2 0x09 0x02
X Pulsante 3 0x09 0x03
Y Pulsante 4 0x09 0x04
LB (paraurti sinistro) Pulsante 5 0x09 0x05
RB (paraurti destro) Pulsante 6 0x09 0x06
INDIETRO Pulsante 7 0x09 0x07
AVVIA Pulsante 8 0x09 0x08
LSB (pulsante a sinistra) Pulsante 9 0x09 0x09
RSB (pulsante a destra) Pulsante 10 0x09 0x0a

Nota

(*): questa operazione viene combinata in modo che Z mostri il comportamento centrale previsto dalla maggior parte dei titoli per la rotazione; ciò significa che non è possibile visualizzare tutti i possibili valori di combinazione di trigger tramite DirectInput e HID.

Arcade Stick/Arcade Pad

Questo è il mapping progettato intorno al controller Arcade Stick ed è esposto come tipo di utilizzo HID del Game pad . Il Pad Arcade è molto simile a una levetta Arcade, ma in un fattore di forma più piccolo. Queste progettazioni sostituiscono il trigger sinistro analogico e il trigger destro con pulsanti digitali che segnalano il valore minimo e massimo dell'asse.

Controllo Nome utilizzo HID Pagina Utilizzo ID utilizzo
D-Pad Up, Down, Left, Right Interruttore hat 0x01 0x39
Un Pulsante 1 0x09 0x01
G Pulsante 2 0x09 0x02
X Pulsante 3 0x09 0x03
Y Pulsante 4 0x09 0x04
LB (paraurti sinistro) Pulsante 5 0x09 0x05
RB (paraurti destro) Pulsante 6 0x09 0x06
INDIETRO Pulsante 7 0x09 0x07
AVVIA Pulsante 8 0x09 0x08
Trigger sinistro Pulsante 9 0x09 0x09
Trigger destro Pulsante 10 0x09 0x0a

Questi dispositivi possono o non supportano controlli aggiuntivi, ma non sono esposti dal mapping HID: Stick sinistro, Stick destro, LSB (pulsante a sinistra) e RSB (pulsante a destra).

Selettore circolare

Questo mapping è progettato intorno a un volante da corsa ed è esposto come tipo di utilizzo HID del Game pad .

Controllo Nome utilizzo HID Pagina Utilizzo ID utilizzo
Rotellina (bastone sinistro X) X 0x01 0x30
Pedale acceleratore (trigger destro) + pedale del freno (trigger sinistro) Z* 0x01 0x32
D-Pad Up, Down, Left, Right Interruttore hat 0x01 0x39
Un Pulsante 1 0x09 0x01
G Pulsante 2 0x09 0x02
X Pulsante 3 0x09 0x03
Y Pulsante 4 0x09 0x04
LB (paraurti sinistro) Pulsante 5 0x09 0x05
RB (paraurti destro) Pulsante 6 0x09 0x06
LSB (pulsante a sinistra) Pulsante 7 0x09 0x07
RSB (pulsante a destra) Pulsante 8 0x09 0x08
INDIETRO Pulsante 9 0x09 0x09
AVVIA Pulsante 10 0x09 0x0a

Nota

(*): questo è combinato in modo che Z mostri il comportamento centrale previsto dalla maggior parte dei titoli per i controlli freno e acceleratore; ciò significa che non è possibile vedere tutti i possibili valori di combinazione pedale attraverso DirectInput.

Bastone di volo

Questo mapping è progettato intorno a un bastone di volo ed è esposto come tipo di utilizzo joystick HID.

Controllo Nome utilizzo Pagina Utilizzo ID utilizzo
Bastone di volo (bastone sinistro) X, Y 0x01 0x30, 0x31
Cappello POV (bastone destro) Rx, Ry 0x01 0x33, 0x34
Limitazione (trigger destro) Z 0x01 0x32
Timone (trigger sinistro) Rz 0x01 0x35
D-Pad Up, Down, Left, Right Interruttore hat 0x01 0x39
Arma primaria (A) Pulsante 1 0x09 0x01
Arma secondaria (B) Pulsante 2 0x09 0x02
X Pulsante 3 0x09 0x03
Y Pulsante 4 0x09 0x04
LB (paraurti sinistro) Pulsante 5 0x09 0x05
RB (paraurti destro) Pulsante 6 0x09 0x06
INDIETRO Pulsante 7 0x09 0x07
AVVIA Pulsante 8 0x09 0x08
LSB (pulsante a sinistra) Pulsante 9 0x09 0x09
RSB (pulsante a destra) Pulsante 10 0x09 0x0a

Nota

Questo è basato sul design finale flight stick. Poiché ciò differisce dalle definizioni iniziali di Flight Stick, molti dispositivi hanno un commutatore in modalità che supporta il vecchio rispetto al nuovo modello. Questo mapping presuppone il nuovo modello.