40 votes

Simuler des clics de souris sur Python

Je suis actuellement en train de faire en sorte que ma Wiimote Nintendo (un peu triste en fait) fonctionne avec mon ordinateur comme une souris. J'ai réussi à faire en sorte que la manette du Nunchuk fasse bouger la souris de haut en bas, de gauche à droite sur l'écran ! C'était tellement excitant. Maintenant, je suis coincé.

Je veux faire un clic gauche/droit sur les choses via python quand j'appuie sur A. Quand j'ai fait une recherche, tout ce que j'ai trouvé c'est tkinter ?

Ma question est donc la suivante : comment puis-je appeler python pour qu'il fasse un clic gauche/droit sur le bureau, et si c'est possible, peut-être fournir un extrait ?

Merci pour votre aide !

NOTE : Je crois que j'ai oublié de mentionner que ceci est pour Linux.

2 votes

Cela dépendra probablement de l'OS/du système Windows. Idéalement, il y aura des liens python avec le système de fenêtrage de votre système d'exploitation. Normalement, les arguments sont assez similaires aux appels C/C++/C#/Objective-C dans lesquels la documentation est réellement écrite. Il se peut aussi que vous ayez la chance d'avoir une documentation en python. Indiquez au moins le système d'exploitation sur lequel vous travaillez pour que les gens puissent vous aider.

0 votes

Cette réponse n'est probablement pas pertinente mais vous pourriez peut-être vérifier la source du projet Sikuli. C'est jython mais...

0 votes

C'est un beau projet, mais qu'utilisez-vous pour déplacer la souris ? Le faites-vous via Python, ou d'une autre manière ? Et, bien sûr, sur quel OS/DE/WM ? Btw, il y a quelques temps, j'ai trouvé un pilote Xorg qui devrait permettre d'utiliser la Wiimote comme une souris (pour le projet de tableau blanc interactif ir-pen), peut-être qu'il pourrait faire le travail ?

32voto

Vous pouvez utiliser PyMouse qui a maintenant fusionné avec PyUserInput . Je l'ai installé via pip :

  1. apt-get install python-pip

  2. pip install pymouse

Dans certains cas, il utilisait le curseur et dans d'autres, il simulait les événements de la souris sans le curseur.

from pymouse import PyMouse

m = PyMouse()
m.position() #gets mouse current position coordinates
m.move(x,y)
m.click(x,y) #the third argument "1" represents the mouse button
m.press(x,y) #mouse button press
m.release(x,y) #mouse button release

Vous pouvez également spécifier le bouton de la souris que vous souhaitez utiliser. Ex : bouton gauche :

m.click(x,y,1)

N'oubliez pas que sous Linux, il faut utiliser Xlib.

0 votes

Pymouse ModuleNotFoundError: No module named unix Essayez d'installer pynput

17voto

Epeli Points 5475

0 votes

Avez-vous une idée de la façon d'effectuer ces tâches sans utiliser de bibliothèques/outils externes ?

0 votes

@Jewenile, vous pouvez manipuler directement le module kernel linux uinput. Vous pouvez consulter les sources de python-uinput pour avoir une idée de la manière dont il peut être implémenté. github.com/tuomasjjrasanen/python-uinput

4voto

gvalkov Points 1554

El evdev fournit des liens vers des parties du sous-système de gestion des entrées sous Linux. Il inclut également une interface pythonique à uinput.

Exemple d'envoi d'un événement de mouvement relatif et d'un clic gauche de la souris con evdev :

from evdev import UInput, ecodes as e

capabilities = {
    e.EV_REL : (e.REL_X, e.REL_Y), 
    e.EV_KEY : (e.BTN_LEFT, e.BTN_RIGHT),
}

with UInput(capabilities) as ui:
    ui.write(e.EV_REL, e.REL_X, 10)
    ui.write(e.EV_REL, e.REL_Y, 10)
    ui.write(e.EV_KEY, e.BTN_LEFT, 1)
    ui.syn()

2voto

reckoner Points 734

Vous pourriez trouver cela utile :

http://www.eventghost.org/

Bonne chance !

0 votes

Et sous linux, vous pouvez utiliser uinput.

2voto

Vous pouvez essayer d'interfacer XTE du programme Python script.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X