Prettify code

use switch statement instead of a bunch of ifs
master
Jacopo De Simoi 1 year ago
parent f82f8585ab
commit 0b8243b220
  1. 61
      src/keyboard.c

@ -508,59 +508,56 @@ static long process_descriptor(struct keyboard *kbd, uint8_t code,
break; break;
} }
} }
switch (kbd->delayedphase) {
if (kbd->delayedphase == 1) { case 1:
if (pressed) { if (pressed) {
// Another key is pressed; queue the event… how can I queue // Another key is pressed; queue the event… how can I queue
// the event here? // the event here?
dbg("pressed second key");
kbd->delayedcode1 = code; kbd->delayedcode1 = code;
kbd->delayeddescriptor1 = *d; kbd->delayeddescriptor1 = *d;
kbd->delayedphase = 2; kbd->delayedphase = 2;
/// should now bail out /// should now bail out
return 0; return 0;
} else { } else {
kbd->delayedphase = 3; kbd->delayedphase = 3; // resolve the delay
// special processing: we declare that the previous press is // special processing: we declare that the previous press is
// not meant to be a modifier; so we replay it, but frozen. // not meant to be a modifier; so we replay it, but frozen.
kbd->keyfrozenstate[kbd->delayedcode0] = 1; kbd->keyfrozenstate[kbd->delayedcode0] = 1;
dbg("1 and release: freeze and press");
process_descriptor(kbd, kbd->delayedcode0, process_descriptor(kbd, kbd->delayedcode0,
&kbd->delayeddescriptor0, dl, 1, time); &kbd->delayeddescriptor0, dl, 1, time);
// since the keypress was treated as frozen, the (eventual) // since the keypress was treated as frozen, the (eventual)
// keyrelease should also be treated as frozen // keyrelease should also be treated as frozen
kbd->keyfrozenstate[kbd->delayedcode0] = 1; kbd->keyfrozenstate[kbd->delayedcode0] = 1;
kbd->delayedphase = 0; kbd->delayedphase = 0;
dbg("1 and release: freeze and run");
// then let everybody run free // then let everybody run free
} }
} else if (kbd->delayedphase == 2) { break;
// special processing case 2:
dbg("resolve the delay"); kbd->delayedphase = 3; // resolve the delay
kbd->delayedphase = 3;
if (!pressed && code == kbd->delayedcode0) { if (!pressed && code == kbd->delayedcode0) {
// this is the whole point of the delayed business // this is the whole point of the delayed business
dbg("supposedly not wanting to use it as a mod"); dbg("supposedly not wanting to use it as a mod");
kbd->keyfrozenstate[kbd->delayedcode0] = 1; kbd->keyfrozenstate[kbd->delayedcode0] = 1;
process_descriptor(kbd, kbd->delayedcode0, process_descriptor(kbd, kbd->delayedcode0,
&kbd->delayeddescriptor0, dl, 1, time); &kbd->delayeddescriptor0, dl, 1, time);
kbd->keyfrozenstate[kbd->delayedcode0] = 1; kbd->keyfrozenstate[kbd->delayedcode0] = 1;
process_descriptor(kbd, kbd->delayedcode0, process_descriptor(kbd, kbd->delayedcode0,
&kbd->delayeddescriptor0, dl, 0, time); &kbd->delayeddescriptor0, dl, 0, time);
process_descriptor(kbd, kbd->delayedcode1, process_descriptor(kbd, kbd->delayedcode1,
&kbd->delayeddescriptor1, dl, 1, time); &kbd->delayeddescriptor1, dl, 1, time);
kbd->delayedphase = 0; kbd->delayedphase = 0;
return 0; return 0;
} else { } else {
dbg("supposedly wanted to use it as a modifier"); process_descriptor(kbd, kbd->delayedcode0,
process_descriptor(kbd, kbd->delayedcode0, &kbd->delayeddescriptor0, dl, 1, time);
&kbd->delayeddescriptor0, dl, 1, time); process_descriptor(kbd, kbd->delayedcode1,
process_descriptor(kbd, kbd->delayedcode1, &kbd->delayeddescriptor1, dl, 1, time);
&kbd->delayeddescriptor1, dl, 1, time); //.. and let go with processing of the current event
//.. and let go with processing of the current event }
}
kbd->delayedphase = 0; kbd->delayedphase = 0;
default:
break;
} }
switch (d->op) { switch (d->op) {

Loading…
Cancel
Save