La simulation de Touche de l'événement à l'aide de Python pour Linux
Je suis en train d'écrire un script pour automatiser l'exécution d'un modèle particulier. Lorsque le modèle échoue, il attend une saisie de l'utilisateur (touche Entrée). Je peux détecter si le modèle n'a pas réussi, mais je ne suis pas en mesure d'utiliser python (sur linux) afin de simuler une pression sur une touche de l'événement. Windows a la SendKeys de la bibliothèque de le faire, mais je me demandais si il y a une bibliothèque semblable pour python sous linux.
Merci!
OriginalL'auteur user308827 | 2010-04-04
Vous devez vous connecter pour publier un commentaire.
Si le "modèle" est en cours d'exécution graphique (avec le système X window), déjà suggéré xsendkey est une possibilité, ou xsendkeycode. Si il fonctionne sous forme de texte (dans une fenêtre de terminal), puis pexpect.
Salut! Corollaire: Tout en utilisant pexpect, le simple suivant le programme ne semble pas fonctionner pour moi: l'importation pexpect enfant = pexpect.spawn ("ls") fout = file('output.txt', 'w') de l'enfant.logfile = fout I. e, output.txt est créé, mais est vide quand je chat. pexpect est installé bien puisque je peux exécuter les exemples fournis avec le programme. Toutes les suggestions seraient appréciées! merci!
Les liens vers
xsendkey
etxsendkeycode
sont morts.voici une fourche qui fonctionne très bien: github.com/kyoto/sendkeys La xsendkey programme est génial pour contourner les restrictions lorsqu'un simple copier-coller n'est pas autorisé et lorsque vous avez à écrire des balises suivie d'une validation avec la touche entrée / retour, comme sur Tumblr (un JavaScript hack aurait été plus compliqué)
OriginalL'auteur
Jetez un oeil à cette https://github.com/SavinaRoja/PyUserInput
son de la croix-plate-forme de contrôle de la souris et du clavier en python
Clavier de contrôle fonctionne sur X11(linux) et les systèmes Windows. Mais pas de prise en charge mac(quand j'ai écrit cette réponse).
Jetez un oeil à ces projs, l'espace, la clé doit être mappé ' (chaîne de caractères avec espaces) github.com/Narengowda/web-mouse/blob/master/web_mouse/... github.com/SavinaRoja/PyUserInput/blob/master/pykeyboard/...
Je suis venu avec quelque chose comme
k.tab_key(k.keypad_keys['Space'])
mais ça ne fonctionne pas. Il est difficile pour moi de comprendre la documentation du projet. Pourriez-vous s'il vous plaît aider?Avez-vous essayé key_board.type_string(' ') ?
OriginalL'auteur
Un plus faible niveau de l'approche serait de créer un
uinput
périphérique à partir duquel vous serait alors d'injecter des événements d'entrée dans le sous-système d'entrée linux. Considérer les bibliothèques suivantes:Exemple de l'envoi de
<enter>
avec ce dernier:OriginalL'auteur
http://people.csail.mit.edu/adonovan/hacks/xsendkey.html
OriginalL'auteur
Je recommande PyAutoGui. C'est ridiculement simple à utiliser, il est multi-plateforme et c'est pour Python 3 et 2.
Dans les liens de la page sont listés les dépendances et des exemples de code.
OriginalL'auteur