Question

J'ai un système où j'ai plusieurs claviers et j'ai vraiment besoin de savoir de quel clavier provient le trait de frappe. Pour expliquer la configuration:

  1. J'ai un PC normal et un clavier USB
  2. J'ai un écran VGA externe avec quelques touches matérielles
  3. Les touches matérielles sont mappées comme un clavier USB standard, envoyant un nombre limité de codes de touches (F1, F2, Retour, + et -)

J'ai un hook de bas niveau (en C # mais faisant appel à la fonctionnalité Win32) qui est capable de gérer les entrées même lorsque mon application n'est pas focalisée.

Le problème est que lors de l’utilisation du clavier normal, certains des codes de touches mappés sont capturés par l’application pilotée sur l’écran externe. VK_RETURN est l’un des raccourcis clavier envoyés par l’écran externe et utilisés pour la confirmation. Sauf si je peux identifier le "périphérique" et filtrer dessus, l'utilisateur pourrait exécuter des actions et les confirmer sur un écran sans même les regarder.

Comment savoir quel clavier était responsable de la pression sur la touche?

Était-ce utile?

La solution

Oui, mon problème est corrigé, j'apprends quelque chose de nouveau chaque jour.

Voici ma tentative de rattrapage :):

  • Enregistrez les périphériques que vous souhaitez utiliser pour la saisie brute (les deux claviers) avec :: RegisterRawInputDevices ().

  • Vous pouvez obtenir ces périphériques à partir de GetRawInputDeviceList ()

  • Une fois vos appareils enregistrés, vous commencerez à recevoir des messages WM_INPUT.

  • Le paramètre lParam du message WM_INPUT contient une structure RAWKEYBOARD que vous pouvez utiliser pour déterminer le clavier d'où provient l'entrée, ainsi que le code clé virtuel et le type de message (WM_KEYDOWN, WM_KEYUP, ...)

  • Vous pouvez donc définir un drapeau d'où provient le dernier message, puis l'envoyer aux gestionnaires de saisie habituels au clavier.

Autres conseils

Pas moyen de faire ça. Windows résume cela pour vous. Comme mentionné, vous devez écrire / modifier un pilote de périphérique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top