> ## 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.

# GameInput 中的传感器

> GameInput 传感器支持参考：HID 传感器堆栈要求、游戏手柄和掌机的坐标系，以及示例加速度输出的说明。

GameInput 中的传感器能力依赖 Windows 传感器堆栈。要使你的设备与该传感器堆栈兼容，请参阅：

* [HID 传感器用途](https://learn.microsoft.com/windows-hardware/design/whitepapers/hid-sensors-usages)
* [集成运动和方位传感器](https://learn.microsoft.com/windows-hardware/design/whitepapers/integrating-motion-and-orientation-sensors)
* [Waratah 示例](https://github.com/microsoft/hidtools/wiki/Waratah-Samples#accelerometer-and-gyroscope-gyrometer)

验证：

* [SensorExplorer](https://apps.microsoft.com/detail/9pgl3xpq1tpx)
* [HLK 运动传感器测试](https://learn.microsoft.com/windows-hardware/test/hlk/testref/how-to-run-hck-motion-sensor-tests)

## 坐标系

设备应以 Y 轴朝上的右手坐标系报告设备加速度。角速度遵循这些轴的右手定则。

| 游戏手柄坐标系                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 手持设备坐标系                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <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="游戏手柄上的传感器坐标系" 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="手持设备上的传感器坐标系" height="300" data-path="images/input-sensors-coordinates-handheld.png" /> |

X 轴从设备中心指向右侧。Y 轴从设备中心指向用户面部。Z 轴从设备中心指向底部。

以 g 为单位的加速度输出示例：

* 设备平放在桌面上：{0, 1, 0}
  * 静止时的角速度为 {0, 0, 0}
* 从该状态向上抬起设备：增大为 {0, 2, 0}
* 从该状态下落设备：减小为 {0, 0, 0}
* 旋转设备使顶部边缘朝上、底部边缘朝下：{0, 0, -1}
  * 在运动过程中，X 轴上的角速度变为正值：{2, 0, 0}
* 恢复平放。
* 旋转设备使左边缘朝上、右边缘朝下：{-1, 0, 0}
  * 在运动过程中，Z 轴上的角速度变为负值：{0, 0, -2}
* 恢复平放。
* 顺时针旋转设备（与右手定则方向相反）
  * 在运动过程中，Y 轴上的角速度变为负值：{0, -2, 0}

## 备注

### 设备振动产生的噪声

设备中的低频震动或嗡嗡声（例如触觉反馈引起的）可能会引入陀螺仪噪声并影响精度。

* 可能的硬件缓解措施：通过有意放置传感器或在传感器周围填充减振材料，将传感器与触觉源在机械上隔离
* 可能的软件缓解措施：使用低通滤波器

### 注册表项

\[!IMPORTANT]
如果你的设备必须通过 [Windows 硬件质量实验室认证](https://learn.microsoft.com/windows-hardware/test/hlk/testref/how-to-run-hck-motion-sensor-tests)，请添加下述注册表项。GameInput 会将设备的 WHQL 兼容输出转换为符合游戏开发人员预期的输出。

具有供应商 ID (VID) **VVVV**、产品 ID (PID) **PPPP**、用途页 **UUUU** 和用途 ID **XXXX** 的设备的映射，将从注册表以下位置读取：

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

仅支持通用用途页 (0x0001) 以及用途 ID 游戏杆 (0x0004) 和游戏手柄 (0x0005)。

| 值名称             | 值类型   | 是否必需 | 说明                                           | 取值   |
| --------------- | ----- | ---- | -------------------------------------------- | ---- |
| IsWhqlCertified | DWORD | 否    | 指示 GameInput 将来自 WHQL 认证设备的传感器输出转换为与所需坐标系匹配。 | 0, 1 |

\[!TIP]
以下子项面向已上市设备的制造商。如果设备尚未发布，应正确报告[上文所述坐标系](#coordinate-system)，且应能通过相关测试。

| 值名称                           | 值类型   | 是否必需 | 说明                                            | 取值      |
| ----------------------------- | ----- | ---- | --------------------------------------------- | ------- |
| SensorsAxisX                  | SZ    | 否    | 指示 GameInput 从设备的传感器报告中取出 X 轴数据，并按该值指定的轴进行标注。 | X, Y, Z |
| SensorsAxisY                  | SZ    | 否    | 指示 GameInput 从设备的传感器报告中取出 Y 轴数据，并按该值指定的轴进行标注。 | X, Y, Z |
| SensorsAxisZ                  | SZ    | 否    | 指示 GameInput 从设备的传感器报告中取出 Z 轴数据，并按该值指定的轴进行标注。 | X, Y, Z |
| SensorsInvertAccelerationX    | DWORD | 否    | 指示 GameInput 反转 X 轴加速度的正负号。在上述轴变换后应用。         | 0, 1    |
| SensorsInvertAccelerationY    | DWORD | 否    | 指示 GameInput 反转 Y 轴加速度的正负号。在上述轴变换后应用。         | 0, 1    |
| SensorsInvertAccelerationZ    | DWORD | 否    | 指示 GameInput 反转 Z 轴加速度的正负号。在上述轴变换后应用。         | 0, 1    |
| SensorsInvertAngularVelocityX | DWORD | 否    | 指示 GameInput 反转绕 X 轴角速度的正负号。在上述轴变换后应用。        | 0, 1    |
| SensorsInvertAngularVelocityY | DWORD | 否    | 指示 GameInput 反转绕 Y 轴角速度的正负号。在上述轴变换后应用。        | 0, 1    |
| SensorsInvertAngularVelocityZ | DWORD | 否    | 指示 GameInput 反转绕 Z 轴角速度的正负号。在上述轴变换后应用。        | 0, 1    |

<a id="seealsoSection" />

## 参考 API 文档

* [GameInput（API 目录）](/reference/input/gameinput/gameinput_members)
  * 结构体
    * [GameInputSensorsInfo](/reference/input/gameinput/structs/gameinputsensorsinfo)
    * [GameInputSensorsState](/reference/input/gameinput/structs/gameinputsensorsstate)

## 另请参阅

[GameInputSensorsInfo](/reference/input/gameinput/structs/gameinputsensorsinfo)

[GameInputSensorsState](/reference/input/gameinput/structs/gameinputsensorsstate)

[GameInput 概述](/build/core-features/common/input/overviews/input-overview)

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


## Related topics

- [GameInput 硬件：力反馈、触觉与传感器](/zh-CN/build/core-features/common/input/hardware/index.md)
- [GameInput 中的触觉反馈](/zh-CN/build/core-features/common/input/hardware/input-hardware-haptics.md)
- [GameInputTouchSensorInfo](/zh-CN/reference/input/gameinput/deprecated/structs/gameinputtouchsensorinfo.md)
- [GameInputMotionAccuracy](/zh-CN/reference/input/gameinput/deprecated/enums/gameinputmotionaccuracy.md)
- [GameInput](/zh-CN/reference/input/gameinput/gameinput_members.md)
