@ Jessica & Ragg Sor : je comprends votre analyse pour le clavier et la souris (unique et multiusage et ne pouvant piloter qu'une seule fenêtre à la fois) mais cela me semble plus discutable pour les matériels de type Joystick car on ne lance pas "souvent" plusieurs jeux en simultané ... Au minimum FS pourrait bloquer les infos reçues par les Joysticks afin de ne pas "partir en vrille" si on a "oublié" de remonter le souris dans la bonne fenêtre ...
Tu as raison car leurs mécanismes sont différents ...
Le clavier et la sourie utilisent le vecteur d’interruption (13H) depuis l'origine du PC.
Gestion direct au travers du BIOS!...
Elle est dans l'EPROMM de ton PC (C'est le firmware qui te permet d'initialiser ta machine afin de monter un OS...), avec toutes ses autres copines (64 Interruptions au total...).
Ce qui fait que tu ne peux pas avoir (à aujourd'hui...) plusieurs éléments de ce type sur une même machine.
Lors de l’apparition des premières interfaces graphiques (Xerox), est apparue également la notion de "
Focus" (Fenêtre active -> Processus en avant-plan).
Jusqu'à la version 8 de Windows celui-ci était assez "
pur" et FSUIPC s'avait bien l'utiliser.
Avec l'arrivé de Windows 10 (et +), l'interface renvoyant constamment à l'écran des informations système issue du messager Windows (Fenêtre de notification). Celui-ci à perdu, un peu (beaucoup...) de sa pureté.
Moralité pour notre utilisation, il ne faut plus compter sur les offsets que nous avaient mis P.D. à notre disposition dans FSUIPC!...
Concernant, tous les autres périphériques... Là, c'est une autre mayonnaise!...
Ils ont tous un GUID propre et sont traités au travers d'appels IRQ.
Exemple d'une définition prise chez moi sous Spad.Next :
<
Device VendorID="0x0000" ProductID="0x0014" DevicePath="\\?\hid#vid_0000&pid_0014#b&26909ffb&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}" Serial="" DeviceIndex="0" Version="1">
En programmation, pour ouvrir une communication avec un composant HID, il faut absolument :
- Vendor,
- Product,
- Device.
Le process appelant peut donc être en background... Il s'en contre fou!... Le lien est fait directement entre process -> GUID lors de la demande IRQ.
Par contre pour ton problème, MSFS2020 à peut être un os dans le pâté au niveau de la gestion de son code pour les périphériques???...
Petit complément suite au post de Ragg Sor auquel je n'ai rien compris... Désolé camarade!...
J'ai compris ce que tu voulais dire...
Désolé, je me bat contre un Zona ophtalmique depuis 8 semaines et il me joue la guerre du Dombass dans la tête 24/7!...
Si, à partir d'un device HID, on configure un bouton en lui affectant directement une touche clavier (mapping), cela est considéré par le system comme une action clavier et elle sera donc traitée par l’interruption 13H comme expliqué plus haut.
De plus, et c'est le cas dans Prepar3D, cela dépends également la façon dont une fenêtre d'actions a été programmée... Exemple, le comportement de la fenêtre ATC dans la V.5 a été modifiée lors de la dernière implémentation de xxxx (Désolé... J'ai un trou ....
)
Donc, à chaque fois, il faut faire des tests en passant par le SDK et en privilégiant SimConnect. Même avec les codes actions et les offsets, il y a des surprises!...
Je n'ai pas parlé de device tels que Stream Deck... Afin de ne pas perdre les lecteurs!...