Move logic into messages rather than directly in the callback functions.
[enjoyable.git] / TargetKeyboard.m
index e7bd8e7..a3a0b51 100644 (file)
@@ -7,32 +7,35 @@
 
 #import "TargetKeyboard.h"
 
+#import "KeyInputTextView.h"
+
 @implementation TargetKeyboard
 
-@synthesize vk, descr;
++ (NSString *)serializationCode {
+    return @"key";
+}
 
--(NSString*) stringify {
-       return [[NSString alloc] initWithFormat: @"key~%d~%@", vk, descr];
+- (NSDictionary *)serialize {
+    return @{ @"type": @"key", @"key": @(_vk) };
 }
 
-+(TargetKeyboard*) unstringifyImpl: (NSArray*) comps {
-       NSParameterAssert([comps count] == 3);
-       TargetKeyboard* target = [[TargetKeyboard alloc] init];
-       [target setVk: [comps[1] integerValue]];
-       [target setDescr: comps[2]];
-       return target;
++ (Target *)targetDeserialize:(NSDictionary *)serialization
+                  withConfigs:(NSArray *)configs {
+    TargetKeyboard *target = [[TargetKeyboard alloc] init];
+    target.vk = [serialization[@"key"] intValue];
+    return target;
 }
 
--(void) trigger {
-       CGEventRef keyDown = CGEventCreateKeyboardEvent(NULL, vk, true);
-       CGEventPost(kCGHIDEventTap, keyDown);
-       CFRelease(keyDown);
+- (void)trigger {
+    CGEventRef keyDown = CGEventCreateKeyboardEvent(NULL, _vk, YES);
+    CGEventPost(kCGHIDEventTap, keyDown);
+    CFRelease(keyDown);
 }
 
--(void) untrigger {
-       CGEventRef keyUp = CGEventCreateKeyboardEvent(NULL, vk, false);
-       CGEventPost(kCGHIDEventTap, keyUp);
-       CFRelease(keyUp);
+- (void)untrigger {
+    CGEventRef keyUp = CGEventCreateKeyboardEvent(NULL, _vk, NO);
+    CGEventPost(kCGHIDEventTap, keyUp);
+    CFRelease(keyUp);
 }
 
 @end