NJOutputMouseMove *output = [[NJOutputMouseMove alloc] init];
output.axis = [serialization[@"axis"] intValue];
output.speed = [serialization[@"speed"] floatValue];
NJOutputMouseMove *output = [[NJOutputMouseMove alloc] init];
output.axis = [serialization[@"axis"] intValue];
output.speed = [serialization[@"speed"] floatValue];
#define CLAMP(a, l, h) MIN(h, MAX(a, l))
#define CLAMP(a, l, h) MIN(h, MAX(a, l))
mouseLoc.x = CLAMP(mouseLoc.x + dx, 0, size.width - 1);
mouseLoc.y = CLAMP(mouseLoc.y - dy, 0, size.height - 1);
mouseLoc.x = CLAMP(mouseLoc.x + dx, 0, size.width - 1);
mouseLoc.y = CLAMP(mouseLoc.y - dy, 0, size.height - 1);
CGEventRef move = CGEventCreateMouseEvent(NULL, kCGEventMouseMoved,
CGPointMake(mouseLoc.x, size.height - mouseLoc.y),
CGEventRef move = CGEventCreateMouseEvent(NULL, kCGEventMouseMoved,
CGPointMake(mouseLoc.x, size.height - mouseLoc.y),