diff options
| author | Christopher Browne <cbbrowne@hpaq.int.linuxdatabases.info> | 2016-02-03 13:40:45 -0500 |
|---|---|---|
| committer | Christopher Browne <cbbrowne@hpaq.int.linuxdatabases.info> | 2016-02-03 13:40:45 -0500 |
| commit | 674c62734dbe8250ee12f31f748a33b79906eea8 (patch) | |
| tree | 29c9bb37223a5bb51fa459f6d5df0653cdb42fe0 /keyboard/planck | |
| parent | a51009f30055b01be77ac4afd1ea765bbf8554a6 (diff) | |
| download | qmk_firmware-674c62734dbe8250ee12f31f748a33b79906eea8.tar.gz qmk_firmware-674c62734dbe8250ee12f31f748a33b79906eea8.zip | |
More experiments with mapping, notably adding in the random bits
Diffstat (limited to 'keyboard/planck')
| -rw-r--r-- | keyboard/planck/keymaps/cbbrowne/keymap.c | 108 |
1 files changed, 60 insertions, 48 deletions
diff --git a/keyboard/planck/keymaps/cbbrowne/keymap.c b/keyboard/planck/keymaps/cbbrowne/keymap.c index 03bea940f..ae7aeadeb 100644 --- a/keyboard/planck/keymaps/cbbrowne/keymap.c +++ b/keyboard/planck/keymaps/cbbrowne/keymap.c | |||
| @@ -57,14 +57,17 @@ | |||
| 57 | 57 | ||
| 58 | enum layers { | 58 | enum layers { |
| 59 | _QW = 0, /* Qwerty mapping */ | 59 | _QW = 0, /* Qwerty mapping */ |
| 60 | _CM, /* Colemak */ | ||
| 61 | _DV, /* Dvorak */ | ||
| 62 | _WK, /* Workman */ | ||
| 63 | _LW, /* Lower layer, where top line has symbols !@#$%^&*() */ | 60 | _LW, /* Lower layer, where top line has symbols !@#$%^&*() */ |
| 64 | _RS, /* Raised layer, where top line has digits 1234567890 */ | 61 | _RS, /* Raised layer, where top line has digits 1234567890 */ |
| 65 | _KP, /* Key pad */ | 62 | _KP, /* Key pad */ |
| 66 | }; | 63 | }; |
| 67 | 64 | ||
| 65 | enum macro_id { | ||
| 66 | M_LED = 0, | ||
| 67 | M_USERNAME, | ||
| 68 | M_RANDDIGIT | ||
| 69 | }; | ||
| 70 | |||
| 68 | /* Note that Planck has dimensions 4 rows x 12 columns */ | 71 | /* Note that Planck has dimensions 4 rows x 12 columns */ |
| 69 | 72 | ||
| 70 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | 73 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { |
| @@ -72,70 +75,41 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 72 | {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, | 75 | {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC}, |
| 73 | {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT}, | 76 | {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT}, |
| 74 | {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT }, | 77 | {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT }, |
| 75 | {KC_TAB, M(0), KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} | 78 | {KC_TAB, M(M_LED), KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} |
| 76 | }, | ||
| 77 | [_CM] = { /* Colemak */ | ||
| 78 | {KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC}, | ||
| 79 | {KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_ENT}, | ||
| 80 | {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT }, | ||
| 81 | {KC_TAB, M(0), KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} | ||
| 82 | }, | 79 | }, |
| 83 | [_DV] = { /* Dvorak */ | ||
| 84 | {KC_ESC, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC}, | ||
| 85 | {KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH}, | ||
| 86 | {KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT }, | ||
| 87 | {KC_TAB, M(0), KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} | ||
| 88 | }, | ||
| 89 | [_WK] = { /* Workman */ | ||
| 90 | {KC_ESC, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN, KC_BSPC}, | ||
| 91 | {KC_LCTL, KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I, KC_ENT}, | ||
| 92 | {KC_LSFT, KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT }, | ||
| 93 | {KC_TAB, M(0), KC_LALT, KC_LGUI, MO(_LW), KC_SPC, KC_SPC, MO(_RS), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT} | ||
| 94 | }, | ||
| 95 | [_RS] = { /* RAISE */ | 80 | [_RS] = { /* RAISE */ |
| 96 | {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, | 81 | {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC}, |
| 97 | {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, | 82 | {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS}, |
| 98 | {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_WK), RESET, KC_TRNS}, | 83 | {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_KP), DF(_KP), RESET, KC_TRNS}, |
| 99 | {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} | 84 | {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} |
| 100 | }, | 85 | }, |
| 101 | [_LW] = { /* LOWER */ | 86 | [_LW] = { /* LOWER */ |
| 102 | {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, | 87 | {KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC}, |
| 103 | {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, | 88 | {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE}, |
| 104 | {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_CM), DF(_WK), RESET, KC_TRNS}, | 89 | {KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, DF(_QW), DF(_KP), DF(_KP), RESET, KC_TRNS}, |
| 105 | {KC_TRNS, DF(_KP), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} | 90 | {KC_TRNS, DF(_KP), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY} |
| 106 | }, | 91 | }, |
| 107 | [_KP] = { /* Key Pad */ | 92 | [_KP] = { /* Key Pad */ |
| 108 | {KC_ESC, M(1), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_KP_ENTER, KC_KP_PLUS, KC_KP_PLUS, KC_KP_ENTER, KC_KP_ENTER}, | 93 | {KC_ESC, M(M_USERNAME), KC_W, KC_E, KC_R, KC_T, KC_Y, KC_KP_ENTER, KC_KP_PLUS, KC_KP_PLUS, KC_KP_ENTER, KC_KP_ENTER}, |
| 109 | {KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_KP_MINUS, KC_7, KC_8, KC_9, KC_KP_DOT}, | 94 | {KC_LCTL, M(M_RANDDIGIT), KC_S, KC_D, KC_F, KC_G, KC_H, KC_KP_MINUS, KC_7, KC_8, KC_9, KC_KP_DOT}, |
| 110 | {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_KP_PLUS, KC_4, KC_5, KC_6, KC_0}, | 95 | {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_KP_PLUS, KC_4, KC_5, KC_6, KC_0}, |
| 111 | {BL_STEP, M(0), KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, DF(_QW), KC_1, KC_2, KC_3, KC_0} | 96 | {BL_STEP, M(M_LED), KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_SPC, DF(_QW), KC_1, KC_2, KC_3, KC_0} |
| 112 | } | 97 | } |
| 113 | }; | 98 | }; |
| 114 | 99 | ||
| 115 | /* I'm planning to use this to set up some macros, including one to | ||
| 116 | expand into "cbbrowne", more to prove it can be done than anything | ||
| 117 | else. | ||
| 118 | */ | ||
| 119 | |||
| 120 | enum macro_id { | ||
| 121 | M_P0, | ||
| 122 | M_P1, | ||
| 123 | M_P2, | ||
| 124 | M_P3, | ||
| 125 | M_P4, | ||
| 126 | M_P5, | ||
| 127 | M_USERNAME | ||
| 128 | }; | ||
| 129 | |||
| 130 | const uint16_t PROGMEM fn_actions[] = { | 100 | const uint16_t PROGMEM fn_actions[] = { |
| 131 | |||
| 132 | }; | 101 | }; |
| 133 | 102 | ||
| 103 | static uint16_t random_value = 157; | ||
| 104 | #define randadd 53 | ||
| 105 | #define randmul 181 | ||
| 106 | #define randmod 167 | ||
| 107 | |||
| 134 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | 108 | const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) |
| 135 | { | 109 | { |
| 136 | // MACRODOWN only works in this function | 110 | // MACRODOWN only works in this function |
| 137 | switch(id) { | 111 | switch(id) { |
| 138 | case 0: | 112 | case M_LED: |
| 139 | if (record->event.pressed) { | 113 | if (record->event.pressed) { |
| 140 | register_code(KC_RSFT); | 114 | register_code(KC_RSFT); |
| 141 | #ifdef BACKLIGHT_ENABLE | 115 | #ifdef BACKLIGHT_ENABLE |
| @@ -145,10 +119,48 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
| 145 | unregister_code(KC_RSFT); | 119 | unregister_code(KC_RSFT); |
| 146 | } | 120 | } |
| 147 | break; | 121 | break; |
| 148 | case 1: | 122 | case M_USERNAME: |
| 149 | return (record->event.pressed ? | 123 | if (record->event.pressed) { |
| 150 | MACRO( T(C), T(B), T(B), T(R), T(O), T(W), T(N), T(E)) : | 124 | return MACRO( I(1), T(C), T(B), T(B), T(R), T(O), T(W), T(N), T(E)); |
| 151 | MACRO_NONE ); | 125 | } else { |
| 126 | return MACRO_NONE ; | ||
| 127 | } | ||
| 128 | break; | ||
| 129 | case M_RANDDIGIT: | ||
| 130 | random_value = ((random_value + randadd) * randmul) % randmod; | ||
| 131 | if (record->event.pressed) | ||
| 132 | switch(random_value % 10) { | ||
| 133 | case 0: | ||
| 134 | return MACRO(T(0)); | ||
| 135 | break; | ||
| 136 | case 1: | ||
| 137 | return MACRO(T(1)); | ||
| 138 | break; | ||
| 139 | case 2: | ||
| 140 | return MACRO(T(2)); | ||
| 141 | break; | ||
| 142 | case 3: | ||
| 143 | return MACRO(T(3)); | ||
| 144 | break; | ||
| 145 | case 4: | ||
| 146 | return MACRO(T(4)); | ||
| 147 | break; | ||
| 148 | case 5: | ||
| 149 | return MACRO(T(5)); | ||
| 150 | break; | ||
| 151 | case 6: | ||
| 152 | return MACRO(T(6)); | ||
| 153 | break; | ||
| 154 | case 7: | ||
| 155 | return MACRO(T(7)); | ||
| 156 | break; | ||
| 157 | case 8: | ||
| 158 | return MACRO(T(8)); | ||
| 159 | break; | ||
| 160 | case 9: | ||
| 161 | return MACRO(T(9)); | ||
| 162 | break; | ||
| 163 | } | ||
| 152 | break; | 164 | break; |
| 153 | } | 165 | } |
| 154 | return MACRO_NONE; | 166 | return MACRO_NONE; |
