> ## 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 の触覚

GameInput が公開する触覚 (ハプティクス) 機能は、互換性のあるデバイスへの波形データの高性能かつ堅牢なストリーミングを保証するために、Windows オーディオシステムと統合されています。触覚対応デバイスのオーディオ要件は、通常のデスクトップスピーカーやヘッドフォンとよく似ています。GameInput は、規約と製造元指定のメタデータの組み合わせを使用して、触覚再生に使用するオーディオエンドポイントに入力デバイスを結び付けます。

<a id="requirementsSection" />

## 要件

1. デバイスは Windows でオーディオソースとして認識される必要があります。接続媒体 (USB、Bluetooth® など) は問いません。
2. デバイスは 1 つを超える触覚エンドポイントを公開してはなりません。
3. デバイスは 8 個を超える触覚位置を公開してはなりません。
4. デバイスは接続後に触覚機能を変更してはなりません。
5. デバイスは、同一のフォーマット (サンプルあたりのビット数と秒あたりのサンプル数) を持つ複数のオーディオエンドポイントを持ってはなりません。
6. デバイスは、そのオーディオエンドポイントに対して、デバイスの他の部分と同じ [container ID](https://learn.microsoft.com/windows-hardware/drivers/install/container-ids) を提示する必要があります。
7. デバイスには、触覚エンドポイントを明示的に識別するためのレジストリエントリが必要です。フォーマットは次のとおりです。

   * 触覚デバイスは `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\GameInput\Devices` にレジストリに列挙されます。
   * 特定のデバイスキーは、ベンダー ID、製品 ID、usage page、usage ID を 16 進数文字列としてフォーマットしたものの組み合わせです。
   * `HapticSamplesPerSecond` は、触覚エンドポイントフォーマットの秒あたりのサンプル数 (Hz) を識別する DWORD 値です。
   * `HapticsBitsPerSample` は、触覚エンドポイントフォーマットのサンプルビット数 (サンプルサイズ) を識別する DWORD 値です。
   * `HapticLocations` は触覚位置 GUID の BYTE 配列です。この配列には、触覚チャネルマッピングに対応する 1 個から 8 個の GUID が含まれる必要があります。

   これをより明確に示すために、次のサンプルデバイスを考えます。

   | フィールド            | 値                                                                                 |
   | ---------------- | --------------------------------------------------------------------------------- |
   | Vendor ID        | 0x045e                                                                            |
   | Product ID       | 0x1234                                                                            |
   | Usage page       | 0x0001                                                                            |
   | Usage ID         | 0x0005                                                                            |
   | Sample frequency | 0x0fa0                                                                            |
   | Sample size      | 0x0010                                                                            |
   | Haptic locations | GAMEINPUT\_HAPTIC\_LOCATION\_GRIP\_LEFT, GAMEINPUT\_HAPTIC\_LOCATION\_GRIP\_RIGHT |

   関連付けられる触覚レジストリエントリは次のようになります。

```
    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\GameInput\Devices\045E123400010005]
    "HapticSamplesPerSecond"=dword:00000fa0
    "HapticBitsPerSample"=dword:00000010
    "HapticLocations"=hex:c2,07,c7,08,bb,66,6c,40,a8,4a,df,e0,85,12,0a,92,77,0b,5a,\
    15,b2,8b,db,40,86,90,b6,d4,11,26,df,c1
```

### 触覚位置

現在、一般用途向けに次の触覚位置 GUID が定義されています。

```cpp theme={null}
// { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
DEFINE_GUID(GAMEINPUT_HAPTIC_LOCATION_NONE, 0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);

// { 0xc2, 0x07, 0xc7, 0x08, 0xbb, 0x66, 0x6c, 0x40, 0xa8, 0x4a, 0xdf, 0xe0, 0x85, 0x12, 0x0a, 0x92 }
DEFINE_GUID(GAMEINPUT_HAPTIC_LOCATION_GRIP_LEFT, 0x08c707c2, 0x66bb, 0x406c, 0xa8, 0x4a, 0xdf, 0xe0, 0x85, 0x12, 0x0a, 0x92);

// { 0x77, 0x0b, 0x5a, 0x15, 0xb2, 0x8b, 0xdb, 0x40, 0x86, 0x90, 0xb6, 0xd4, 0x11, 0x26, 0xdf, 0xc1 }
DEFINE_GUID(GAMEINPUT_HAPTIC_LOCATION_GRIP_RIGHT, 0x155a0b77, 0x8bb2, 0x40db, 0x86, 0x90, 0xb6, 0xd4, 0x11, 0x26, 0xdf, 0xc1);

// { 0x96, 0xd8, 0xe4, 0x8d, 0x59, 0x55, 0x81, 0x40, 0x86, 0xe5, 0x17, 0x24, 0xcc, 0x07, 0xc6, 0xbc }
DEFINE_GUID(GAMEINPUT_HAPTIC_LOCATION_TRIGGER_LEFT, 0x8de4d896, 0x5559, 0x4081, 0x86, 0xe5, 0x17, 0x24, 0xcc, 0x07, 0xc6, 0xbc);

// { 0x57, 0xb5, 0x0c, 0xff, 0xf5, 0x3a, 0x6b, 0x40, 0x8b, 0x0f, 0x55, 0x5a, 0x2d, 0x92, 0xa2, 0x20 }
DEFINE_GUID(GAMEINPUT_HAPTIC_LOCATION_TRIGGER_RIGHT, 0xff0cb557, 0x3af5, 0x406b, 0x8b, 0x0f, 0x55, 0x5a, 0x2d, 0x92, 0xa2, 0x20);
```

上記の例では、GUID がメモリ内のリトルエンディアン表現を使用してレジストリにシリアル化されていることに注意してください。

<a id="seealsoSection" />

## リファレンス API ドキュメント

* [GameInput (API 内容)](/reference/input/gameinput/gameinput_members)
  * 構造体
    * [GameInputHapticInfo](/reference/input/gameinput/structs/gameinputhapticinfo)

## 関連項目

[GetHapticInfo](/reference/input/gameinput/interfaces/igameinputdevice/methods/igameinputdevice_gethapticinfo)

[GameInputHapticInfo](/reference/input/gameinput/structs/gameinputhapticinfo)

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

[Windows Audio](/build/console-features/audio/overviews/audio)
