~ruther/qmk_firmware

8079dc06825371b509da245e59cbd97248589e18 — Christopher Browne 9 years ago bbcc104
Eliminate switch statement by using contiguous character ranges
1 files changed, 12 insertions(+), 152 deletions(-)

M keyboard/planck/keymaps/cbbrowne/keymap.c
M keyboard/planck/keymaps/cbbrowne/keymap.c => keyboard/planck/keymaps/cbbrowne/keymap.c +12 -152
@@ 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;