// // NJOutputMouseButton.m // Enjoy // // Created by Yifeng Huang on 7/27/12. // #import "NJOutputMouseButton.h" @implementation NJOutputMouseButton + (NSString *)serializationCode { return @"mouse button"; } - (NSDictionary *)serialize { return @{ @"type": @"mouse button", @"button": @(_button) }; } + (NJOutput *)outputDeserialize:(NSDictionary *)serialization withMappings:(NSArray *)mappings { NJOutputMouseButton *output = [[NJOutputMouseButton alloc] init]; output.button = [serialization[@"button"] intValue]; return output; } -(void) trigger { CGFloat height = NSScreen.mainScreen.frame.size.height; NSPoint mouseLoc = NSEvent.mouseLocation; CGEventType eventType = (_button == kCGMouseButtonLeft) ? kCGEventLeftMouseDown : kCGEventRightMouseDown; CGEventRef click = CGEventCreateMouseEvent(NULL, eventType, CGPointMake(mouseLoc.x, height - mouseLoc.y), _button); CGEventPost(kCGHIDEventTap, click); CFRelease(click); } -(void) untrigger { CGFloat height = NSScreen.mainScreen.frame.size.height; NSPoint mouseLoc = NSEvent.mouseLocation; CGEventType eventType = (_button == kCGMouseButtonLeft) ? kCGEventLeftMouseUp : kCGEventRightMouseUp; CGEventRef click = CGEventCreateMouseEvent(NULL, eventType, CGPointMake(mouseLoc.x, height - mouseLoc.y), _button); CGEventPost(kCGHIDEventTap, click); CFRelease(click); } @end