Python Forum
How to trigger a function by clicking the left mouse click? - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: How to trigger a function by clicking the left mouse click? (/thread-3834.html)



How to trigger a function by clicking the left mouse click? - HelloBoyz - Jun-29-2017

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.


RE: How to trigger a function by clicking the left mouse click? - nilamo - Jun-29-2017

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