Bobby
Bobby

Reputation: 6255

AppleScript click at mouse position

This code works to click on a specific location on the screen but how do you click at the cursor's coordinates?

tell application "System Events"
    click at {10, 10}
end tell

Upvotes: 5

Views: 20001

Answers (6)

Григорий
Григорий

Reputation: 11

Install cliclick with Homebrew(https://brew.sh/):

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

then look at ==> Next steps:

  • Run these two commands in your terminal to add Homebrew to your PATH:

Run these two commands

then

brew install cliclick

To click at the current mouse location:

cliclick c:.

allow terminal or Scrip Editor

on Click(x, y, k)
  repeat k times
    do shell script "/opt/homebrew/Cellar/cliclick/5.1/bin/cliclick c:" & x & "," & y
  end repeat
end Click

Upvotes: 0

Bobby
Bobby

Reputation: 6255

I created a command line tool in Xcode using the Swift programming language to produce an executable:

    // Location of Mouse pointer
    var ml = NSEvent.mouseLocation
    ml.y = NSHeight(NSScreen.screens[0].frame) - ml.y
    let location = CGPoint(x: ml.x, y: ml.y)

    // Single mouse click.
    var e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, mouseCursorPosition: location, mouseButton: .left)!
    e.post(tap: .cghidEventTap)
    e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseUp, mouseCursorPosition: location, mouseButton: .left)!
    e.post(tap: .cghidEventTap)

    e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, mouseCursorPosition: location, mouseButton: .left)!
    e.setIntegerValueField(.mouseEventClickState, value: 1)
    e.post(tap: .cghidEventTap)

    e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseUp, mouseCursorPosition: location, mouseButton: .left)!
    e.setIntegerValueField(.mouseEventClickState, value: 1)
    e.post(tap: .cghidEventTap)

I then created a shell script in Script Editor to trigger the executable:

do shell script "/Users/bobby/Documents/AppleScripts/Mouse/Executables/Click"

Change the location based on where you saved the executable.

Upvotes: 2

CJK
CJK

Reputation: 6092

    use framework "Foundation"


    property NSEvent : a reference to current application's NSEvent
    property NSScreen : a reference to current application's NSScreen


    # Get display size
    set display to NSDeviceSize ¬
        of deviceDescription() ¬
        of item 1 ¬
        of NSScreen's screens() as record

    # Get mouse location (relative to the bottom-left of the screen)
    set mouseLocation to {x, y} of (NSEvent's mouseLocation as record)

    # Calculate mouse y-coordinate so it's relative to the top of the screen
    set mouseLocation's item 2 to (display's height) - (mouseLocation's item 2)


    tell application "System Events" to click at the mouseLocation

Upvotes: 2

deek5
deek5

Reputation: 365

You can also in applescrit using command-tool cliclick

dowload https://github.com/BlueM/cliclick

unzip cliclick-master.zip

in a Terminal

cd  /Users/yourname/Downloads/cliclick-master

make

now you have in /Users/yourname/Downloads/cliclick-master/

cliclick , command tool for using a mouse in applescript with do shell script

copy cliclick in /usr/local/bin folder

in a Terminal

cp -f /Users/yourname/Downloads/cliclick-master/cliclick  /usr/local/bin/

    in applescript for example

    do shell script "/usr/local/bin/cliclick  " & quoted form of "c:12,34"

    will click at the point with x coordinate

              12 and y coordinate 34.

    in a Terminal for LIST OF COMMANDS

    cliclick -h

 LIST OF COMMANDS

  c:x,y   Will CLICK at the point with the given coordinates.
          Example: “c:12,34” will click at the point with x coordinate
          12 and y coordinate 34. Instead of x and y values, you may
          also use “.”, which means: the current position. Using “.” is
          equivalent to using relative zero values “c:+0,+0”.

  dc:x,y  Will DOUBLE-CLICK at the point with the given coordinates.
          Example: “dc:12,34” will double-click at the point with x
          coordinate 12 and y coordinate 34. Instead of x and y values,
          you may also use “.”, which means: the current position.

  dd:x,y  Will press down to START A DRAG at the given coordinates.
          Example: “dd:12,34” will press down at the point with x
          coordinate 12 and y coordinate 34. Instead of x and y values,
          you may also use “.”, which means: the current position.

  du:x,y  Will release to END A DRAG at the given coordinates.
          Example: “du:112,134” will release at the point with x
          coordinate 112 and y coordinate 134.

  kd:keys Will trigger a KEY DOWN event for a comma-separated list of
          modifier keys. Possible keys are:
          “alt”, “cmd”, “ctrl”, “fn”, “shift”
          Example: “kd:cmd,alt” will press the command key and the
          option key (and will keep them down until you release them
          with another command)

  kp:key  Will emulate PRESSING A KEY (key down + key up). Possible keys are:
          “arrow-down”, “arrow-left”, “arrow-right”, “arrow-up”, “delete”, “end”,
          “esc”, “f1”, “f2”, “f3”, “f4”, “f5”, “f6”, “f7”, “f8”, “f9”, “f10”, “f11”,
          “f12”, “f13”, “f14”, “f15”, “f16”, “fwd-delete”, “help”, “home”, “mute”,
          “page-down”, “page-up”, “return”, “space”, “tab”, “volume-down”, “volume-up”
          Example: “kp:return” will hit the return key.

  ku:keys Will trigger a KEY UP event for a comma-separated list of
          modifier keys. Possible keys are:
          “alt”, “cmd”, “ctrl”, “fn”, “shift”
          Example: “ku:cmd,ctrl” will release the command key and the
          control key (which will only have an effect if you performed
          a “key down” before)

  m:x,y   Will MOVE the mouse to the point with the given coordinates.
          Example: “m:12,34” will move the mouse to the point with
          x coordinate 12 and y coordinate 34.

  p[:str] Will PRINT the given string. If the string is “.”, the
          current MOUSE POSITION is printed. As a convenience, you can skip
          the string completely and just write “p” to get the current position.
          Example: “p:.” or “p” will print the current mouse position
          Example: “p:'Hello world'” will print “Hello world”

  tc:x,y  Will TRIPLE-CLICK at the point with the given coordinates.
          Example: “tc:12,34” will triple-click at the point with x
          coordinate 12 and y coordinate 34. Instead of x and y values,
          you may also use “.”, which means: the current position.

  t:text  Will emulate typing the given text into the frontmost application.
          If the text includes space(s), it must be enclosed in quotes.
          Example: “type:Test” will type “Test” 
          Example: “type:'Viele Grüße'” will type “Viele Grüße”

  w:ms    Will WAIT/PAUSE for the given number of milliseconds.
          Example: “w:500” will pause command execution for half a second

Upvotes: 2

deek5
deek5

Reputation: 365

below an example with python in applescript , python is living in your system naturaly,no installation to be planned.

set x to 30

set y to 5

set l to 50 -- click same location 50 times



do shell script "

/usr/bin/python <<END

import sys

import time

from Quartz.CoreGraphics import *

def mouseEvent(type, posx, posy):

          theEvent = CGEventCreateMouseEvent(None, type, (posx,posy), kCGMouseButtonLeft)

          CGEventPost(kCGHIDEventTap, theEvent)

def mousemove(posx,posy):

          mouseEvent(kCGEventMouseMoved, posx,posy);

def mouseclick(posx,posy):

          mouseEvent(kCGEventLeftMouseDown, posx,posy);

          mouseEvent(kCGEventLeftMouseUp, posx,posy);

ourEvent = CGEventCreate(None);

currentpos=CGEventGetLocation(ourEvent);             # Save current mouse position

for x in range(0, " & l & "):

          mouseclick(" & x & "," & y & ");

mousemove(int(currentpos.x),int(currentpos.y));      # Restore mouse position

END"

Upvotes: 3

wch1zpink
wch1zpink

Reputation: 3142

You should definitely grab the AppleScript toolbox. It has scripting commands to get your mouse location and mouse clicking. AppleScript Toolbox is a scripting addition/AppleScript-plugin (a.k.a. “OSAX”) providing commands not available in regular AppleScript.

Upvotes: 0

Related Questions