diff options
-rw-r--r-- | DomeKey/HeadphoneKey.h | 3 | ||||
-rw-r--r-- | DomeKey/HeadphoneKey.m | 33 |
2 files changed, 25 insertions, 11 deletions
diff --git a/DomeKey/HeadphoneKey.h b/DomeKey/HeadphoneKey.h index cad78ab..9a8bab1 100644 --- a/DomeKey/HeadphoneKey.h +++ b/DomeKey/HeadphoneKey.h @@ -22,7 +22,8 @@ static const unsigned int TIMEOUT_MILLISECONDS = 1000; @interface HeadphoneKey : NSObject { NSArray *_mikeys; NSMutableArray *_key_buffer; - const Trigger *_in_mode; +// const Trigger *_in_mode; + Trigger *_in_mode; } - (void)handleDeadKey:(HeadphoneButton)button; diff --git a/DomeKey/HeadphoneKey.m b/DomeKey/HeadphoneKey.m index b55c171..47583a7 100644 --- a/DomeKey/HeadphoneKey.m +++ b/DomeKey/HeadphoneKey.m @@ -15,6 +15,7 @@ self = [super init]; if (self) { _key_buffer = [[NSMutableArray alloc] initWithCapacity:5]; + _in_mode = NULL; _mikeys = [DDHidAppleMikey allMikeys]; [_mikeys makeObjectsPerformSelector:@selector(setDelegate:) @@ -79,19 +80,31 @@ .length = count }; - const CKeyActionResult *result = c_run_key_action(trigger, NULL); - - if (result->kind && - *result->kind == ActionKind_Map) { - const char *c = result->action; - int i = 0; - while (*c) { - [KeyboardSimulator simpleKeyPressWithKey:result->action[i]]; - i++; - *c++; + const CKeyActionResult *result = c_run_key_action(trigger, _in_mode); + +// if ([self maybeSwitchToMode:result]) { +// goto cleanup; +// } + + if (result->kind) { + if (*result->kind == ActionKind_Map) { + const char *c = result->action; + int i = 0; + while (*c) { + [KeyboardSimulator simpleKeyPressWithKey:result->action[i]]; + i++; + *c++; + } + } + else if (*result->kind == ActionKind_Mode) { +// [self maybeSwitchToMode:result]; + _in_mode = malloc(sizeof(Trigger)) + *_in_mode = *result->in_mode; +// memcpy(_in_mode, result->in_mode, sizeof(const Trigger)); } } +cleanup: [_key_buffer removeAllObjects]; } |