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

# Haptique dans GameInput

> Haptique dans GameInput

Les capacités haptiques exposées par GameInput sont intégrées au système audio de Windows pour garantir une diffusion en continu performante et robuste des données de forme d'onde vers les périphériques compatibles. Les exigences audio des périphériques haptiques sont très proches de celles d'un ensemble ordinaire de haut-parleurs de bureau ou d'un casque. GameInput utilise une combinaison de conventions et de métadonnées spécifiées par le fabricant pour associer les périphériques d'entrée à un point de terminaison audio à utiliser pour la lecture haptique.

<a id="requirementsSection" />

## Configuration requise

1. Le périphérique doit être reconnu comme une source audio dans Windows. Le support de connexion (USB, Bluetooth®, etc.) n'a pas d'importance.
2. Le périphérique ne doit pas exposer plus d'un point de terminaison haptique.
3. Le périphérique ne doit pas exposer plus de huit emplacements haptiques.
4. Le périphérique ne doit pas modifier ses capacités haptiques après avoir été connecté.
5. Le périphérique ne doit pas avoir plusieurs points de terminaison audio aux formats identiques (bits par échantillon et échantillons par seconde).
6. Le périphérique doit présenter pour son point de terminaison audio le même [ID de conteneur](https://learn.microsoft.com/windows-hardware/drivers/install/container-ids) que le reste du périphérique.
7. Le périphérique doit disposer d'une entrée de Registre permettant d'identifier explicitement le point de terminaison haptique. Le format est le suivant :

   * Les périphériques haptiques sont énumérés dans le Registre sous `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\GameInput\Devices`.
   * La clé propre au périphérique est une combinaison de l'ID du fabricant, de l'ID du produit, de la page d'utilisation et de l'ID d'utilisation, mise en forme sous la forme d'une chaîne hexadécimale.
   * `HapticSamplesPerSecond` est une valeur DWORD identifiant le nombre d'échantillons par seconde (Hz) du format du point de terminaison haptique.
   * `HapticsBitsPerSample` est une valeur DWORD identifiant le nombre de bits par échantillon (taille d'échantillon) du format du point de terminaison haptique.
   * `HapticLocations` est un tableau BYTE de GUID d'emplacements haptiques. Ce tableau doit contenir entre un et huit GUID, correspondant au mappage des canaux haptiques.

   Pour mieux illustrer cela, prenons l'exemple de périphérique suivant :

   | Champ | Valeur |
   | - | - |
   | ID du fabricant | 0x045e |
   | ID du produit | 0x1234 |
   | Page d'utilisation | 0x0001 |
   | ID d'utilisation | 0x0005 |
   | Fréquence d'échantillonnage | 0x0fa0 |
   | Taille d'échantillon | 0x0010 |
   | Emplacements haptiques | GAMEINPUT\_HAPTIC\_LOCATION\_GRIP\_LEFT, GAMEINPUT\_HAPTIC\_LOCATION\_GRIP\_RIGHT |

   L'entrée de Registre haptique associée se présenterait comme suit :

```
    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
```

### Emplacements haptiques

Actuellement, les GUID d'emplacements haptiques suivants sont définis pour une utilisation générale :

```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);
```

Notez que dans l'exemple ci-dessus, les GUID sont sérialisés dans le Registre à l'aide de leur représentation en mémoire little endian.

<a id="seealsoSection" />

## Documentation de référence de l'API

* [GameInput (contenu de l'API)](/fr/reference/input/gameinput/gameinput_members)
  * Structures
    * [GameInputHapticInfo](/fr/reference/input/gameinput/structs/gameinputhapticinfo)

## Voir aussi

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

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

[Vue d'ensemble de GameInput](/fr/build/core-features/common/input/overviews/input-overview)

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


## Related topics

- [Matériel GameInput : retour de force, haptique et capteurs](/fr/build/core-features/common/input/hardware/index.md)
- [Capteurs dans GameInput](/fr/build/core-features/common/input/hardware/input-hardware-sensors.md)
- [GameInput](/fr/reference/input/gameinput/gameinput_members.md)
- [Membres obsolètes de l'API GameInput](/fr/reference/input/gameinput/deprecated/gameinput_deprecated_members.md)
- [Notions fondamentales de GameInput](/fr/build/core-features/common/input/overviews/input-fundamentals.md)
