Simulate Mouse Clicks on Python
Asked Answered
E

6

42

I'm currently in the process of making my Nintendo Wiimote (Kinda sad actually) to work with my computer as a mouse. I've managed to make the nunchuk's stick control actually move the mouse up and down, left and right on the screen! This was so exciting. Now I'm stuck.

I want to left/right click on things via python when I press A, When I went to do a search, All it came up with was tkinter?

So my question is, What do I call to make python left/right click on the desktop, and if it's possible, maybe provide a snippet?

Thank you for your help!

NOTE: I guess I forgot to mention that this is for Linux.

Ethridge answered 23/8, 2010 at 6:42 Comment(5)
This will be OS/windowing system dependent probably. Ideally, there will be python bindings to your operating systems windowing system. Normally, the arguments are pretty similar to the C/C++/C#/Objective-C calls that the documentation is actually written in. Or you might luck out and have actual python docs. At least post what OS you're on so people can help.Diploid
Probably this answer is not relevant but maybe you could check Sikuli project source. It is jython but...Deviant
Looks like a nice project.. what are you using to move the mouse? Are you doing that via Python, or in another way? And, of course, on which OS/DE/WM? Btw, some times ago, I found a Xorg driver that should allow to use the Wiimote as a mouse (for the ir-pen interactive whiteboard project), maybe it could do the job..?Herod
I'm moving the mouse with libX11 on python. I can't use IR so this is why i need to be able to click.Ethridge
github.com/msanders/autopy#readme This came up on another question and it simulates mouseclicks. Maybe you can look and see how they do it.Diploid
D
35

You can use PyMouse which has now merged with PyUserInput. I installed it via pip:

  1. apt-get install python-pip

  2. pip install pymouse

In some cases it used the cursor and in others it simulated mouse events without the cursor.

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

You can also specify which mouse button you want used. Ex left button:

m.click(x,y,1)

Keep in mind, on Linux it requires Xlib.

Deductive answered 13/4, 2013 at 23:25 Comment(2)
Pymouse ModuleNotFoundError: No module named unix Try installing pynputDocile
The most qualified successor of pymouse is pyuserinputWollis
A
4

The evdev package provides bindings to parts of the input handling subsystem in Linux. It also happens to include a pythonic interface to uinput.

Example of sending a relative motion event and a left mouse click with 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()
Aricaarick answered 23/8, 2012 at 17:24 Comment(0)
S
4

PyAutoGui works superb.. Thanks to Al Sweigart...

An example of mine...

import pyautogui

pyautogui.FAILSAFE = False

for x in range(555, 899):
    pyautogui.moveTo(x, x)
Seafaring answered 9/5, 2015 at 5:44 Comment(0)
T
2

You can install the PyAutoGUI GUI automation module from PyPI (run pip install pyautogui) and then call the pyautogui.click() to click on a certain X and Y coordinates of the screen:

>>> import pyautogui
>>> pyautogui.click(50, 100)
>>> pyautogui.moveTo(200, 200)

PyAutoGUI works on Windows, Mac, and Linux, and on Python 2 and 3. It also can emulate the keyboard, do mouse drags, take screenshots, and do simple image recognition of the screenshots.

Full docs are at https://pyautogui.readthedocs.org/

Translate answered 30/4, 2015 at 0:20 Comment(0)
T
-1

Open your terminal and goto cd /usr/share/pyshared/twisted/protocols/mice
may this __init__.py mouseman.py python script will work for you,check them out.

Tonsorial answered 6/3, 2012 at 12:19 Comment(0)
L
-1

I didn't see this mentioned, so here it goes - there is also python-dogtail; see:

It requires "Enable assistive technologies" in the Gnome Desktop - but can in principle obtain e.g. names of GUI buttons of an application, and allow virtual clicks on them (rather than via x/y coordinates).

Lush answered 18/10, 2013 at 1:54 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.