I'm using the code below in a command line tool app to perform mouse clicks. I use a shell script to execute the code, and a dictation command to trigger it. This code will work in just about every program except Finder, and I don't know why. Single mouse clicks work fine, but not double or triple. I don't know what the problem could be.
// Get location
var ml = NSEvent.mouseLocation
ml.y = NSHeight(NSScreen.screens[0].frame) - ml.y
let location = CGPoint(x: ml.x, y: ml.y)
// Clicks
let e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, mouseCursorPosition: location, mouseButton: .left)!
e.setIntegerValueField(.mouseEventClickState, value: 2) // double click
e.post(tap: .cghidEventTap)
CGEvent(mouseEventSource: nil, mouseType: .leftMouseUp, mouseCursorPosition: location, mouseButton: .left)!.post(tap: .cghidEventTap)
Here you go
/// Clicks left mouse button twice
static func doubleClick() {
var e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, mouseCursorPosition: Mouse.location, mouseButton: .left)!
e.post(tap: .cghidEventTap)
e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseUp, mouseCursorPosition: Mouse.location, mouseButton: .left)!
e.post(tap: .cghidEventTap)
e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseDown, mouseCursorPosition: Mouse.location, mouseButton: .left)!
e.setIntegerValueField(.mouseEventClickState, value: 2)
e.post(tap: .cghidEventTap)
e = CGEvent(mouseEventSource: nil, mouseType: .leftMouseUp, mouseCursorPosition: Mouse.location, mouseButton: .left)!
e.setIntegerValueField(.mouseEventClickState, value: 2)
e.post(tap: .cghidEventTap)
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.