Skip to main content
Chaque appareil d’entrée physique connecté au système est représenté par l’interface IGameInputDevice. Comme les lectures, les instances d’appareils sont des singletons à décompte de références, ce qui signifie que les pointeurs d’interface peuvent être comparés pour vérifier leur égalité. La majeure partie du code d’entrée d’une application typique n’utilise les instances d’appareils que de cette façon, comme une sorte d’identificateur d’appareil lors de l’appel d’autres API (par exemple, comme filtre lors de la récupération des lectures). Les méthodes de l’interface IGameInputDevice ne sont généralement appelées que lorsqu’une application doit interagir directement avec un appareil précis d’une manière ou d’une autre. La raison la plus courante est l’envoi de commandes haptiques ou de retour de force à l’appareil. Toutefois, cette interface expose aussi les propriétés de l’appareil et donne accès aux E/S de bas niveau de l’appareil, ce qui peut être nécessaire pour du code plus avancé.

Propriétés de l’appareil

Les applications qui doivent connaître des détails précis sur un appareil peuvent accéder à la structure GameInputDeviceInfo de l’appareil. Cette structure contient une foule d’informations sur l’appareil, mais il y a quelques points à comprendre concernant son utilisation. Les informations sur l’appareil peuvent être volumineuses, parfois 10 Ko ou plus. Pour des raisons d’efficacité, l’API GameInput ne fait pas de copie des données de l’appareil, mais accorde plutôt temporairement aux applications un accès direct aux données stockées à l’interne dans GameInput. Cette approche favorise le code à haute performance en évitant les allocations de mémoires tampons et les transferts de mémoire volumineux, car les applications ne s’intéressent souvent qu’à une petite partie des données. Cela permet aussi à la structure GameInputDeviceInfo de contenir des pointeurs imbriqués vers d’autres régions du bloc de données d’informations sur l’appareil où se trouvent divers tableaux d’informations complémentaires, sans ajouter la complexité d’une sortie de taille variable et de copies profondes.

ID d’appareil

Un élément d’information important offert dans les informations sur l’appareil est l’ID d’appareil local à l’application. Il s’agit d’une valeur spéciale de 32 octets qui identifie l’appareil de façon unique, même après le redémarrage de l’application ou du système. Cet ID reste également stable après la déconnexion et la reconnexion des appareils sans fil, ainsi que des appareils USB filaires, à condition qu’ils soient rebranchés dans le même port USB. L’ID d’appareil local à l’application est le plus souvent utilisé pour identifier des appareils précis au-delà de la durée de vie de l’application. Par exemple, un jeu doté d’une interface utilisateur de mappage des entrées peut utiliser l’ID d’appareil pour s’assurer que la configuration d’entrée de l’utilisateur est appliquée aux mêmes appareils à chaque démarrage de l’application. Ceci est particulièrement important pour les applications qui prennent en charge des mappages complexes sur plusieurs appareils qui pourraient autrement sembler identiques (par exemple, un ensemble d’appareils de tableau de bord homogènes pour un simulateur de vol).

Énumération des appareils

Bien que la plupart des applications ne devraient jamais en avoir besoin, GameInput prend en charge l’énumération explicite des appareils connectés. Celle-ci peut être effectuée au moyen de la méthode RegisterDeviceCallback de l’interface IGameInput.
Cette méthode gère à la fois l’énumération des appareils et les notifications de connexion et de déconnexion des appareils en déclenchant d’abord une série initiale de rappels pour chaque appareil connecté, puis des rappels subséquents chaque fois que de nouveaux appareils sont connectés ou déconnectés. Les applications peuvent utiliser le paramètre GameInputEnumerationKind pour déterminer si la fonction bloque jusqu’à ce que tous les rappels initiaux aient été distribués, ou si elle retourne immédiatement et que les rappels sont distribués de façon asynchrone. Plusieurs filtres permettent de contrôler les types d’appareils inclus dans l’énumération, ainsi que les changements d’état des appareils qui déclenchent un rappel. Pour plus d’informations, consultez RegisterDeviceCallback. Pour des informations générales sur le fonctionnement des rappels, consultez Rappels GameInput. <!—

Appareils agrégés

Lorsque plusieurs claviers sont connectés en même temps, la plupart des API d’entrée présentent l’entrée aux applications de manière combinée, comme si toute l’entrée provenait d’un seul clavier système virtuel. (Il en va de même pour les souris.) GameInput, toutefois, expose normalement chaque appareil et son entrée individuellement. Cela ouvre de nombreuses possibilités, par exemple savoir quel clavier de clavardage d’un utilisateur génère l’entrée dans un jeu multijoueur local, mais cela ajoute aussi beaucoup de complexité aux applications qui n’ont pas besoin de cette fonctionnalité. Pour y remédier, GameInput prend en charge le concept d’appareils agrégés. La méthode CreateAggregateDevice de l’interface IGameInput permet aux applications de créer une instance virtuelle de IGameInputDevice qui expose l’entrée combinée de tous les appareils pour un seul GameInputKind. Cet appareil agrégé peut ensuite être utilisé comme filtre avec d’autres fonctions de l’API GameInput pour interagir avec l’appareil agrégé (par exemple, pour récupérer des lectures). Bien qu’il soit surtout utilisé pour les entrées clavier et souris, il peut aussi être utilisé avec la plupart des autres types d’entrée.
Dans la version actuelle, CreateAggregateDevice n’est pas encore implémentée. —>

Documentation de référence de l’API

Voir aussi

Notions de base de GameInput Rubriques avancées sur GameInput Référence de l’API GameInput
Last modified on October 6, 2026