X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=TargetMouseBtn.m;h=46234ec7c3155c0d99e2ae0e34c5867c524fa486;hp=5137f2be5cf4001f92ff1494c683090ff2f5de34;hb=9584becb2e5469e8f482d73e6f0c9c3bf879e0db;hpb=530009447c5bbd360ac5023979cffc6d32a28df3 diff --git a/TargetMouseBtn.m b/TargetMouseBtn.m index 5137f2b..46234ec 100644 --- a/TargetMouseBtn.m +++ b/TargetMouseBtn.m @@ -10,37 +10,43 @@ @implementation TargetMouseBtn -@synthesize which; ++ (NSString *)serializationCode { + return @"mbtn"; +} --(NSString*) stringify { - return [[NSString alloc] initWithFormat: @"mbtn~%d", which]; +- (NSDictionary *)serialize { + return @{ @"type": @"mbtn", @"button": @(_button) }; } -+(TargetMouseBtn*) unstringifyImpl: (NSArray*) comps { - NSParameterAssert([comps count] == 2); - TargetMouseBtn* target = [[TargetMouseBtn alloc] init]; - [target setWhich: [[comps objectAtIndex:1] integerValue]]; ++ (Target *)targetDeserialize:(NSDictionary *)serialization + withConfigs:(NSArray *)configs { + TargetMouseBtn *target = [[TargetMouseBtn alloc] init]; + target.button = [serialization[@"button"] intValue]; return target; } -(void) trigger { + NSRect screenRect = [[NSScreen mainScreen] frame]; + CGFloat height = screenRect.size.height; NSPoint mouseLoc = [NSEvent mouseLocation]; - CGEventType eventType = (which == kCGMouseButtonLeft) ? kCGEventLeftMouseDown : kCGEventRightMouseDown; + CGEventType eventType = (_button == kCGMouseButtonLeft) ? kCGEventLeftMouseDown : kCGEventRightMouseDown; CGEventRef click = CGEventCreateMouseEvent(NULL, eventType, - CGPointMake(mouseLoc.x, mouseLoc.y), - which); + CGPointMake(mouseLoc.x, height - mouseLoc.y), + _button); CGEventPost(kCGHIDEventTap, click); CFRelease(click); } -(void) untrigger { + NSRect screenRect = [[NSScreen mainScreen] frame]; + CGFloat height = screenRect.size.height; NSPoint mouseLoc = [NSEvent mouseLocation]; - CGEventType eventType = (which == kCGMouseButtonLeft) ? kCGEventLeftMouseUp : kCGEventRightMouseUp; + CGEventType eventType = (_button == kCGMouseButtonLeft) ? kCGEventLeftMouseUp : kCGEventRightMouseUp; CGEventRef click = CGEventCreateMouseEvent(NULL, eventType, - CGPointMake(mouseLoc.x, mouseLoc.y), - which); + CGPointMake(mouseLoc.x, height - mouseLoc.y), + _button); CGEventPost(kCGHIDEventTap, click); CFRelease(click); }