Sdílet prostřednictvím


Zařízení DirectInput a XUSB

Ovladač pro XUSB ve Windows implementuje rozhraní režimu jádra pro XINPUT DLL. Pro zajištění dobrého prostředí pro starší verze názvů, které používají rozhraní API DirectInput s běžným zařízením kontroleru, ovladač také exportuje rozhraní třídy HID (Human Interface Device), které je vyzvednuto rozhraním DirectInput. Zvolili jsme mapování XUSB na HID na základě typického chování v sadě herních aplikací pro původní verzi XINPUT a aktualizovali jsme mapování pro novější podtypy. Toto téma popisuje mapování.

Zařízení s lidským rozhraním (HID)

Standard HID je standard z výboru Pro univerzální sériovou sběrnici (USB), který původně navrhl Microsoft, aby zobecněl protokoly pro vstupní zařízení. Skládá se z jazyka popisu bajtového kódu a může vyjádřit gamepady, myši, joysticky, omezení a ovládání kormidla a ovladače s více osami. Vzhledem k tomu, že tento standard je tak zobecněný, může být obtížné psát software, který spotřebovává vstup z libovolných zařízení. Proto jsme pro rozhraní API pro DirectInput vyvinuli specifické dílčí mapování typů, abychom podpořili výrobu hardwaru, která podporuje prostřednictvím jejich ovladačů.

Důležitý

Ke vstupním zařízením HID můžete přistupovat také prostřednictvím rozhraní RawInput API a zpracovávat vstupní sestavy prostřednictvím rozhraní API nízké úrovně rozhraní HID, ale zpětná vazba k vibracím nebude fungovat stejně jako u DirectInput.

Mapování

Ovladač XUSB implementuje rozhraní třídy XUSB i rozhraní třídy HID pro zařízení, aby podporoval jak XINPUT, tak DirectInput využití. Toto mapování vychází z informací podtypu XUSB. Ovladač implementuje čtyři různé skupiny mapování.

Podtyp XUSB Mapující
XINPUT_DEVSUBTYPE_GAMEPAD (podtyp 1) Gamepad
XINPUT_DEVSUBTYPE_WHEEL (podtyp 2) Kolo
XINPUT_DEVSUBTYPE_ARCADE_STICK (podtyp 3) Arkádová stick / Arkádová podložka
XINPUT_DEVSUBTYPE_FLIGHT_STICK (podtyp 4) Flight Stick
XINPUT_DEVSUBTYPE_DANCE_PAD (podtyp 5) Výchozí hodnota pro jakýkoli nový podtyp
XINPUT_DEVSUBTYPE_GUITAR (podtyp 6) Kytara
XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE (podtyp 7)
XINPUT_DEVSUBTYPE_DRUM_KIT (podtyp 8)
XINPUT_DEVSUBTYPE_GUITAR_BASS (podtyp 11)
XINPUT_DEVSUBTYPE_ARCADE_PAD (podtyp 19)

Poznámka

Následující mapování HID jsou statická. To znamená, že i když sestava schopností zařízení indikuje, že konkrétní tlačítko nebo osa nejsou podporované, mapování ho bude i nadále obsahovat, ale vždy hlásí vypnutou hodnotu stavu nebo středu.

Gamepad

Toto je výchozí mapování a je navržené kolem standardního herního panelu a je vystaveno jako Gamepad typ použití HID.

Řízení Název použití HID Stránka Využití ID využití
Levá hůl X, Y 0x01 0x30, 0x31
Pravá hůl Rx, Ry 0x01 0x33, 0x34
Levá aktivační událost + pravá aktivační událost Z* 0x01 0x32
D-Pad Nahoru, Dolů, Vlevo, Vpravo Spínač klobouku 0x01 0x39
A Tlačítko 1 0x09 0x01
B Tlačítko 2 0x09 0x02
X Tlačítko 3 0x09 0x03
Y Tlačítko 4 0x09 0x04
LB (levý náraz) Tlačítko 5 0x09 0x05
RB (pravý náraz) Tlačítko 6 0x09 0x06
HŘBET Tlačítko 7 0x09 0x07
ZAČÍNAT Tlačítko 8 0x09 0x08
LSB (levé tlačítko stiskem) Tlačítko 9 0x09 0x09
RSB (tlačítko pravého přichytáku) Tlačítko 10 0x09 0x0A

Poznámka

(*): Toto se zkombinuje tak, aby Z vykazuje středové chování očekávané většinou názvů pro otáčení; to znamená, že není možné zobrazit všechny možné hodnoty kombinace triggerů prostřednictvím DirectInput a HID.

Arkádová stick / Arkádová podložka

Toto je mapování navržené kolem ovladače Arcade Stick a je vystaveno jako Gamepad typ použití HID. Arkádový Pad je velmi podobný Arkádové stick, ale v menším tvaru. Tyto návrhy nahrazují analogovou levou aktivační událost a aktivační událost vpravo digitálními tlačítky, která hlásí minimální a maximální hodnotu osy.

Řízení Název použití HID Stránka Využití ID využití
D-Pad Nahoru, Dolů, Vlevo, Vpravo Spínač klobouku 0x01 0x39
A Tlačítko 1 0x09 0x01
B Tlačítko 2 0x09 0x02
X Tlačítko 3 0x09 0x03
Y Tlačítko 4 0x09 0x04
LB (levý náraz) Tlačítko 5 0x09 0x05
RB (pravý náraz) Tlačítko 6 0x09 0x06
HŘBET Tlačítko 7 0x09 0x07
ZAČÍNAT Tlačítko 8 0x09 0x08
Levá aktivační událost Tlačítko 9 0x09 0x09
Pravá aktivační událost Tlačítko 10 0x09 0x0A

Tato zařízení mohou nebo nemusí podporovat další ovládací prvky, ale nejsou vystaveny mapováním HID: Left Stick, Right Stick, LSB (tlačítko vlevo) a RSB (tlačítko pravého tlačítka).

Kolo

Toto mapování je navržené kolem závodního kola a je vystaveno jako typ použití Gamepad HID.

Řízení Název použití HID Stránka Využití ID využití
Kolečko (levá hůl X) X 0x01 0x30
Pedál akcelerátoru (pravý trigger) + brzdový pedál (levý trigger) Z* 0x01 0x32
D-Pad Nahoru, Dolů, Vlevo, Vpravo Spínač klobouku 0x01 0x39
A Tlačítko 1 0x09 0x01
B Tlačítko 2 0x09 0x02
X Tlačítko 3 0x09 0x03
Y Tlačítko 4 0x09 0x04
LB (levý náraz) Tlačítko 5 0x09 0x05
RB (pravý náraz) Tlačítko 6 0x09 0x06
LSB (levé tlačítko stiskem) Tlačítko 7 0x09 0x07
RSB (tlačítko pravého přichytáku) Tlačítko 8 0x09 0x08
HŘBET Tlačítko 9 0x09 0x09
ZAČÍNAT Tlačítko 10 0x09 0x0A

Poznámka

(*): Toto se zkombinuje tak, aby Z vykazuje středové chování očekávané většinou názvů ovládacích prvků brzdy a akcelerátoru; to znamená, že není možné vidět všechny možné hodnoty kombinace pedálů prostřednictvím DirectInput.

Flight Stick

Toto mapování je navrženo kolem letové hůlky a je vystaveno jako Joystick typ použití HID.

Řízení Název využití Stránka Využití ID využití
Flight Stick (Levá hůl) X, Y 0x01 0x30, 0x31
POV Hat (pravý hůl) Rx, Ry 0x01 0x33, 0x34
Omezení (aktivační událost vpravo) Z 0x01 0x32
Kormidlo (levý trigger) Rz 0x01 0x35
D-Pad Nahoru, Dolů, Vlevo, Vpravo Spínač klobouku 0x01 0x39
Primární zbraň (A) Tlačítko 1 0x09 0x01
Sekundární zbraň (B) Tlačítko 2 0x09 0x02
X Tlačítko 3 0x09 0x03
Y Tlačítko 4 0x09 0x04
LB (levý náraz) Tlačítko 5 0x09 0x05
RB (pravý náraz) Tlačítko 6 0x09 0x06
HŘBET Tlačítko 7 0x09 0x07
ZAČÍNAT Tlačítko 8 0x09 0x08
LSB (levé tlačítko stiskem) Tlačítko 9 0x09 0x09
RSB (tlačítko pravého přichytáku) Tlačítko 10 0x09 0x0A

Poznámka

Vychází z konečného návrhu Flight Stick. Vzhledem k tomu, že se liší od raných definic Flight Stick, mnoho zařízení má přepínač režimu, který podporuje starý a nový model. Toto mapování předpokládá nový model.