10

So I've been trying to make a program using AppleScript, but there's one thing that's been teasing me for some time now - How do I make the mouse click at current location without using Mouse Keys?

Also, is it possible to simulate a long click (that means I set the length of it)?

2
  • See stackoverflow.com/questions/38766699/…
    – rogerdpack
    Commented Oct 5, 2018 at 21:18
  • It's always better, if you can, to do it programmatically, rather than replicate 'human' activity -- e.g. use commands to set GUI control values, press OK, etc.
    – benwiggy
    Commented Nov 6, 2022 at 21:27

2 Answers 2

15

You can simulate a mouse click with AppleScript code like this:

tell application "System Events"
  click at {123,456}
end tell

This means to simulate a click of the mouse at coordinate (123,456).

To click at the current location you'll need to first find the current location of the mouse pointer, if you don't know it already. This is not easily done with AppleScript itself, so a neat way is to use the third party tool "MouseTools".

You can download it for free here.

On the download webpage you'll find an AppleScript example for getting the current mouse coordinates.

11
  • is it capable of long clicking? Commented Dec 30, 2016 at 12:16
  • also, you said it isn't easily done, does that mean it is possible w/out MouseTools? it'd be awesome if it worked on other computers which don't have MT downloaded, else I'd have to bundle it w/ my program Commented Dec 30, 2016 at 12:19
  • and one more thing - you seem smart about AppleScript - would you please check out my unanswered questions? I have a feeling you might know the answers - thanks Commented Dec 30, 2016 at 12:22
  • 5
    To supplement @jksoegaard's answer: one can also find cursor positions using "Screenshot" tool, which may be activated by Cmd+Shift+4 shortcut. Then just point the cursor to any area and remember the numbers that is shown near the pointer. Commented Jan 26, 2020 at 9:10
  • 1
    A few days ago around 20-OCT-2021 the hamsoftengineering.com domain has expired and no longer hosting the site, is there a mirror or alternate download location?
    – Jay Taylor
    Commented Oct 29, 2021 at 17:51
1

Long click is much easier with Hammerspoon, place something like this inside init.lua and reload:

hs.hotkey.bind({"alt"}, "L", function()
  hs.eventtap.leftClick(hs.mouse.getAbsolutePosition(), 500000)
end)

This will (on typing keyboard shortcut Alt+L): left click on the current mouse cursor position, with half a second delay between click down and up.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .