Last active
February 27, 2023 07:59
-
-
Save ZeekDaGeek/0a8e4ed07dc4ffcfa06b to your computer and use it in GitHub Desktop.
AutoClicker
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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