Disons que j'ai une application sans fenêtre qui n'a qu'une icône dans la barre des tâches (Windows, Mac OS X & Linux). Je veux qu'il capture certaines combinaisons de touches, par exemple Right Control + Right Shift. Lors de la saisie correcte, la combinaison, il fera quelque chose, disons prendre une capture d'écran. Je peux faire une application sans fenêtre, icône sur la barre des tâches et capture d'écran mais je ne sais pas comment surveiller globalement le clavier pour les combinaisons de touches. S'il vous plaît veuillez conseiller. Toute aide ou conseil est grandement appréciée! Merci d'avance!Clé avec touches et combinaisons de touches du clavier avec Qt 4.6
Répondre
L'accrochage à l'échelle du système est un sujet difficile, mais l'accrochage à l'échelle du système est encore plus compliqué. Chaque OS/GUI a sa propre solution, au moins pour l'attraper. Qt4 n'expose pas cette fonctionnalité, mais Qt eXTension library résout le problème avec son QxtGlobalShortcut. Il est un emballage agréable pour:
- XGrabKey()/XUngrabKey() dans X11,
- RegisterHotKey()/UnregisterHotKey() dans Windows,
- RegisterEventHotKey()/UnregisterEventHotKey() sous Mac OS X.
Vous peut saisir une combinaison de touches explicite, c'est-à-dire une clé et des modificateurs particuliers (XGrabKey() permet un peu plus), qu'aucune autre application n'obtiendra. Les séquences de touches, c'est-à-dire les combinaisons de touches consécutives, ne sont pas supportées ici.
L'accrochage au clavier est beaucoup plus puissant, car il permet de jeter un coup d'œil aux événements d'entrée (ou même de les filtrer). Ce n'est pas seulement utilisé par les enregistreurs de clavier, mais ils sont une association typique ici.
Si vous êtes dans Windows, vous pouvez lire:
- Hooks and DLLs par Joseph M. Newcomer,
- Hooks.
Dans X11, c'est beaucoup plus compliqué. Il y a au moins deux pages que vous pouvez lire:
- X.Org Wiki - Development/Documentation/InputEventProcessing - d'avoir des renseignements généraux,
- Exploiting X11 to monitor keystrokes - pour comprendre les difficultés.
Il y avait un X Event Interception Extension, mais il n'a pas été maintenu et a finalement été retiré.
Espérons que cela peut être fait sans l'aide de l'infrastructure X11. Dans le noyau Linux 2.6, il y a "Interface d'événement", connu sous le nom evdev, qui peut être exploité ici. Les détails peuvent être trouvés dans le code source du logkeys Linux keylogger. Cela peut également être fait avec quelque chose de similaire à evdev. Voir mon projet PoC: kaos - Affichage sur écran de l'activité clé.
Et je n'ai pas Mac, donc pas d'autres références.
+1 merci. Je n'ai pas remarqué ta réponse. J'utilise libqxt sans succès sous Mac OS X. – Viet
Comme je l'ai dit, je ne suis pas un utilisateur Mac, donc je ne peux pas vous aider ici. Pardon. – przemoc
Intéressant, [Win32 Hooks] (http://msdn.microsoft.com/en-us/library/ms997537.aspx) est maintenant une page vide avec 'Content Removed'. Est-ce ma faute? ;) Je vais mettre à jour la réponse ci-dessus. Ne vous inquiétez pas, il existe une [Wayback Machine] (http://www.archive.org/). 'http://web.archive.org/web/20080510093117/http://msdn.microsoft.com/en-us/library/ms997537.aspx)' - Win32 Hooks par Kyle Marsh – przemoc
- 1. Combinaisons de touches Java
- 2. Saisir les touches du clavier
- 3. Touches fléchées clavier de navigation avec Jquery
- 4. sendmessage avec changement, le contrôle, les combinaisons de touches alt
- 5. Taper en utilisant des combinaisons de touches?
- 6. Combinaisons de touches dans C# winforms application
- 7. Touches fléchées avec NSTableView
- 8. touches de raccourci du système prépondérants
- 9. django: modèles avec touches inverses?
- 10. Le crochet du clavier modifie le comportement des touches
- 11. Etiquetage cohérent des touches physiques du clavier ... est-ce possible?
- 12. Touches personnalisées avec le plugin NERDComment et le Leader remappé?
- 13. Clavier virtuel sans EditText et touches de détection
- 14. Naviguer avec les touches fléchées
- 15. Problèmes avec Qt 4.6 VS 2008
- 16. Silverlight gérer plusieurs combinaisons de touches de presse
- 17. VBA désactiver/activer les combinaisons de touches de raccourci
- 18. Touches déplacées avec le bouton?
- 19. Relier des touches avec javascript tout en évitant les touches de raccourci du navigateur
- 20. Hashtables (dictionnaire etc) avec des touches entières
- 21. Comment identifier les touches du clavier en utilisant C#
- 22. Codes-clés des touches de fonction avec verrouillage F?
- 23. C# et touches fléchées
- 24. Qt 4.6 OpenGL GLSL
- 25. Déplacement de JLabel avec les touches fléchées
- 26. Voix off et touches?
- 27. Résolution des problèmes de touches de clavier logiciel Android
- 28. utilisation de touches, problème de rappel de clavier
- 29. Reconnaissance des touches fléchées avec stdin
- 30. Evénements clavier pour les touches de modification dans Safari 2.0
Dans mon esprit, vous ne pourriez pas saisir ou capturer la clé, puisque vous n'avez pas le focus sur votre fenêtre. – dzen
Donc, j'ai besoin de Hook puis :) – Viet
Juste curieux. Attendez-vous une réponse plus approfondie que la mienne?;) – przemoc