Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O driver para XUSB no Windows implementa a interface do modo kernel para a DLL XINPUT. Para fornecer uma boa experiência para títulos herdados que usam a API DirectInput com o dispositivo controlador comum, o driver também exporta uma interface de classe HID (Dispositivo de Interface Humana), que é captada pelo DirectInput. Escolhemos o mapeamento de XUSB para HID com base no comportamento típico em um conjunto de aplicativos de jogos para a versão original do XINPUT e atualizamos o mapeamento para subtipos mais recentes. Este tópico descreve o mapeamento.
Dispositivo de interface humana (HID)
O padrão HID é um padrão do comitê do Barramento Serial Universal (USB) originalmente proposto pela Microsoft para generalizar protocolos para dispositivos de entrada. Ele consiste em uma linguagem de descrição de código de byte e pode expressar gamepads, mouses, joysticks, controles de acelerador e leme e controladores de vários eixos. Como esse padrão é tão generalizado, você pode ter dificuldade para escrever um software que consome a entrada de dispositivos arbitrários. Portanto, para o DirectInput API centrada no jogo, desenvolvemos um subpasta específico de tipos para incentivar os fabricantes de hardware a dar suporte por meio de seus drivers.
Importante
Você também pode acessar dispositivos de entrada HID por meio de de API rawInput e processar relatórios de entrada por meio de relatórios de entrada de baixo nível de API HID, mas os comentários de vibração não funcionarão como com DirectInput.
Mapeamentos
O driver XUSB implementa uma interface de classe XUSB e uma interface de classe HID para dispositivos, a fim de dar suporte ao uso do XINPUT e DirectInput. Esse mapeamento é baseado nas informações de subtipo do XUSB. O driver implementa quatro grupos distintos de mapeamentos.
| Subtipo XUSB | Mapeamento |
|---|---|
| XINPUT_DEVSUBTYPE_GAMEPAD (Subtipo 1) | Gamepad |
| XINPUT_DEVSUBTYPE_WHEEL (Subtipo 2) | Roda |
| XINPUT_DEVSUBTYPE_ARCADE_STICK (Subtipo 3) | Arcade Stick/Arcade Pad |
| XINPUT_DEVSUBTYPE_FLIGHT_STICK (Subtipo 4) | Vara de Voo |
| XINPUT_DEVSUBTYPE_DANCE_PAD (Subtipo 5) | Padrão para qualquer novo subtipo |
| XINPUT_DEVSUBTYPE_GUITAR (Subtipo 6) | Violão |
| XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE (Subtipo 7) | |
| XINPUT_DEVSUBTYPE_DRUM_KIT (Subtipo 8) | |
| XINPUT_DEVSUBTYPE_GUITAR_BASS (Subtipo 11) | |
| XINPUT_DEVSUBTYPE_ARCADE_PAD (Subtipo 19) |
Nota
Os mapeamentos hid a seguir são estáticos. Isso significa que, mesmo que o relatório de funcionalidades do dispositivo indique que não há suporte para um determinado botão ou eixo, o mapeamento ainda o incluirá, mas sempre relatará um valor de estado ou centro desativado.
Gamepad
Esse é o mapeamento padrão e foi projetado em torno de um gamepad padrão e é exposto como um tipo de uso Gamepad HID.
| Controle | Nome de uso hid | Página uso | ID de uso |
|---|---|---|---|
| Vara Esquerda | X, Y | 0x01 | 0x30, 0x31 |
| Pau direito | Rx, Ry | 0x01 | 0x33, 0x34 |
| Gatilho esquerdo + gatilho à direita | Z* | 0x01 | 0x32 |
| D-Pad Up, Down, Left, Right | Comutador de Chapéu | 0x01 | 0x39 |
| Um | Botão 1 | 0x09 | 0x01 |
| B | Botão 2 | 0x09 | 0x02 |
| X | Botão 3 | 0x09 | 0x03 |
| Y | Botão 4 | 0x09 | 0x04 |
| LB (pára-choques esquerdo) | Botão 5 | 0x09 | 0x05 |
| RB (pára-choques à direita) | Botão 6 | 0x09 | 0x06 |
| VOLTAR | Botão 7 | 0x09 | 0x07 |
| COMEÇAR | Botão 8 | 0x09 | 0x08 |
| LSB (botão de vara esquerda) | Botão 9 | 0x09 | 0x09 |
| RSB (botão de vara direita) | Botão 10 | 0x09 | 0x0A |
Nota
(*): Isso é combinado para que Z exponha o comportamento de centralização esperado pela maioria dos títulos para rotação; isso significa que não é possível ver todos os valores de combinação de gatilho possíveis por meio de DirectInput e HID.
Arcade Stick/Arcade Pad
Esse é o mapeamento projetado em torno do controlador Arcade Stick e é exposto como um tipo de uso de HID gamepad. O Arcade Pad é muito parecido com um Arcade Stick, mas em um fator de forma menor. Esses designs substituem o gatilho esquerdo analógico e o gatilho direito por botões digitais que relatam o valor mínimo e máximo do eixo.
| Controle | Nome de uso hid | Página uso | ID de uso |
|---|---|---|---|
| D-Pad Up, Down, Left, Right | Comutador de Chapéu | 0x01 | 0x39 |
| Um | Botão 1 | 0x09 | 0x01 |
| B | Botão 2 | 0x09 | 0x02 |
| X | Botão 3 | 0x09 | 0x03 |
| Y | Botão 4 | 0x09 | 0x04 |
| LB (pára-choques esquerdo) | Botão 5 | 0x09 | 0x05 |
| RB (pára-choques à direita) | Botão 6 | 0x09 | 0x06 |
| VOLTAR | Botão 7 | 0x09 | 0x07 |
| COMEÇAR | Botão 8 | 0x09 | 0x08 |
| Gatilho à esquerda | Botão 9 | 0x09 | 0x09 |
| Gatilho à direita | Botão 10 | 0x09 | 0x0A |
Esses dispositivos podem ou não dar suporte a controles adicionais, mas não são expostos pelo mapeamento hid: Left Stick, Right Stick, LSB (botão de vara esquerda) e RSB (botão de vara direita).
Roda
Esse mapeamento foi projetado em torno de uma roda de corrida e é exposto como um tipo de uso de HID gamepad.
| Controle | Nome de uso hid | Página uso | ID de uso |
|---|---|---|---|
| Roda (Left Stick X) | X | 0x01 | 0x30 |
| Pedal do Acelerador (Gatilho à Direita) + Pedal de Freio (Gatilho à Esquerda) | Z* | 0x01 | 0x32 |
| D-Pad Up, Down, Left, Right | Comutador de Chapéu | 0x01 | 0x39 |
| Um | Botão 1 | 0x09 | 0x01 |
| B | Botão 2 | 0x09 | 0x02 |
| X | Botão 3 | 0x09 | 0x03 |
| Y | Botão 4 | 0x09 | 0x04 |
| LB (pára-choques esquerdo) | Botão 5 | 0x09 | 0x05 |
| RB (pára-choques à direita) | Botão 6 | 0x09 | 0x06 |
| LSB (botão de vara esquerda) | Botão 7 | 0x09 | 0x07 |
| RSB (botão de vara direita) | Botão 8 | 0x09 | 0x08 |
| VOLTAR | Botão 9 | 0x09 | 0x09 |
| COMEÇAR | Botão 10 | 0x09 | 0x0A |
Nota
(*): Isso é combinado para que Z exponha o comportamento de centralização esperado pela maioria dos títulos para os controles de freio e acelerador; isso significa que não é possível ver todos os valores possíveis de combinação de pedal por meio de DirectInput.
Vara de Voo
Esse mapeamento foi projetado em torno de uma vara de voo e é exposto como um joystick tipo de uso HID.
| Controle | Nome de uso | Página uso | ID de uso |
|---|---|---|---|
| Flight Stick (Left Stick) | X, Y | 0x01 | 0x30, 0x31 |
| Chapéu POV (pau direito) | Rx, Ry | 0x01 | 0x33, 0x34 |
| Limitação (gatilho à direita) | Z | 0x01 | 0x32 |
| Leme (gatilho esquerdo) | Rz | 0x01 | 0x35 |
| D-Pad Up, Down, Left, Right | Comutador de Chapéu | 0x01 | 0x39 |
| Arma Primária (A) | Botão 1 | 0x09 | 0x01 |
| Arma Secundária (B) | Botão 2 | 0x09 | 0x02 |
| X | Botão 3 | 0x09 | 0x03 |
| Y | Botão 4 | 0x09 | 0x04 |
| LB (pára-choques esquerdo) | Botão 5 | 0x09 | 0x05 |
| RB (pára-choques à direita) | Botão 6 | 0x09 | 0x06 |
| VOLTAR | Botão 7 | 0x09 | 0x07 |
| COMEÇAR | Botão 8 | 0x09 | 0x08 |
| LSB (botão de vara esquerda) | Botão 9 | 0x09 | 0x09 |
| RSB (botão de vara direita) | Botão 10 | 0x09 | 0x0A |
Nota
Isso é baseado no design final do Flight Stick. Como isso difere das definições anteriores do Flight Stick, muitos dispositivos têm uma opção de modo que dá suporte ao modelo antigo versus novo. Esse mapeamento pressupõe o novo modelo.