summaryrefslogtreecommitdiffstats
path: root/keyboard
diff options
context:
space:
mode:
authorChristopher Browne <cbbrowne@ca.afilias.info>2016-02-08 17:25:55 +0100
committerChristopher Browne <cbbrowne@ca.afilias.info>2016-02-08 17:25:55 +0100
commit8079dc06825371b509da245e59cbd97248589e18 (patch)
treec3be8d9c50ce5861922e23d4323fdbc82056f1a7 /keyboard
parentbbcc1046a6c7417367c602b7ff46df1cef93804f (diff)
downloadqmk_firmware-8079dc06825371b509da245e59cbd97248589e18.tar.gz
qmk_firmware-8079dc06825371b509da245e59cbd97248589e18.tar.xz
Eliminate switch statement by using contiguous character ranges
Diffstat (limited to 'keyboard')
-rw-r--r--keyboard/planck/keymaps/cbbrowne/keymap.c164
1 files changed, 12 insertions, 152 deletions
diff --git a/keyboard/planck/keymaps/cbbrowne/keymap.c b/keyboard/planck/keymaps/cbbrowne/keymap.c
index 96b5dd58d..250d412ce 100644
--- a/keyboard/planck/keymaps/cbbrowne/keymap.c
+++ b/keyboard/planck/keymaps/cbbrowne/keymap.c
@@ -120,6 +120,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
uint8_t clockbyte=0;
clockbyte = TCNT1 % 256;
+ uint8_t rval;
// MACRODOWN only works in this function
switch(id) {
case M_LED:
@@ -143,54 +144,15 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
/* Generate, based on random number generator, a keystroke for
a numeric digit chosen at random */
random_value = ((random_value + randadd) * randmul) % randmod;
- if (record->event.pressed)
-
+ if (record->event.pressed) {
/* Here, we mix the LCRNG with low bits from one of the system
clocks via XOR in the theory that this may be more random
than either separately */
-
- switch ((random_value ^ clockbyte) % 10) {
- case 0:
- register_code (KC_0);
- unregister_code (KC_0);
- break;
- case 1:
- register_code (KC_1);
- unregister_code (KC_1);
- break;
- case 2:
- register_code (KC_2);
- unregister_code (KC_2);
- break;
- case 3:
- register_code (KC_3);
- unregister_code (KC_3);
- break;
- case 4:
- register_code (KC_4);
- unregister_code (KC_4);
- break;
- case 5:
- register_code (KC_5);
- unregister_code (KC_5);
- break;
- case 6:
- register_code (KC_6);
- unregister_code (KC_6);
- break;
- case 7:
- register_code (KC_7);
- unregister_code (KC_7);
- break;
- case 8:
- register_code (KC_8);
- unregister_code (KC_8);
- break;
- case 9:
- register_code (KC_9);
- unregister_code (KC_9);
- break;
- }
+ rval = (random_value ^ clockbyte) % 10;
+ /* Note that KC_1 thru KC_0 are a contiguous range */
+ register_code (KC_1 + rval);
+ unregister_code (KC_1 + rval);
+ }
break;
case M_RANDLETTER:
/* Generate, based on random number generator, a keystroke for
@@ -199,113 +161,11 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
clocks via XOR in the theory that this may be more random
than either separately */
random_value = ((random_value + randadd) * randmul) % randmod;
- if (record->event.pressed)
- switch((random_value ^ clockbyte) % 26) {
- case 0:
- register_code(KC_A);
- unregister_code(KC_A);
- break;
- case 1:
- register_code(KC_B);
- unregister_code(KC_B);
- break;
- case 2:
- register_code(KC_C);
- unregister_code(KC_C);
- break;
- case 3:
- register_code(KC_D);
- unregister_code(KC_D);
- break;
- case 4:
- register_code(KC_E);
- unregister_code(KC_E);
- break;
- case 5:
- register_code(KC_F);
- unregister_code(KC_F);
- break;
- case 6:
- register_code(KC_G);
- unregister_code(KC_G);
- break;
- case 7:
- register_code(KC_H);
- unregister_code(KC_H);
- break;
- case 8:
- register_code(KC_I);
- unregister_code(KC_I);
- break;
- case 9:
- register_code(KC_J);
- unregister_code(KC_J);
- break;
- case 10:
- register_code(KC_K);
- unregister_code(KC_K);
- break;
- case 11:
- register_code(KC_L);
- unregister_code(KC_L);
- break;
- case 12:
- register_code(KC_M);
- unregister_code(KC_M);
- break;
- case 13:
- register_code(KC_N);
- unregister_code(KC_N);
- break;
- case 14:
- register_code(KC_O);
- unregister_code(KC_O);
- break;
- case 15:
- register_code(KC_P);
- unregister_code(KC_P);
- break;
- case 16:
- register_code(KC_Q);
- unregister_code(KC_Q);
- break;
- case 17:
- register_code(KC_R);
- unregister_code(KC_R);
- break;
- case 18:
- register_code(KC_S);
- unregister_code(KC_S);
- break;
- case 19:
- register_code(KC_T);
- unregister_code(KC_T);
- break;
- case 20:
- register_code(KC_U);
- unregister_code(KC_U);
- break;
- case 21:
- register_code(KC_V);
- unregister_code(KC_V);
- break;
- case 22:
- register_code(KC_W);
- unregister_code(KC_W);
- break;
- case 23:
- register_code(KC_X);
- unregister_code(KC_X);
- break;
- case 24:
- register_code(KC_Y);
- unregister_code(KC_Y);
- break;
- case 25:
- register_code(KC_Z);
- unregister_code(KC_Z);
- break;
- }
+ if (record->event.pressed) {
+ rval = (random_value ^ clockbyte) % 26;
+ register_code (KC_A + rval);
+ unregister_code (KC_A + rval);
+ }
break;
}
return MACRO_NONE;