How to make a Python auto clicker? (original) (raw)

**Auto-clickers are tools that simulate mouse clicks automatically at a given location and interval. Whether you're automating repetitive tasks in games, productivity applications, or testing graphical user interfaces (GUIs), creating an auto-clicker in Python is both a fun and practical project. In this article, we’ll walk you through building a fully functional auto-clicker using the pynput module to monitor keyboard input and simulate mouse clicks.

Requirements

We’ll be using the pynput module, a cross-platform library for controlling and monitoring input devices (mouse/keyboard). To install pynput, run the following command in your terminal or command prompt:

pip install pynput

Installation of pynput module

**Note: If you're stuck on how to set up python-pip package on your system then click here

After installing this module, we need to verify whether it has been installed correctly. Open your Python shell or IDLE and type:

Verifying module installation

Step by step implementaion

Let's now proceed with the code that is required to build an **Auto-clicker using Python. Follow the below steps to create an auto-clicker:

**Step 1: Start by importing the necessary modules. These allow us to work with time delays, threads for background execution and to control keyboard and mouse inputs.

Python `

import time import threading

from pynput.mouse import Button, Controller from pynput.keyboard import Listener, KeyCode

`

**Step 2: We set up key variables that determine how the clicker behaves:

Config variables

d = 0.001
btn = Button.left

Hotkeys

start_key = KeyCode(char='a')
exit_key = KeyCode(char='b')

`

**Step 3: We use Python’s **threading.Thread to run the auto-clicker in the background so it doesn't block keyboard input.

Python `

class AutoClicker(threading.Thread): def init(self, d, btn): super().init() self.d = d # Delay self.btn = btn # Button self.clicking = False self.active = True

def start_click(self):
    self.clicking = True

def stop_click(self):
    self.clicking = False

def exit(self):
    self.stop_click()
    self.active = False

def run(self):
    while self.active:
        while self.clicking:
            mouse.click(self.btn)
            time.sleep(self.d)

`

**Step 4: We create a Controller instance to simulate mouse actions, and then start the thread we just defined.

Python `

mouse = Controller() c = ClickMouse(d, btn) c.start()

`

**Step 5: This function listens for key presses. If the user presses a, the clicker toggles on or off. Pressing b exits the application.

Python `

def on_press(k): if k == start_key: if clicker.clicking: clicker.stop_click() print("[INFO] Clicker Stopped.") else: clicker.start_click() print("[INFO] Clicker Started.") elif k == exit_key: clicker.exit() print("[INFO] Exiting.") return False # Stop listener

`

**Step 6: Creating an instance for the mouse controller, then create **ClickMouse thread. Start the instance to move into the loop inside the run method.

Python `

instance of mouse controller is created

mouse = Controller() click_thread = ClickMouse(delay, button) click_thread.start()

`

**Step 7: Now we start the keyboard listener, which keeps the program running and listens for hotkey presses.

Python `

with Listener(on_press=on_press) as listener: listener.join()

`

Full Source code

Python `

import time import threading

from pynput.mouse import Button, Controller from pynput.keyboard import Listener, KeyCode

Config variables

d = 0.001 # Delay between clicks btn = Button.left # Mouse button to click

Hotkeys

start_key = KeyCode(char='a') # Start/stop key exit_key = KeyCode(char='b') # Exit key

class AutoClicker(threading.Thread): def init(self, d, btn): super().init() self.d = d self.btn = btn self.clicking = False self.active = True

def start_click(self):
    self.clicking = True

def stop_click(self):
    self.clicking = False

def exit(self):
    self.stop_click()
    self.active = False

def run(self):
    while self.active:
        while self.clicking:
            mouse.click(self.btn)
            time.sleep(self.d)

Create mouse controller

mouse = Controller()

Create and start the auto-clicker thread

clicker = AutoClicker(d, btn) clicker.start()

Keyboard listener function

def on_press(k): if k == start_key: if clicker.clicking: clicker.stop_click() print("[INFO] Clicker Stopped.") else: clicker.start_click() print("[INFO] Clicker Started.") elif k == exit_key: clicker.exit() print("[INFO] Exiting.") return False # Stop listener

Start listening for keyboard events

with Listener(on_press=on_press) as listener: listener.join()

`

Now let's execute the python program we've written and then press the **start (a) and **stop (a) keys in order to initiate the auto clicker.

**Output: