Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O driver para XUSB no Windows implementa a interface de modo kernel para a DLL XINPUT. Para fornecer uma boa experiência para títulos herdados que usam o DirectInput API com o dispositivo controlador comum, o driver também exporta uma interface de classe HID (Human Interface Device), 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 Universal Serial Bus (USB) originalmente proposto pela Microsoft para generalizar protocolos para dispositivos de entrada. Ele consiste em uma linguagem de descrição de código de bytes e pode expressar gamepads, mouses, joysticks, controles de acelerador e leme e controladores multieixo. Como esse padrão é tão generalizado, você pode ter dificuldade em escrever software que consuma entrada de dispositivos arbitrários. Portanto, para o DirectInput API centrado no jogo, desenvolvemos um submapeamento específico de tipos para incentivar os fabricantes de hardware a oferecer suporte por meio de seus drivers.
Importante
Você também pode acessar dispositivos de entrada HID por meio API RawInput e processar relatórios de entrada por meio de de API HID de baixo nível, mas o feedback de vibração não funcionará como com DirectInput.
Mapeamentos
O driver XUSB implementa uma interface de classe XUSB e uma interface de classe HID para dispositivos, a fim de suportar o uso de de entrada de XINPUT e DirectInput. Esse mapeamento é baseado nas informações do subtipo 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) | Vara Arcade/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) | Guitarra |
| XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE (Subtipo 7) | |
| XINPUT_DEVSUBTYPE_DRUM_KIT (Subtipo 8) | |
| XINPUT_DEVSUBTYPE_GUITAR_BASS (Subtipo 11) | |
| XINPUT_DEVSUBTYPE_ARCADE_PAD (Subtipo 19) |
Observação
Os mapeamentos HID a seguir são estáticos. Isso significa que, mesmo que o relatório de recursos do dispositivo indique que um determinado botão ou eixo não é suportado, o mapeamento ainda o incluirá, mas sempre relatará um valor de estado desativado ou central.
Gamepad
Este é o mapeamento padrão e é projetado em torno de um gamepad padrão, e é exposto como um Gamepad tipo de uso HID.
| Controlo | Nome de uso HID | Página de Utilização | ID de utilização |
|---|---|---|---|
| Vara Esquerda | X, Y | 0x01 | 0x30, 0x31 |
| Vara direita | Rx, Ry | 0x01 | 0x33, 0x34 |
| Gatilho esquerdo + gatilho direito | Z* | 0x01 | 0x32 |
| D-Pad Up, Down, Esquerda, Direita | Interruptor 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 (para-choques esquerdo) | Botão 5 | 0x09 | 0x05 |
| RB (para-choques direito) | Botão 6 | 0x09 | 0x06 |
| VOLTAR | Botão 7 | 0x09 | 0x07 |
| INÍCIO | Botão 8 | 0x09 | 0x08 |
| LSB (botão do manípulo esquerdo) | Botão 9 | 0x09 | 0x09 |
| RSB (botão direito) | Botão 10 | 0x09 | 0x0A |
Observação
(*): Isso é combinado para que Z exiba 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 possíveis de combinação de gatilho por meio DirectInput e HID.
Vara Arcade/Arcade Pad
Este é o mapeamento projetado em torno do controlador Arcade Stick, e é exposto como um Gamepad tipo de uso HID. O Arcade Pad é muito parecido com um Arcade Stick, mas em um formato menor. Esses designs substituem o gatilho esquerdo analógico e o gatilho direito por botões digitais que informam o valor mínimo e máximo do eixo.
| Controlo | Nome de uso HID | Página de Utilização | ID de utilização |
|---|---|---|---|
| D-Pad Up, Down, Esquerda, Direita | Interruptor 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 (para-choques esquerdo) | Botão 5 | 0x09 | 0x05 |
| RB (para-choques direito) | Botão 6 | 0x09 | 0x06 |
| VOLTAR | Botão 7 | 0x09 | 0x07 |
| INÍCIO | Botão 8 | 0x09 | 0x08 |
| Gatilho esquerdo | Botão 9 | 0x09 | 0x09 |
| Gatilho direito | Botão 10 | 0x09 | 0x0A |
Esses dispositivos podem ou não suportar controles adicionais, mas eles não são expostos pelo mapeamento HID: Left Stick, Right Stick, LSB (botão left stick) e RSB (right stick button).
Roda
Este mapeamento é projetado em torno de um volante de corrida e é exposto como um Gamepad tipo de uso HID.
| Controlo | Nome de uso HID | Página de Utilização | ID de utilização |
|---|---|---|---|
| Roda (Vara Esquerda X) | X | 0x01 | 0x30 |
| Pedal do acelerador (gatilho direito) + pedal do freio (gatilho esquerdo) | Z* | 0x01 | 0x32 |
| D-Pad Up, Down, Esquerda, Direita | Interruptor 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 (para-choques esquerdo) | Botão 5 | 0x09 | 0x05 |
| RB (para-choques direito) | Botão 6 | 0x09 | 0x06 |
| LSB (botão do manípulo esquerdo) | Botão 7 | 0x09 | 0x07 |
| RSB (botão direito) | Botão 8 | 0x09 | 0x08 |
| VOLTAR | Botão 9 | 0x09 | 0x09 |
| INÍCIO | Botão 10 | 0x09 | 0x0A |
Observação
(*): Isso é combinado para que Z exiba 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 pedais através DirectInput.
Vara de Voo
Esse mapeamento é projetado em torno de um manípulo de vôo e é exposto como um Joystick tipo de uso HID.
| Controlo | Nome de uso | Página de Utilização | ID de utilização |
|---|---|---|---|
| Vara de Voo (Vara Esquerda) | X, Y | 0x01 | 0x30, 0x31 |
| Chapéu POV (Vara Direita) | Rx, Ry | 0x01 | 0x33, 0x34 |
| Acelerador (Gatilho Direito) | Z | 0x01 | 0x32 |
| Leme (Gatilho Esquerdo) | RZ | 0x01 | 0x35 |
| D-Pad Up, Down, Esquerda, Direita | Interruptor 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 (para-choques esquerdo) | Botão 5 | 0x09 | 0x05 |
| RB (para-choques direito) | Botão 6 | 0x09 | 0x06 |
| VOLTAR | Botão 7 | 0x09 | 0x07 |
| INÍCIO | Botão 8 | 0x09 | 0x08 |
| LSB (botão do manípulo esquerdo) | Botão 9 | 0x09 | 0x09 |
| RSB (botão direito) | Botão 10 | 0x09 | 0x0A |
Observação
Isto é baseado no design final do Flight Stick. Como isso difere das definições iniciais do Flight Stick, muitos dispositivos têm um interruptor de modo que suporta o modelo antigo versus novo. Este mapeamento assume o novo modelo.