2010-06-05 4 views
3

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

+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

+0

Donc, j'ai besoin de Hook puis :) – Viet

+0

Juste curieux. Attendez-vous une réponse plus approfondie que la mienne?;) – przemoc

Répondre

8

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:

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:

Dans X11, c'est beaucoup plus compliqué. Il y a au moins deux pages que vous pouvez lire:

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.

+0

+1 merci. Je n'ai pas remarqué ta réponse. J'utilise libqxt sans succès sous Mac OS X. – Viet

+0

Comme je l'ai dit, je ne suis pas un utilisateur Mac, donc je ne peux pas vous aider ici. Pardon. – przemoc

+0

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

Questions connexes