2009-06-05 20 views
3

J'écris un macro-générateur/clavier remapper en python, pour xubuntu. J'ai trouvé comment intercepter et enregistrer des frappes, et envoyer des frappes que je veux enregistrer, mais je n'ai pas compris comment bloquer les frappes. Je dois désactiver l'entrée au clavier pour remapper une clé. Par exemple, si je voulais envoyer 'a' quand j'appuie sur la touche 's', je peux actuellement enregistrer la touche 'a' et la mettre en lecture quand j'appuie sur la touche 's'. Je ne peux pas, cependant, empêcher que la touche 's' soit envoyée à côté de celle-ci.Python désactiver/rediriger l'entrée au clavier

J'ai utilisé le module pyxhook à partir d'un clavier-logger open source pour les hooks, et encore une fois, la méthode d'entrée la plus fausse de la bibliothèque python x. Je me souviens d'avoir lu quelque part que quelqu'un bloquait toutes les entrées au clavier en redirigeant toutes les frappes vers une fenêtre invisible en utilisant tkinter. Si quelqu'un pouvait poster cette méthode, ce serait génial.

J'ai besoin de quelque chose qui bloque toutes les frappes, mais ne désactive pas les crochets de mon clavier.

+0

Avez-vous envisagé d'utiliser des malédictions? Voir http://docs.python.org/howto/curses.html, par exemple. –

+0

Est-ce que cela aide? [http://code.activestate.com/recipes/134892/](http://code.activestate.com/recipes/134892/) –

Répondre

1

Je pense que cela va dépendre fortement de l'environnement: curses & la recette activestate est bon pour la ligne de commande, mais si vous voulez qu'elle s'exécute dans un DE, vous aurez besoin de quelques crochets à ce DE. Vous pouvez regarder les liaisons Qt ou GTK pour python, ou il y a une bibliothèque python-xlib qui pourrait vous permettre de lier directement dans le système X.

Donc je suppose que la réponse est "ça dépend". Cherchez-vous une fonctionnalité console noecho, ou un programme de remplacement de texte pour un DE, ou un changeur de disposition de style xmodmap?

0

J'ai un crochet de clavier qui détecte les événements X. Je cherche un moyen d'empêcher globalement un seul événement de clavier d'être envoyé à une fenêtre. Quelque chose qui fonctionne en accédant à la file d'attente d'événements et en supprimant l'événement de clavier serait idéal. Il semble que cela devrait être possible avec Python Xlib, mais je ne peux pas le comprendre.