From 0b8243b22064ac3e4b7867cdd97d036eed578f9a Mon Sep 17 00:00:00 2001 From: Jacopo De Simoi Date: Thu, 7 Nov 2024 23:45:32 -0500 Subject: [PATCH] Prettify code use switch statement instead of a bunch of ifs --- src/keyboard.c | 61 ++++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/src/keyboard.c b/src/keyboard.c index 30fae9f..388ff0c 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -508,59 +508,56 @@ static long process_descriptor(struct keyboard *kbd, uint8_t code, break; } } - - if (kbd->delayedphase == 1) { + switch (kbd->delayedphase) { + case 1: if (pressed) { // Another key is pressed; queue the event… how can I queue // the event here? - dbg("pressed second key"); kbd->delayedcode1 = code; kbd->delayeddescriptor1 = *d; kbd->delayedphase = 2; /// should now bail out return 0; } else { - kbd->delayedphase = 3; + kbd->delayedphase = 3; // resolve the delay // special processing: we declare that the previous press is // not meant to be a modifier; so we replay it, but frozen. kbd->keyfrozenstate[kbd->delayedcode0] = 1; - dbg("1 and release: freeze and press"); process_descriptor(kbd, kbd->delayedcode0, - &kbd->delayeddescriptor0, dl, 1, time); + &kbd->delayeddescriptor0, dl, 1, time); // since the keypress was treated as frozen, the (eventual) // keyrelease should also be treated as frozen kbd->keyfrozenstate[kbd->delayedcode0] = 1; kbd->delayedphase = 0; - dbg("1 and release: freeze and run"); // then let everybody run free } - } else if (kbd->delayedphase == 2) { - // special processing - dbg("resolve the delay"); - kbd->delayedphase = 3; + break; + case 2: + kbd->delayedphase = 3; // resolve the delay if (!pressed && code == kbd->delayedcode0) { - // this is the whole point of the delayed business - dbg("supposedly not wanting to use it as a mod"); - kbd->keyfrozenstate[kbd->delayedcode0] = 1; - process_descriptor(kbd, kbd->delayedcode0, - &kbd->delayeddescriptor0, dl, 1, time); - kbd->keyfrozenstate[kbd->delayedcode0] = 1; - process_descriptor(kbd, kbd->delayedcode0, - &kbd->delayeddescriptor0, dl, 0, time); - process_descriptor(kbd, kbd->delayedcode1, - &kbd->delayeddescriptor1, dl, 1, time); - kbd->delayedphase = 0; - - return 0; - } else { - dbg("supposedly wanted to use it as a modifier"); - process_descriptor(kbd, kbd->delayedcode0, - &kbd->delayeddescriptor0, dl, 1, time); - process_descriptor(kbd, kbd->delayedcode1, - &kbd->delayeddescriptor1, dl, 1, time); - //.. and let go with processing of the current event - } + // this is the whole point of the delayed business + dbg("supposedly not wanting to use it as a mod"); + kbd->keyfrozenstate[kbd->delayedcode0] = 1; + process_descriptor(kbd, kbd->delayedcode0, + &kbd->delayeddescriptor0, dl, 1, time); + kbd->keyfrozenstate[kbd->delayedcode0] = 1; + process_descriptor(kbd, kbd->delayedcode0, + &kbd->delayeddescriptor0, dl, 0, time); + process_descriptor(kbd, kbd->delayedcode1, + &kbd->delayeddescriptor1, dl, 1, time); + kbd->delayedphase = 0; + + return 0; + } else { + process_descriptor(kbd, kbd->delayedcode0, + &kbd->delayeddescriptor0, dl, 1, time); + process_descriptor(kbd, kbd->delayedcode1, + &kbd->delayeddescriptor1, dl, 1, time); + //.. and let go with processing of the current event + } kbd->delayedphase = 0; + default: + break; } switch (d->op) {