- (void)trigger {
CGFloat height = NSScreen.mainScreen.frame.size.height;
NSPoint mouseLoc = NSEvent.mouseLocation;
- CGEventType eventType = (_button == kCGMouseButtonLeft) ? kCGEventLeftMouseDown : kCGEventRightMouseDown;
+ CGEventType eventType = _button == kCGMouseButtonLeft ? kCGEventLeftMouseDown
+ : _button == kCGMouseButtonRight ? kCGEventRightMouseDown
+ : kCGEventOtherMouseDown;
CGEventRef click = CGEventCreateMouseEvent(NULL,
eventType,
CGPointMake(mouseLoc.x, height - mouseLoc.y),
_button);
if (clickCount >= 3 || [upTime compare:[NSDate date]] == NSOrderedAscending
- || !CGPointEqualToPoint(NSEvent.mouseLocation, clickPosition))
+ || !CGPointEqualToPoint(mouseLoc, clickPosition))
clickCount = 1;
else
++clickCount;
CGEventSetIntegerValueField(click, kCGMouseEventClickState, clickCount);
-
CGEventPost(kCGHIDEventTap, click);
CFRelease(click);
+ clickPosition = mouseLoc;
}
- (void)untrigger {
upTime = [NJOutputMouseButton dateWithClickInterval];
- clickPosition = NSEvent.mouseLocation;
+ NSPoint mouseLoc = NSEvent.mouseLocation;
CGFloat height = NSScreen.mainScreen.frame.size.height;
- CGEventType eventType = (_button == kCGMouseButtonLeft) ? kCGEventLeftMouseUp : kCGEventRightMouseUp;
+ CGEventType eventType = _button == kCGMouseButtonLeft ? kCGEventLeftMouseUp
+ : _button == kCGMouseButtonRight ? kCGEventRightMouseUp
+ : kCGEventOtherMouseUp;
CGEventRef click = CGEventCreateMouseEvent(NULL,
eventType,
- CGPointMake(clickPosition.x, height - clickPosition.y),
+ CGPointMake(mouseLoc.x, height - mouseLoc.y),
_button);
CGEventSetIntegerValueField(click, kCGMouseEventClickState, clickCount);
CGEventPost(kCGHIDEventTap, click);
CFRelease(click);
}
+- (int)humanIndexedButton {
+ switch (_button) {
+ case kCGMouseButtonLeft: return 0;
+ case kCGMouseButtonCenter: return 1;
+ case kCGMouseButtonRight: return 2;
+ default: return 0;
+ }
+}
+
+- (void)setHumanIndexedButton:(int)humanIndexedButton {
+ switch (humanIndexedButton) {
+ case 0: _button = kCGMouseButtonLeft; break;
+ case 1: _button = kCGMouseButtonCenter; break;
+ case 2: _button = kCGMouseButtonRight; break;
+ default: _button = kCGMouseButtonLeft;
+ }
+}
+
@end