Global Mouse Tracking - hewigovens/hewigovens.github.com GitHub Wiki
###OS 10.6+
NSEvent
NSEventMask mask = NSRightMouseUpMask | NSCursorUpdateMask;
[NSEvent addGlobalMonitorForEventsMatchingMask:mask handler:^(NSEvent *event) {
NSLog(@"%@", event);
//get CGEventRef, origin point is Left-Bottom, so NSPoint is not equal to CGPoint
CGEventRef cgEventRef = [event CGEvent];
CGPoint cgPoint = CGEventGetLocation(cgEventRef);
}];
###OS prior to 10.6, CGEventTap
in CoreGraphics.framework
CGEventMask eventMask = CGEventMaskBit(kCGEventMouseMoved);
mouseEventTap = CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault, eventMask, mouseEventCallback, NULL);
CFRunLoopSourceRef runLoopSource = CFMachPortCreateRunLoopSource(kCFAllocatorDefault, mouseEventTap, 0);
CFRunLoopAddSource(CFRunLoopGetCurrent(), runLoopSource, kCFRunLoopCommonModes);
CFRelease(mouseEventTap);
CFRelease(runLoopSource);
mouseEventCallback
static CGEventRef mouseEventCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon)
{
CGPoint point = CGEventGetLocation(event);
NSLog(@"click at x:%f, y:%f", point.x, point.y);
}