DirectInput és XUSB-eszközök

A Windows XUSB illesztőprogramja implementálja az XINPUT DLL kernel módú felületét. Annak érdekében, hogy az DirectInput API-t a közös vezérlőeszközzel használó régi címekhez jó élményt nyújtson, az illesztőprogram exportál egy Human Interface Device (HID) osztályfelületet is, amelyet a DirectInput fog átvenni. Az XUSB hidra való leképezését választottuk az eredeti XINPUT-verzióhoz tartozó játékalkalmazások tipikus viselkedése alapján, és frissítettük az újabb altípusok leképezését. Ez a témakör a leképezést ismerteti.

Emberi interfész eszköz (HID)

A HID szabvány a Universal Serial Bus (USB) bizottság szabványa, amelyet eredetileg a Microsoft javasolt a bemeneti eszközök protokolljának általánosítására. Ez egy bájtkódos leírási nyelvből áll, és képes a játékpadok, egerek, joystickok, a szabályozás és a kormányvezérlők, valamint a többtengelyes vezérlők kifejezésére. Mivel ez a szabvány annyira általánosított, előfordulhat, hogy nehézségekbe ütközik olyan szoftverek írása, amelyek tetszőleges eszközökről származó bemeneteket használnak fel. Ezért a játékközpontú DirectInput API-hoz kifejlesztettünk egy speciális alleképezést a típusokhoz, hogy ösztönözzük a hardvergyártókat, hogy az illesztőprogramjaikon keresztül támogassák őket.

Fontos

A HID bemeneti eszközöket RawInput API- és a bemeneti jelentések alacsony szintű HID API- keresztül is elérheti, de a rezgési visszajelzések nem működnek úgy, mint DirectInput.

Hozzárendelések

A XUSB-illesztő XUSB osztályillesztőt és HID osztályillesztőt is implementál az eszközökhöz, hogy támogassa az XINPUT és DirectInput használatát. Ez a leképezés az XUSB altípus adatain alapul. Az illesztőprogram négy különböző leképezési csoportot valósít meg.

XUSB-altípus Térképezés
XINPUT_DEVSUBTYPE_GAMEPAD (1. altípus) Játékpad
XINPUT_DEVSUBTYPE_WHEEL (2. altípus) Kerék
XINPUT_DEVSUBTYPE_ARCADE_STICK (3. altípus) Árkád bot/Árkád pad
XINPUT_DEVSUBTYPE_FLIGHT_STICK (4. altípus) Flight Stick
XINPUT_DEVSUBTYPE_DANCE_PAD (5. altípus) Minden új altípus alapértelmezett értéke
XINPUT_DEVSUBTYPE_GUITAR (6. altípus) Gitár
XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE (7. altípus)
XINPUT_DEVSUBTYPE_DRUM_KIT (8. altípus)
XINPUT_DEVSUBTYPE_GUITAR_BASS (11. altípus)
XINPUT_DEVSUBTYPE_ARCADE_PAD (19. altípus)

Jegyzet

A következő HID-leképezések statikusak. Ez azt jelenti, hogy még akkor is, ha az eszköz képességeinek jelentése azt jelzi, hogy egy adott gomb vagy tengely nem támogatott, a leképezés továbbra is tartalmazza azt, de mindig ki van kapcsolva állapot vagy középérték.

Játékpad

Ez az alapértelmezett leképezés, és egy szabványos játékpad köré van tervezve, és Gamepad HID-használati típusként van közzétéve.

Vezérlő HID-használat neve Használati oldal Használati azonosító
Bal oldali bot X, Y 0x01 0x30, 0x31
Jobb oldali bot Rx, Ry 0x01 0x33, 0x34
Bal oldali eseményindító + jobb oldali trigger Z* 0x01 0x32
D-Pad Fel, Le, Balra, Jobbra Hat kapcsoló 0x01 0x39
Egy Gomb 1 0x09 0x01
B Gomb 2 0x09 0x02
X Gomb 3 0x09 0x03
Y Gomb 4 0x09 0x04
LB (bal lökhárító) 5. gomb 0x09 0x05
RB (jobb lökhárító) Gomb 6 0x09 0x06
HÁT Gomb 7 0x09 0x07
ELKEZD Gomb 8 0x09 0x08
LSB (bal oldali bot gomb) Gomb 9 0x09 0x09
RSB (jobb oldali bot gomb) Gomb 10 0x09 0x0A

Jegyzet

(*): Ez úgy van kombinálva, hogy a Z a legtöbb forgási cím által várt központozási viselkedést mutatja; Ez azt jelenti, hogy nem lehet az összes lehetséges triggerkombináció értékét látni DirectInput és HID segítségével.

Árkád bot/Árkád pad

Ez az Arcade Stick vezérlő köré tervezett leképezés, és Gamepad HID-használati típusként van közzétéve. Az Árkád pad nagyon hasonlít egy Arcade Stick, de egy kisebb formában- tényező. Ezek a kialakítások az analóg bal oldali eseményindítót és a jobb oldali triggert olyan digitális gombokra cserélik, amelyek a tengely minimális és maximális értékét jelentik.

Vezérlő HID-használat neve Használati oldal Használati azonosító
D-Pad Fel, Le, Balra, Jobbra Hat kapcsoló 0x01 0x39
Egy Gomb 1 0x09 0x01
B Gomb 2 0x09 0x02
X Gomb 3 0x09 0x03
Y Gomb 4 0x09 0x04
LB (bal lökhárító) 5. gomb 0x09 0x05
RB (jobb lökhárító) Gomb 6 0x09 0x06
HÁT Gomb 7 0x09 0x07
ELKEZD Gomb 8 0x09 0x08
Bal oldali eseményindító Gomb 9 0x09 0x09
Jobb oldali eseményindító Gomb 10 0x09 0x0A

Ezek az eszközök támogathatják vagy nem támogatják a további vezérlőket, de ezeket a HID-leképezés nem teszi elérhetővé: Left Stick, Right Stick, LSB (left stick button) és RSB (jobb oldali bot gomb).

Kerék

Ez a leképezés egy versenykerék köré van tervezve, és Gamepad HID-használati típusként érhető el.

Vezérlő HID-használat neve Használati oldal Használati azonosító
Kerék (bal oldali stick X) X 0x01 0x30
Gázpedál (jobb oldali trigger) + fékpedál (bal oldali trigger) Z* 0x01 0x32
D-Pad Fel, Le, Balra, Jobbra Hat kapcsoló 0x01 0x39
Egy Gomb 1 0x09 0x01
B Gomb 2 0x09 0x02
X Gomb 3 0x09 0x03
Y Gomb 4 0x09 0x04
LB (bal lökhárító) 5. gomb 0x09 0x05
RB (jobb lökhárító) Gomb 6 0x09 0x06
LSB (bal oldali bot gomb) Gomb 7 0x09 0x07
RSB (jobb oldali bot gomb) Gomb 8 0x09 0x08
HÁT Gomb 9 0x09 0x09
ELKEZD Gomb 10 0x09 0x0A

Jegyzet

(*): Ez úgy van kombinálva, hogy A Z a fék- és gázpedálvezérlők legtöbb címe által várt központosító viselkedést mutatja; ez azt jelenti, hogy nem lehet látni az összes lehetséges pedál kombinációs értéket DirectInput.

Flight Stick

Ez a leképezés egy repülési bot körül van kialakítva, és Joystick HID-használati típusként érhető el.

Vezérlő Használat neve Használati oldal Használati azonosító
Flight Stick (Left Stick) X, Y 0x01 0x30, 0x31
POV hat (jobb bot) Rx, Ry 0x01 0x33, 0x34
Szabályozás (jobb oldali trigger) Z 0x01 0x32
Kormány (bal oldali trigger) Rz 0x01 0x35
D-Pad Fel, Le, Balra, Jobbra Hat kapcsoló 0x01 0x39
Elsődleges fegyver (A) Gomb 1 0x09 0x01
Másodlagos fegyver (B) Gomb 2 0x09 0x02
X Gomb 3 0x09 0x03
Y Gomb 4 0x09 0x04
LB (bal lökhárító) 5. gomb 0x09 0x05
RB (jobb lökhárító) Gomb 6 0x09 0x06
HÁT Gomb 7 0x09 0x07
ELKEZD Gomb 8 0x09 0x08
LSB (bal oldali bot gomb) Gomb 9 0x09 0x09
RSB (jobb oldali bot gomb) Gomb 10 0x09 0x0A

Jegyzet

Ez a Flight Stick végleges kialakításán alapul. Mivel ez eltér a Flight Stick korai definícióitól, számos eszköz rendelkezik olyan üzemmódkapcsolóval, amely támogatja a régi és az új modellt. Ez a leképezés feltételezi az új modellt.