Question

Je veux être en mesure d'intercepter (et faire du traitement arbitraire) auto-répétition touches Windows. Je voudrais savoir comment la répétition automatique du clavier est mis en œuvre pour que je sache quelles sont les options dont je dispose. à savoir que je peux intercepter au:

  • application
  • pilote de périphérique et / ou
  • niveau matériel

Mise à jour: Il ressemble à répétition automatique est généré au niveau du matériel, puis supplantée par les pilotes de périphériques ( voir ici ).

Était-ce utile?

La solution

Pour modifier ou le comportement du filtre, vous pouvez intercepter les clés à l'aide d'un crochet:

SetWindowsHookEx utilisant WH_KEYBOARD

procédure de raccordement reçoit, entre d'autres, le nombre de répétitions (en raison de maintenir la touche)

Notez que le crochet du clavier à faible niveau (WH_KEYBOARD_LL) ne reçoit pas le nombre de répétitions.

Si toutes vos fenêtres sont créées dans le même trhead, vous pouvez utiliser un crochet spécifique fils, et éviter de déplacer la procédure de crochet à une DLL.


Je me souviens vaguement que le nombre de répétitions sont générés par le clavier lui-même et le crochet de LL envoie répété des événements keydown - je peux me tromper, cependant. Sous DOS, le taux de répétition des touches et le temps qui a été mis dans le BIOS ou par un appel du BIOS ne reviennent aux valeurs par défaut lorsqu'un DIN ou un clavier PS / 2 a été débranché et rebranché. Je ne sais pas pourquoi vous avez besoin de savoir exactement.

Autres conseils

Je suggère que vous pouvez modifier votre question ... votre question réelle est « Comment faire pour supprimer répétition automatique sous Windows dans $ {} yourLangauge » ...

Pour que ma réponse est, je ne l'ai pas la moindre idée, je ne l'ai jamais fait en assembleur (MASM 80286) ... et même alors j'ai trouvé une solution sur un BBS (personne ne les oubliez pas) et juste utilisé. De mémoire, l'interception doit être fait au niveau pilote de périphérique.

La mise en œuvre de autorepeat (100 $ dit que c'est assembleur) problably ne nous éclairer sur elle ... que supprimant et Microsoft joue ces cartes très proche de c'est la poitrine.

Vive. Keith.

EDIT: Je viens de penser ... les techniques peuvent différer maintenant entre les versions de Windows et la pléthore de différents appareils ... Oh goodie

Sons aime ça est « la programmation non liée », cependant. Allez dans « Options d'accessibilité » dans le panneau de commande. Sélectionnez « Paramètres » dans le groupe « Touches Filtre », ici, vous pouvez désactiver la répétition des clés pour cet utilisateur sur cette machine.

L'espoir est ce que vous cherchez.

P.S. instructions données ci-dessus pour Windows XP.

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