+++ /dev/null
-//
-// NJOutputMouseScroll.m
-// Enjoy
-//
-// Created by Yifeng Huang on 7/28/12.
-//
-
-#import "NJOutputMouseScroll.h"
-
-@implementation NJOutputMouseScroll
-
-+ (NSString *)serializationCode {
- return @"mouse scroll";
-}
-
-- (NSDictionary *)serialize {
- return @{ @"type": self.class.serializationCode,
- @"direction": @(_direction),
- @"speed": @(_speed)
- };
-}
-
-+ (NJOutput *)outputDeserialize:(NSDictionary *)serialization
- withMappings:(NSArray *)mappings {
- NJOutputMouseScroll *output = [[NJOutputMouseScroll alloc] init];
- output.direction = [serialization[@"direction"] intValue];
- output.speed = [serialization[@"direction"] floatValue];
- return output;
-}
-
-- (BOOL)isContinuous {
- return !!self.speed;
-}
-
-- (void)trigger {
- if (!self.speed) {
- CGEventRef scroll = CGEventCreateScrollWheelEvent(NULL,
- kCGScrollEventUnitLine,
- 1,
- _direction);
- CGEventPost(kCGHIDEventTap, scroll);
- CFRelease(scroll);
- }
-}
-
-- (BOOL)update:(NJDeviceController *)jc {
- if (self.magnitude < 0.05f)
- return NO; // dead zone
-
- int amount = (int)(_speed * self.magnitude * _direction);
- CGEventRef scroll = CGEventCreateScrollWheelEvent(NULL,
- kCGScrollEventUnitPixel,
- 1,
- amount);
- CGEventPost(kCGHIDEventTap, scroll);
- CFRelease(scroll);
-
- return YES;
-}
-
-@end