X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=NJOutputMouseButton.m;fp=NJOutputMouseButton.m;h=0cc403f9e533932050d2ea019b3588068f451f7d;hp=0000000000000000000000000000000000000000;hb=dcedf147ddcb6c21768cea94a2f06b93007d2a82;hpb=e2a4d830dd9817f6a515a3b1b6aa152d3bb98c2b diff --git a/NJOutputMouseButton.m b/NJOutputMouseButton.m new file mode 100644 index 0000000..0cc403f --- /dev/null +++ b/NJOutputMouseButton.m @@ -0,0 +1,51 @@ +// +// 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