How to simulate multiple mouse clicks while holding the mouse button?
Solution 1:
I made a solution for you. Its got a few pieces, it might have taken me forever to come up with, and could probably use some polishing but its pretty darn close to what you wanted. The only thing I cannot see us being able to accomplish is holding the mouse down to do it. I couldn't find anything that would allow us to use the mouseup to turn off our clicking loop, so I used a toggle: Click once to start our crazy clicks , and click again to stop it (I used the middle click button as my start and stop)
We are using applescript, a command line tool for OSX called MouseTools, and an application called MagicPref to assign the script to one of our mouse buttons.
once you download and extract MouseTools, it is just a batch script. I put it and my applescripts inside the same folder (I named the folder superclicks
). Now we just need to create a loop that clicks at the current location of the mouse, and a way to break out of that loop.
Here are the two applescript apps we make:
launch.app
global thisFile
set thisFile to (path to me)
global thisFolder
tell application "Finder" to set thisFolder to container of thisFile as text
# Function to check current state / should we should stop clicking
on checkstate()
local clickState
tell application "Finder"
if exists file (thisFolder & "STOP_CLICKING.txt") then
set clickState to false
else if exists file (thisFolder & "CLICKING.txt") then
set clickState to true
else
set clickState to null
end if
end tell
return clickState
end checkstate
#function to update state of clicking via text files
#im sure there is a better way, but this certainly works
on togglestate()
if checkstate() is null then
tell application "Finder" to make new file at thisFolder with properties {name:"CLICKING.txt"}
else if checkstate() is true then
tell application "Finder" to make new file at thisFolder with properties {name:"STOP_CLICKING.txt"}
else if checkstate() is false then
tell application "Finder"
delete file (thisFolder & "CLICKING.txt")
delete file (thisFolder & "STOP_CLICKING.txt")
end tell
end if
end togglestate
togglestate()
#we dont really want 3 states so we'll toggle again after a reset
if checkstate() is null then togglestate()
if checkstate() is true then
tell application "Finder"
open (thisFolder & "clicking_script")
end tell
end if
clicking_script.app
global thisFile
set thisFile to (path to me)
global thisFolder
tell application "Finder" to set thisFolder to container of thisFile as text
## Function to check current state / should we should stop clicking
on checkstate()
local clickState
tell application "Finder"
if exists file (thisFolder & "STOP_CLICKING.txt") then
set clickState to false
else if exists file (thisFolder & "CLICKING.txt") then
set clickState to true
else
set clickState to null
end if
end tell
return clickState
end checkstate
# let the clicking begin
on crazyClick()
set x to 0
repeat until checkstate() = false or x = 1000
do shell script ((POSIX path of thisFolder as text) & "mousetools -leftClick")
do shell script ((POSIX path of thisFolder as text) & "mousetools -releaseMouse")
set x to (x + 1)
delay 0
end repeat
end crazyClick
crazyClick()
These two scripts need to be saved as applications. Once you have those three items in your folder all you have to do is assign launch.app
as a custom application to be launched for a particular click using MagicPrefs.
When you activate the script it clicks like crazy until you activate it again, which breaks the loop by adding some empty text files to the folder. We used the text files as a simple way to have external variables.
I have zipped all the files for easy downloading.
It might not be perfect but its definitely a good start to seeing what creativeness can be accomplished with automation.