aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DomeKey/HeadphoneKey.h3
-rw-r--r--DomeKey/HeadphoneKey.m33
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];
}