import CoreGraphics
import Foundation
// usage: click x y [double|shift|cmd]
let a = CommandLine.arguments
let x = Double(a[1])!, y = Double(a[2])!
let mod = a.count > 3 ? a[3] : ""
let p = CGPoint(x: x, y: y)
var flags: CGEventFlags = []
if mod == "shift" { flags = .maskShift }
if mod == "cmd" { flags = .maskCommand }
func post(_ t: CGEventType, _ clicks: Int64) {
  let e = CGEvent(mouseEventSource: nil, mouseType: t, mouseCursorPosition: p, mouseButton: .left)!
  e.setIntegerValueField(.mouseEventClickState, value: clicks)
  e.flags = flags
  e.post(tap: .cghidEventTap)
}
let mv = CGEvent(mouseEventSource: nil, mouseType: .mouseMoved, mouseCursorPosition: p, mouseButton: .left)!
mv.post(tap: .cghidEventTap); usleep(80000)
post(.leftMouseDown, 1); usleep(60000); post(.leftMouseUp, 1)
if mod == "double" { usleep(80000); post(.leftMouseDown, 2); usleep(60000); post(.leftMouseUp, 2) }
usleep(150000)
print("clicked \(x),\(y) \(mod)")
