> ## 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 Sensors Usages](https://learn.microsoft.com/windows-hardware/design/whitepapers/hid-sensors-usages)
* [Integrating Motion and Orientation Sensors](https://learn.microsoft.com/windows-hardware/design/whitepapers/integrating-motion-and-orientation-sensors)
* [Waratah samples](https://github.com/microsoft/hidtools/wiki/Waratah-Samples#accelerometer-and-gyroscope-gyrometer)

検証:

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

## 座標系

デバイスは Y-up の右手座標系としてデバイスの加速度を報告する必要があります。角速度はこれらの軸まわりの右手の法則に従います。

| ゲームパッドの座標系                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | ハンドヘルドの座標系                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <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 Hardware Quality Lab certification](https://learn.microsoft.com/windows-hardware/test/hlk/testref/how-to-run-hck-motion-sensor-tests) に合格する必要がある場合は、以下に説明するレジストリキーを追加してください。GameInput はデバイスの WHQL 準拠出力を、ゲーム開発者向けに期待される出力に一致するように変換します。

Vendor ID (VID) **VVVV**、Product ID (PID) **PPPP**、Usage Page **UUUU**、Usage ID **XXXX** を持つデバイスのマッピングは、レジストリ内のこの場所から読み取られます。

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

Generic usage page (0x0001) と、usage ID Joystick (0x0004) および Gamepad (0x0005) のみがサポートされます。

| 値名              | 値の型   | 必須? | 情報                                                         | 値    |
| --------------- | ----- | --- | ---------------------------------------------------------- | ---- |
| IsWhqlCertified | DWORD | いいえ | WHQL 認定デバイスのセンサー出力を、目的の座標系に一致するように変換するよう GameInput に指示します。 | 0, 1 |

\[!TIP]
次のサブキーは、既に市場に出荷されているデバイスの製造元向けです。デバイスがまだリリースされていない場合は、[上記で説明した座標系](#coordinate-system) を正しく報告し、関連するテストに合格する必要があります。

| 値名                            | 値の型   | 必須? | 情報                                                          | 値       |
| ----------------------------- | ----- | --- | ----------------------------------------------------------- | ------- |
| SensorsAxisX                  | SZ    | いいえ | デバイスのセンサーレポートから X 軸を取得し、値で示される軸にラベル付けするよう GameInput に指示します。 | X, Y, Z |
| SensorsAxisY                  | SZ    | いいえ | デバイスのセンサーレポートから Y 軸を取得し、値で示される軸にラベル付けするよう GameInput に指示します。 | X, Y, Z |
| SensorsAxisZ                  | SZ    | いいえ | デバイスのセンサーレポートから Z 軸を取得し、値で示される軸にラベル付けするよう GameInput に指示します。 | X, Y, Z |
| SensorsInvertAccelerationX    | DWORD | いいえ | X 軸の加速度の符号を反転するよう GameInput に指示します。上記の軸変換の後に適用されます。         | 0, 1    |
| SensorsInvertAccelerationY    | DWORD | いいえ | Y 軸の加速度の符号を反転するよう GameInput に指示します。上記の軸変換の後に適用されます。         | 0, 1    |
| SensorsInvertAccelerationZ    | DWORD | いいえ | Z 軸の加速度の符号を反転するよう GameInput に指示します。上記の軸変換の後に適用されます。         | 0, 1    |
| SensorsInvertAngularVelocityX | DWORD | いいえ | X 軸まわりの角速度の符号を反転するよう GameInput に指示します。上記の軸変換の後に適用されます。      | 0, 1    |
| SensorsInvertAngularVelocityY | DWORD | いいえ | Y 軸まわりの角速度の符号を反転するよう GameInput に指示します。上記の軸変換の後に適用されます。      | 0, 1    |
| SensorsInvertAngularVelocityZ | DWORD | いいえ | Z 軸まわりの角速度の符号を反転するよう GameInput に指示します。上記の軸変換の後に適用されます。      | 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 ハードウェア: フォース フィードバック、ハプティクス、センサー](/ja-jp/build/core-features/common/input/hardware/index.md)
- [GameInput のよくある質問](/ja-jp/build/core-features/common/input/overviews/input-faq.md)
- [GameInputTouchSensorInfo](/ja-jp/reference/input/gameinput/deprecated/structs/gameinputtouchsensorinfo.md)
- [GameInputMotionAccuracy](/ja-jp/reference/input/gameinput/deprecated/enums/gameinputmotionaccuracy.md)
- [GameInputTouchState](/ja-jp/reference/input/gameinput/deprecated/structs/gameinputtouchstate.md)
