Python Forum

Full Version: How to trigger a function by clicking the left mouse click?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I want to start off by saying that I am new to Python so I am sorry if this question is going to sound stupid to you.

I am just looking for an easy way to trigger a function whenever I press the left click of my mouse. Could anyone illustrate me how to achieve this? Examples are greatly appreciated.

My code now:

import win32api
import win32con
import time
from random import randint
#import pygame

#pygame.init()

def mouseClick():
   win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
   time.sleep(0.005)
   win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)


while True :
   if win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0,0,0):
       time.sleep(0.03)
       mouseClick()
       time.sleep(0.3)
That's what I've done so far, but that doesn't work as python starts clicking thousands times per second.
win32api.mouse_event doesn't check the state of something, it just does that thing.  So in your while loop, you're not checking if the left mouse button is down, you're just setting it to be down over and over.

Instead of mouse_event, you should probably use GetAsyncKeyState(), and instead of the event code MOUSEEVENTF_LEFTDOWN, you should use VK_LBUTTON (the mouse is part of the "virtual keyboard", thus the prefix VK).

Here's a small sample:
>>> def is_mouse_down():
...   key_code = win32con.VK_LBUTTON
...   state = win32api.GetAsyncKeyState(key_code)
...   return state != 0
...
# now for some intense mouse-clicking to test
>>> for _ in range(10):
...   print(is_mouse_down())
...   time.sleep(1)
...
False
False
True
False
True
True
False
True
False
True