Déterminer quel clavier envoie les frappes

voix
2

J'ai 2 claviers accrochés à ma machine (un sur PS / 2, l'autre sur USB). Comment puis-je déterminer quel clavier envoie les frappes en C #?

Créé 26/08/2009 à 23:07
source utilisateur
Dans d'autres langues...                            


5 réponses

voix
0

Je pense que la seule façon que vous pourriez faire ce serait si vous surveillez le trafic USB. J'ai vu des programmes qui font ça, mais je ne sais pas comment le faire en C #. Ainsi, s'il y a du trafic USB et une combinaison de touches, il est le clavier USB. S'il n'y a pas de trafic, il est le PS / 2 un.

Bien entendu, l'autre mise en garde avec ceci est qu'il ne généralise pas aux types de connexion du clavier arbitraires ou à venir.

Créé 26/08/2009 à 23:36
source utilisateur

voix
2

Si l'on est sur USB, alors vous devriez être en mesure de le comprendre - au moins au niveau du pilote. Cependant, plus haut dans la pile, je ne l'ai pas entendu parler d'une telle option. Je ne serais pas surpris s'il n'a pas été possible du tout.

Une avenue que vous pourriez vouloir vérifier sont les simulateurs de danse. Vous savez, ceux avec le « tapis de danse » (ou « tapis de danse »). Ces tapis de danse sont en fait rien d'autre que de grands claviers mais. Vérifiez par vous-même - ouvrir le Bloc-notes et sauter sur le tapis de danse. :)

Maintenant, certains de ces programmes offrent également un mode compétitif où vous pouvez brancher deux tapis de danse et de rivaliser avec un partenaire. Dans ce cas, ils auraient besoin de faire la distinction entre les tapis en quelque sorte - ce qui est la même chose que vous essayez de faire.

Créé 26/08/2009 à 23:38
source utilisateur

voix
1

Je devine que le problème est que lorsque le scanner de code-barres est utilisé, le nombre va dans le champ actif plutôt que le champ pour le code à barres ID?

Une solution serait de relier les autres événements OnChange de champs et chercher un numéro de code à barres inséré dans les (via RegEx). Si trouvé, déplacez le code à barres sur ce champ et déplacer la valeur sur le champ de code à barres.

Aucun accès de périphérique requis, cela pourrait même se faire sur une page Web axée sur Javascript.

Créé 26/08/2009 à 23:57
source utilisateur

voix
1

Ok, voici une vraiment méthode kludgy qui ne fonctionne qu'avec un très sous - ensemble limité de cas d'utilisation:

  1. Ruban, colle vers le bas, ou court-circuiter un ensemble de touches de modification (Ctrl droit, par exemple) sur un des claviers.
  2. Sur chaque pression de touche, regardez les modificateurs. Si les modificateurs sont définis comme ils le seraient sur le clavier collé vers le bas, on suppose que le clavier est la source. Dans le cas contraire, on suppose qu'il est l'autre clavier.

Limites:

  1. Vous ne pouvez pas utiliser le clavier collé en dehors de votre application, car il ne sait ignorer les touches de modification.
  2. Vous ne pouvez pas utiliser les touches de modification dans votre propre application dans le cadre des raccourcis clavier.
  3. L'autre clavier peut usurper l'identité vôtre (accidentellement ou non) si l'utilisateur maintient les bons boutons.
  4. Vous devrez désactiver rémanentes.
  5. En utilisant Alt ou Ctrl a un inconvénient: si vous appuyez sur l' autre un, Windows peut avoir une utilisation pour cette combinaison que votre application ne sera pas attraper.

Unknown # 1 : si ModifierKeys est uniquement peuplé à partir du clavier qui était la source du clic clé, ou vient de la somme de tous les modificateurs dans tous les claviers connectés. Je soupçonne que chaque clavier envoie en interne les modificateurs attachés à la combinaison de touches et que Windows ne les regroupe pas.

Unknown # 2 : si oui ou non System.Windows.Forms.Control.ModifierKeys fournit uniquement les bits Ctrl / Maj / Alt, ou fournit suffisamment de détails pour, par exemple, distinguer la clé Ctrl droite de la gauche. Voici les clés que vous pouvez tester théoriquement, je ne sais pas combien sont fournis par l' intermédiaire ModifierKeys:

http://msdn.microsoft.com/en-us/library/system.windows.forms.keys.aspx

Créé 27/08/2009 à 00:53
source utilisateur

voix
3

Voici un exemple, le code très sale, montrant comment utiliser le crochet d'entrée de fenêtres de .NET. Fonctionne mieux avec Snippet compilateur:>

EDIT: se trouve qu'il ya une limite de longueur pour les postes,

saisir la source de code ici

.

Créé 27/08/2009 à 01:45
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more