5 // Created by Sam McCall on 5/05/09.
10 #import "NJOutputKeyPress.h"
11 #import "NJOutputMapping.h"
12 #import "NJOutputMouseMove.h"
13 #import "NJOutputMouseButton.h"
14 #import "NJOutputMouseScroll.h"
16 @implementation NJOutput {
20 + (NSString *)serializationCode {
21 [self doesNotRecognizeSelector:_cmd];
25 - (NSDictionary *)serialize {
26 [self doesNotRecognizeSelector:_cmd];
30 - (BOOL)isEqual:(id)object {
31 return [object isKindOfClass:NJOutput.class]
32 && [[self serialize] isEqual:[object serialize]];
36 return [[self serialize] hash];
39 + (NJOutput *)outputDeserialize:(NSDictionary *)serialization
40 withMappings:(NSArray *)mappings {
41 // Don't crash loading old/bad mappings (but don't load them either).
42 if (![serialization isKindOfClass:NSDictionary.class])
44 NSString *type = serialization[@"type"];
45 for (Class cls in @[NJOutputKeyPress.class,
46 NJOutputMapping.class,
47 NJOutputMouseMove.class,
48 NJOutputMouseButton.class,
49 NJOutputMouseScroll.class
51 if ([type isEqualToString:cls.serializationCode])
52 return [cls outputDeserialize:serialization withMappings:mappings];
64 - (BOOL)update:(NJDeviceController *)jc {
68 - (BOOL)isContinuous {
76 - (void)setRunning:(BOOL)newRunning {
77 if (running != newRunning) {