Skip to content

Instantly share code, notes, and snippets.

@ZeekDaGeek
Last active February 27, 2023 07:59
Show Gist options
  • Save ZeekDaGeek/0a8e4ed07dc4ffcfa06b to your computer and use it in GitHub Desktop.
Save ZeekDaGeek/0a8e4ed07dc4ffcfa06b to your computer and use it in GitHub Desktop.
AutoClicker
/**
* A simple autoclicker script for AutoHotkey
* Version 1.1
* Created by ZeekDaGeek
*
* Press and hold:
* - Mouse 4 for auto left click.
* - Mouse 5 for auto right click.
*
* Using Ctrl as a modifier will toggle an auto clicker until you press the Mouse 4 or 5 to turn it off.
*
* Press
* - Ctrl + Page Up to toggle holding left mouse button.
* - Ctrl + Page Down to toggle holding right mouse button.
*
* Press PauseBreak if something goes terribly wrong to stop the script.
*
* Change defaultSleep if you want to.
*
*/
#NoEnv ;Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ;Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ;Ensures a consistent starting directory.
#SingleInstance force ;if script is opened again, replace instance
#Persistent ;script stays in memory until ExitApp is called or script crashes
#MaxThreadsPerHotkey, 2
global ToggleLeftClicker := false
global ToggleRightClicker := false
global ToggleLeftHold := false
global ToggleRightHold := false
global defaultSleep := 50
XButton2::
+XButton2::
ToggleRightClicker := false
StartTime := A_TickCount
ClickAmount := 0
SetFormat, float, 0.2
while GetKeyState("XButton2", "P")
{
ClickAmount++
ElapsedTime := (A_TickCount - StartTime) / 1000
CpS := ClickAmount / ElapsedTime
Click right
ToolTip, Right clicked %ClickAmount% times in %ElapsedTime% seconds. (%CpS% CpS)
sleep defaultSleep
}
ToolTip
ToggleRightClicker := false
return
^XButton2::
ToggleRightClicker := true
StartTime := A_TickCount
ClickAmount := 0
SetFormat, float, 0.2
while ToggleRightClicker
{
ClickAmount++
ElapsedTime := (A_TickCount - StartTime) / 1000
CpS := ClickAmount / ElapsedTime
Click right
ToolTip, Right clicked %ClickAmount% times in %ElapsedTime% seconds. (%CpS% CpS)
sleep defaultSleep
}
ToolTip
ToggleRightClicker := false
return
XButton1::
+XButton1::
ToggleLeftClicker := false
StartTime := A_TickCount
ClickAmount := 0
SetFormat, float, 0.2
while GetKeyState("XButton1", "P")
{
ClickAmount++
ElapsedTime := (A_TickCount - StartTime) / 1000
CpS := ClickAmount / ElapsedTime
Click
ToolTip, Left clicked %ClickAmount% times in %ElapsedTime% seconds. (%CpS% CpS)
sleep defaultSleep
}
Sleep, 1000
ToolTip
ToggleLeftClicker := false
return
^XButton1::
ToggleLeftClicker := true
StartTime := A_TickCount
ClickAmount := 0
SetFormat, float, 0.2
while ToggleLeftClicker
{
ClickAmount++
ElapsedTime := (A_TickCount - StartTime) / 1000
CpS := ClickAmount / ElapsedTime
Click
ToolTip, Left clicked %ClickAmount% times in %ElapsedTime% seconds. (%CpS% CpS)
sleep defaultSleep
}
Sleep, 1000
ToolTip
ToggleLeftClicker := false
return
^PgUp::
ToggleLeftHold := !ToggleLeftHold
if (!ToggleLeftHold) {
return
}
StartTime := A_TickCount
Loop
{
if (!ToggleLeftHold) {
Break
}
ElapsedTime := (A_TickCount - StartTime) / 1000
Click down
ToolTip, Left mouse button held down for %ElapsedTime% seconds.
sleep defaultSleep
}
Click up
Sleep, 1000
ToolTip
return
^PgDn::
ToggleRightHold := !ToggleRightHold
if (!ToggleRightHold) {
return
}
StartTime := A_TickCount
Loop
{
if (!ToggleRightHold) {
Break
}
ElapsedTime := (A_TickCount - StartTime) / 1000
Click down right
ToolTip, Right mouse button held down for %ElapsedTime% seconds.
sleep defaultSleep
}
Click up right
Sleep, 1000
ToolTip
return
Pause::Pause
/**
* I made this literally years and years ago
* I don't remember what it was used for, but I can tell what it does.
* Have fun with it if you want?
*/
/*
DEBUG - Displays ScanCode for each key pressed
SetFormat, Integer, Hex
Gui +ToolWindow -SysMenu +AlwaysOnTop
Gui, Font, s14 Bold, Arial
Gui, Add, Text, w100 h33 vSC 0x201 +Border, {SC000}
Gui, Show,, % "// ScanCode //////////"
Loop 9
OnMessage( 255+A_Index, "ScanCode" ) ; 0x100 to 0x108
Return
ScanCode( wParam, lParam ) {
Clipboard := "SC" SubStr((((lParam>>16) & 0xFF)+0xF000),-2)
GuiControl,, SC, %Clipboard%
}
*/
/*
Open up dialog box and ask for a series of arrow key inputs based on U D L R.
q::
;commands = R L D R U R D L U L U R D L D R U L D U R U
InputBox, commands
StringSplit, commandArray, commands, %A_Space%
Sleep, 2000
Loop, %commandArray0%
{
this_command := commandArray%a_index%
if (this_command == "R")
{
Send {Right}
SoundBeep
}
else if (this_command == "L")
{
Send {Left}
SoundBeep
}
else if (this_command == "U")
{
Send {Up}
SoundBeep
}
else if (this_command == "D")
{
Send {Down}
SoundBeep
}
Random, SleepTime, 250, 500
Sleep, SleepTime
}
return
;D U D R L D R L D L R D U D L R U L D U L D L D L R D R U L U R D U L U R D L U L U R
;D L U R D R U D L D L R L R U L U
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment