forked from shirosaki/enjoyable
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NJOutputKeyPress.m
46 lines (37 loc) · 1.04 KB
/
NJOutputKeyPress.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//
// NJOutputKeyPress.m
// Enjoy
//
// Created by Sam McCall on 5/05/09.
//
#import "NJOutputKeyPress.h"
#import "NJKeyInputField.h"
@implementation NJOutputKeyPress
+ (NSString *)serializationCode {
return @"key press";
}
- (NSDictionary *)serialize {
return _keyCode != NJKeyInputFieldEmpty
? @{ @"type": self.class.serializationCode, @"key": @(_keyCode) }
: nil;
}
+ (NJOutput *)outputWithSerialization:(NSDictionary *)serialization {
NJOutputKeyPress *output = [[NJOutputKeyPress alloc] init];
output.keyCode = [serialization[@"key"] shortValue];
return output;
}
- (void)trigger {
if (_keyCode != NJKeyInputFieldEmpty) {
CGEventRef keyDown = CGEventCreateKeyboardEvent(NULL, _keyCode, YES);
CGEventPost(kCGHIDEventTap, keyDown);
CFRelease(keyDown);
}
}
- (void)untrigger {
if (_keyCode != NJKeyInputFieldEmpty) {
CGEventRef keyUp = CGEventCreateKeyboardEvent(NULL, _keyCode, NO);
CGEventPost(kCGHIDEventTap, keyUp);
CFRelease(keyUp);
}
}
@end