> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sensores no GameInput

> Referência para o suporte a sensores do GameInput: requisitos da pilha de sensores HID, sistemas de coordenadas de gamepad e de dispositivo portátil e exemplo de saída de aceleração.

Os recursos de sensores no GameInput dependem da pilha de sensores do Windows. Para tornar seu dispositivo compatível com essa pilha
de sensores, consulte:

* [Usos de sensores HID](https://learn.microsoft.com/windows-hardware/design/whitepapers/hid-sensors-usages)
* [Integração de sensores de movimento e orientação](https://learn.microsoft.com/windows-hardware/design/whitepapers/integrating-motion-and-orientation-sensors)
* [Exemplos do Waratah](https://github.com/microsoft/hidtools/wiki/Waratah-Samples#accelerometer-and-gyroscope-gyrometer)

Validação:

* [SensorExplorer](https://apps.microsoft.com/detail/9pgl3xpq1tpx)
* [Testes de sensor de movimento do HLK](https://learn.microsoft.com/windows-hardware/test/hlk/testref/how-to-run-hck-motion-sensor-tests)

## Sistema de coordenadas

Os dispositivos devem relatar a aceleração do dispositivo como um sistema destro com Y para cima. A velocidade angular segue a regra da mão direita
em torno desses eixos.

| Sistema de coordenadas do gamepad | Sistema de coordenadas do dispositivo portátil |
| - | - |
| <img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/input-sensors-coordinates-gamepad.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=cd864c92015f0cc7389d8c43e42e71af" alt="Sistema de coordenadas dos sensores mostrado em um gamepad" height="300" data-path="images/input-sensors-coordinates-gamepad.png" /> | <img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/input-sensors-coordinates-handheld.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=4d9b1548f5b414ab28b2772c4d937c80" alt="Sistema de coordenadas dos sensores mostrado em um dispositivo portátil" height="300" data-path="images/input-sensors-coordinates-handheld.png" /> |

O eixo X vai do centro do dispositivo em direção à direita. O eixo Y vai do centro do dispositivo em direção
ao rosto do usuário. O eixo Z vai do centro do dispositivo para fora, pela parte inferior.

Exemplo de saída de aceleração, em g:

* Dispositivo deitado sobre a mesa: {0, 1, 0}
  * A velocidade angular em repouso é {0, 0, 0}
* A partir daí, levante o dispositivo: aumenta {0, 2, 0}
* A partir daí, solte o dispositivo: diminui {0, 0, 0}
* Gire o dispositivo de modo que a borda superior fique no ar e a borda inferior fique na superfície: {0, 0, -1}
  * Durante o movimento, a velocidade angular X se torna positiva: {2, 0, 0}
* Volte à posição plana.
* Gire o dispositivo de modo que a borda esquerda fique no ar e a borda direita fique na superfície: {-1, 0, 0}
  * Durante o movimento, a velocidade angular Z se torna negativa: {0, 0, -2}
* Volte à posição plana.
* Gire o dispositivo no sentido horário (oposto à regra da mão direita)
  * Durante o movimento, a velocidade angular Y se torna negativa: {0, -2, 0}

## Comentários

### Ruído causado por vibrações do dispositivo

Vibrações ou zumbidos de baixa frequência no dispositivo (como os causados pela háptica) podem induzir ruído no girômetro e
afetar a precisão.

* Possível atenuação por hardware: isolamento mecânico do sensor em relação à háptica, por meio do posicionamento intencional do sensor
  ou do envolvimento do sensor com material de amortecimento de vibrações
* Possível atenuação por software: uso de um filtro passa-baixa

### Chaves do registro

\[!IMPORTANT]
Se o seu dispositivo precisar ser aprovado na [certificação do Windows Hardware Quality Lab](https://learn.microsoft.com/windows-hardware/test/hlk/testref/how-to-run-hck-motion-sensor-tests),
adicione a chave do registro descrita abaixo. O GameInput transformará a saída compatível com WHQL do dispositivo para corresponder à saída
esperada pelos desenvolvedores de jogos.

Os mapeamentos de um dispositivo com Vendor ID (VID) **VVVV**, Product ID (PID) **PPPP**, Usage Page **UUUU** e Usage ID
**XXXX** serão lidos deste local no registro:

```
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\GameInput\Devices\VVVVPPPPUUUUXXXX
```

Somente a página de uso Generic (0x0001) e as IDs de uso Joystick (0x0004) e Gamepad (0x0005) são compatíveis.

| Nome do valor | Tipo de valor | Obrigatório? | Informações | Valores |
| - | - | - | - | - |
| IsWhqlCertified | DWORD | Não | Instrui o GameInput a transformar as saídas de sensores de um dispositivo com certificação WHQL para corresponder ao sistema de coordenadas desejado. | 0, 1 |

\[!TIP]
As subchaves a seguir destinam-se a fabricantes de dispositivos que já foram lançados no mercado. Se o dispositivo ainda não
foi lançado, ele deve relatar corretamente o [sistema de coordenadas descrito acima](#coordinate-system) e deve ser aprovado nos testes relevantes.

| Nome do valor | Tipo de valor | Obrigatório? | Informações | Valores | |
| - | - | - | - | - | - |
|  | SensorsAxisX | SZ | Não | Instrui o GameInput a obter o eixo X do relatório de sensores do dispositivo e rotulá-lo com o eixo indicado pelo valor. | X, Y, Z |
| SensorsAxisY | SZ | Não | Instrui o GameInput a obter o eixo Y do relatório de sensores do dispositivo e rotulá-lo com o eixo indicado pelo valor. | X, Y, Z | |
| SensorsAxisZ | SZ | Não | Instrui o GameInput a obter o eixo Z do relatório de sensores do dispositivo e rotulá-lo com o eixo indicado pelo valor. | X, Y, Z | |
| SensorsInvertAccelerationX | DWORD | Não | Instrui o GameInput a inverter o sinal da aceleração no eixo X. Aplicado após a transformação de eixo acima. | 0, 1 | |
| SensorsInvertAccelerationY | DWORD | Não | Instrui o GameInput a inverter o sinal da aceleração no eixo Y. Aplicado após a transformação de eixo acima. | 0, 1 | |
| SensorsInvertAccelerationZ | DWORD | Não | Instrui o GameInput a inverter o sinal da aceleração no eixo Z. Aplicado após a transformação de eixo acima. | 0, 1 | |
| SensorsInvertAngularVelocityX | DWORD | Não | Instrui o GameInput a inverter o sinal da velocidade angular em torno do eixo X. Aplicado após a transformação de eixo acima. | 0, 1 | |
| SensorsInvertAngularVelocityY | DWORD | Não | Instrui o GameInput a inverter o sinal da velocidade angular em torno do eixo Y. Aplicado após a transformação de eixo acima. | 0, 1 | |
| SensorsInvertAngularVelocityZ | DWORD | Não | Instrui o GameInput a inverter o sinal da velocidade angular em torno do eixo Z. Aplicado após a transformação de eixo acima. | 0, 1 | |

<a id="seealsoSection" />

## Documentação de referência da API

* [GameInput (conteúdo da API)](/pt-BR/reference/input/gameinput/gameinput_members)
  * Estruturas
    * [GameInputSensorsInfo](/pt-BR/reference/input/gameinput/structs/gameinputsensorsinfo)
    * [GameInputSensorsState](/pt-BR/reference/input/gameinput/structs/gameinputsensorsstate)

## Confira também

[GameInputSensorsInfo](/pt-BR/reference/input/gameinput/structs/gameinputsensorsinfo)

[GameInputSensorsState](/pt-BR/reference/input/gameinput/structs/gameinputsensorsstate)

[Visão geral do GameInput](/pt-BR/build/core-features/common/input/overviews/input-overview)

[Windows.Devices.Sensors](https://learn.microsoft.com/uwp/api/windows.devices.sensors)


## Related topics

- [Hardware do GameInput: force feedback, háptica e sensores](/pt-BR/build/core-features/common/input/hardware/index.md)
- [Perguntas frequentes sobre o GameInput](/pt-BR/build/core-features/common/input/overviews/input-faq.md)
- [GameInput para desenvolvedores de hardware](/pt-BR/build/core-features/common/input/hardware/input-hardware-topics.md)
- [GameInput](/pt-BR/reference/input/gameinput/gameinput_members.md)
- [Combinação do GameInput com pilhas de entrada existentes](/pt-BR/build/core-features/common/input/porting/input-porting.md)
