From c77fe87379cf59990d6c29c2523bf744aa48124f Mon Sep 17 00:00:00 2001 From: Markus Date: Fri, 16 Aug 2013 20:35:03 +0200 Subject: [PATCH] Added push-and-hold for modifier keys --- firmware/keyboard.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/firmware/keyboard.c b/firmware/keyboard.c index 7bbb9b5..725faea 100644 --- a/firmware/keyboard.c +++ b/firmware/keyboard.c @@ -296,7 +296,6 @@ void continueExecution() { } } else { //press - if (!flag_keyPress) { if (reportBuffer[x] == 0) { //we found an empty key reportBuffer[x] = instr; //press it @@ -315,8 +314,18 @@ void continueExecution() { } newData = 1; //exit loop } - else if (instr >= 224 && instr <= 231) reportBuffer[0] |= (1 << (instr - 224)); // MOD-Keys (en) - else if (instr >= 232 && instr <= 239) reportBuffer[0] &= ~(1 << (instr - 232)); // MOD-Keys (dis) + else if (instr >= 224 && instr <= 231) { + //reportBuffer[0] |= (1 << (instr - 224)); // MOD-Keys (en) + + if ((keyType[oldKey-1] == KEYTYPE_TEXT) || keyAction == KEYACTION_DOWN) reportBuffer[0] |= (1 << (instr - 224)); // MOD-Keys (en) + else reportBuffer[0] &= ~(1 << (instr - 224)); // MOD-Keys (dis) + } + else if (instr >= 232 && instr <= 239) { + reportBuffer[0] &= ~(1 << (instr - 232)); // MOD-Keys (dis) + + if ((keyType[oldKey-1] == KEYTYPE_TEXT) || keyAction == KEYACTION_DOWN) reportBuffer[0] &= ~(1 << (instr - 232)); // MOD-Keys (dis) + else reportBuffer[0] |= (1 << (instr - 232)); // MOD-Keys (en) + } // MODS-KEYS are enabled/disabled using different commands. This will make it easier when being in text-mode. /* OLD PART FOR MOD-KEYS: Replaced by new command set New one is independent from mode