diff options
Diffstat (limited to 'keyboards/dz60/keymaps/jdelkins/keymap.c')
| -rw-r--r-- | keyboards/dz60/keymaps/jdelkins/keymap.c | 263 |
1 files changed, 170 insertions, 93 deletions
diff --git a/keyboards/dz60/keymaps/jdelkins/keymap.c b/keyboards/dz60/keymaps/jdelkins/keymap.c index c0bf4445a..cf9dd584f 100644 --- a/keyboards/dz60/keymaps/jdelkins/keymap.c +++ b/keyboards/dz60/keymaps/jdelkins/keymap.c | |||
| @@ -18,20 +18,26 @@ | |||
| 18 | #include "jdelkins.h" | 18 | #include "jdelkins.h" |
| 19 | 19 | ||
| 20 | #undef LAYOUT | 20 | #undef LAYOUT |
| 21 | #define LAYOUT LAYOUT_directional_nosplitspace | 21 | #define LAYOUT LAYOUT_hhkb_split |
| 22 | 22 | ||
| 23 | #define IDLE_TIMEOUT 360 | 23 | #define IDLE_TIMEOUT 360 |
| 24 | |||
| 24 | uint16_t rgb_idle_seconds = 0; | 25 | uint16_t rgb_idle_seconds = 0; |
| 25 | uint16_t rgb_timer; | 26 | uint16_t rgb_timer; |
| 27 | uint16_t bspc_timer; | ||
| 26 | bool rgb_was_enabled; | 28 | bool rgb_was_enabled; |
| 27 | 29 | ||
| 30 | enum { | ||
| 31 | MY_BSPC = USER_SAFE_RANGE, | ||
| 32 | }; | ||
| 33 | |||
| 28 | // Tap Dance | 34 | // Tap Dance |
| 29 | 35 | ||
| 30 | int ctl_state = 0; | 36 | int ctl_state = 0; |
| 31 | 37 | ||
| 32 | void ctl_finished(qk_tap_dance_state_t *state, void *user_data) { | 38 | void ctl_finished(qk_tap_dance_state_t *state, void *user_data) { |
| 33 | ctl_state = cur_dance(state); | 39 | ctl_state = cur_dance(state); |
| 34 | switch(ctl_state) { | 40 | switch (ctl_state) { |
| 35 | case SINGLE_TAP: qk_leader_start(); break; | 41 | case SINGLE_TAP: qk_leader_start(); break; |
| 36 | case SINGLE_HOLD: register_code(KC_LCTL); break; | 42 | case SINGLE_HOLD: register_code(KC_LCTL); break; |
| 37 | case DOUBLE_TAP: tap_code(KC_RCTL); break; | 43 | case DOUBLE_TAP: tap_code(KC_RCTL); break; |
| @@ -42,7 +48,7 @@ void ctl_finished(qk_tap_dance_state_t *state, void *user_data) { | |||
| 42 | } | 48 | } |
| 43 | 49 | ||
| 44 | void ctl_reset(qk_tap_dance_state_t *state, void *user_data) { | 50 | void ctl_reset(qk_tap_dance_state_t *state, void *user_data) { |
| 45 | switch(ctl_state) { | 51 | switch (ctl_state) { |
| 46 | case SINGLE_HOLD: unregister_code(KC_LCTL); break; | 52 | case SINGLE_HOLD: unregister_code(KC_LCTL); break; |
| 47 | case DOUBLE_HOLD: | 53 | case DOUBLE_HOLD: |
| 48 | case TRIPLE_HOLD: unregister_code(KC_RCTL); break; | 54 | case TRIPLE_HOLD: unregister_code(KC_RCTL); break; |
| @@ -61,56 +67,93 @@ void g_finished(qk_tap_dance_state_t *state, void *user_data) { | |||
| 61 | } | 67 | } |
| 62 | } | 68 | } |
| 63 | 69 | ||
| 70 | int kp_state = 0; | ||
| 71 | |||
| 72 | void kp_finished(qk_tap_dance_state_t *state, void *user_data) { | ||
| 73 | kp_state = hold_cur_dance(state); | ||
| 74 | switch (kp_state) { | ||
| 75 | case SINGLE_TAP: | ||
| 76 | tap_code(KC_SPC); | ||
| 77 | break; | ||
| 78 | default: | ||
| 79 | layer_invert(_KP); | ||
| 80 | break; | ||
| 81 | } | ||
| 82 | } | ||
| 83 | |||
| 84 | void kp_reset(qk_tap_dance_state_t *state, void *user_data) { | ||
| 85 | switch (kp_state) { | ||
| 86 | case SINGLE_HOLD: | ||
| 87 | case DOUBLE_HOLD: | ||
| 88 | case TRIPLE_HOLD: | ||
| 89 | layer_invert(_KP); | ||
| 90 | break; | ||
| 91 | } | ||
| 92 | } | ||
| 93 | |||
| 64 | enum { | 94 | enum { |
| 65 | TD_LDCTL, | 95 | TD_LDCTL, |
| 66 | TD_G, | 96 | TD_G, |
| 97 | TD_KP, | ||
| 67 | }; | 98 | }; |
| 68 | 99 | ||
| 69 | qk_tap_dance_action_t tap_dance_actions[] = { | 100 | qk_tap_dance_action_t tap_dance_actions[] = { |
| 70 | [TD_LDCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctl_finished, ctl_reset), | 101 | [TD_LDCTL] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ctl_finished, ctl_reset), |
| 71 | [TD_G] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, g_finished, NULL), | 102 | [TD_G] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, g_finished, NULL), |
| 103 | [TD_KP] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, kp_finished, kp_reset), | ||
| 72 | }; | 104 | }; |
| 73 | 105 | ||
| 74 | // Layers | 106 | // Layers |
| 75 | 107 | ||
| 76 | const uint16_t PROGMEM keymaps[_LAYER_MAX][MATRIX_ROWS][MATRIX_COLS] = { | 108 | const uint16_t PROGMEM keymaps[_LAYER_MAX][MATRIX_ROWS][MATRIX_COLS] = { |
| 77 | [_QWERTY] = LAYOUT( | 109 | [_QWERTY] = LAYOUT( |
| 78 | KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, | 110 | KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_GRV, |
| 79 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, | 111 | KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, |
| 80 | MY_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, | 112 | MY_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, |
| 81 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSPC, MO(_ADJUST), | 113 | KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_ADJUST), |
| 82 | TD(TD_LDCTL), MY_GUI, MY_ALT, MY_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT | 114 | TD(TD_LDCTL), MY_GUI, MY_ALT, MY_BSPC, TD(TD_KP), MY_SPC, KC_RGUI, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT |
| 115 | ), | ||
| 116 | [_RPT] = LAYOUT( | ||
| 117 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 118 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 119 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 120 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 121 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||
| 83 | ), | 122 | ), |
| 84 | [_GAME] = LAYOUT( | 123 | [_GAME] = LAYOUT( |
| 85 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | 124 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, |
| 86 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | 125 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, |
| 87 | KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | 126 | KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, |
| 88 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | 127 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, |
| 89 | _______, _______, KC_LALT, KC_SPC, _______, _______, _______, _______, _______ | 128 | _______, _______, KC_LALT, KC_SPC, KC_LALT, _______, _______, _______, _______, _______, _______ |
| 90 | ), | 129 | ), |
| 91 | [_FUNC] = LAYOUT( | 130 | [_FUNC] = LAYOUT( |
| 92 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, | 131 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_F13, |
| 93 | _______, _______, FW_WRD, KB_EOL, _______, _______, KB_COPY, KC_PGUP, _______, _______, KB_PASTE, KC_SLCK, _______, MY_CALC, | 132 | _______, _______, FW_WRD, KB_EOL, TG(_RPT), _______, KB_COPY, KC_PGUP, _______, _______, KB_PASTE, KC_SLCK, _______, MY_CALC, |
| 94 | _______, KB_BOL, _______, KC_PGDN, _______, TD(TD_G), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, | 133 | KC_RCTL, KB_BOL, _______, KC_PGDN, _______, TD(TD_G), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, |
| 95 | _______, _______, KC_DEL, _______, _______, BK_WRD, _______, _______, _______, _______, _______, _______, KC_INS, _______, | 134 | _______, _______, KC_DEL, _______, _______, BK_WRD, _______, _______, _______, _______, _______, _______, KC_NO, |
| 96 | _______, MY_RGUI, MY_RALT, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END | 135 | KC_RCTL, MY_RGUI, MY_RALT, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END |
| 97 | ), | 136 | ), |
| 98 | [_KP] = LAYOUT( | 137 | [_KP] = LAYOUT( |
| 99 | _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_ASTERISK, _______, _______, _______, _______, _______, | 138 | _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_ASTERISK, _______, _______, _______, _______, _______, _______, |
| 100 | KC_NUMLOCK, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, _______, _______, _______, | 139 | KC_NUMLOCK, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, _______, _______, _______, |
| 101 | _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, _______, _______, | 140 | _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, _______, _______, |
| 102 | _______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, _______, _______, TG(_KP), | 141 | _______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_SLASH, _______, TG(_KP), |
| 103 | _______, _______, _______, KC_KP_0, KC_KP_DOT, _______, _______, _______, _______ | 142 | _______, _______, _______, _______, _______, KC_KP_0, KC_KP_DOT, _______, _______, _______, _______ |
| 104 | ), | 143 | ), |
| 105 | [_ADJUST] = LAYOUT( | 144 | [_ADJUST] = LAYOUT( |
| 106 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, | 145 | KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_SLCK, KC_F13, |
| 107 | _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, KC_PSCR, KC_SLCK, _______, KC_MUTE, | 146 | _______, RGB_SPD, RGB_VAI, RGB_SPI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, KC_PSCR, KC_BRID, KC_BRIU, KC_MUTE, |
| 108 | _______, RGB_RMOD, RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, TG(_KP), _______, _______, _______, KC_MPLY, | 147 | KC_RCTL, RGB_RMOD, RGB_VAD, RGB_MOD, RGB_HUD, RGB_SAD, _______, _______, TG(_KP), _______, _______, _______, KC_MPLY, |
| 109 | _______, RGB_TOG, KB_MAKE, KB_FLSH, KB_VRSN, KB_BOOT, _______, TG_SYS, _______, _______, _______, _______, KC_DEL, _______, | 148 | _______, RGB_TOG, KB_MAKE, KB_FLSH, KB_VRSN, KB_BOOT, _______, TG_SYS, _______, _______, _______, _______, _______, |
| 110 | _______, MY_RGUI, MY_RALT, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT | 149 | KC_RCTL, MY_RGUI, MY_RALT, KC_DEL, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT |
| 111 | ), | 150 | ), |
| 112 | }; | 151 | }; |
| 113 | 152 | ||
| 153 | const rgblight_segment_t PROGMEM rpt_layer[] = RGBLIGHT_LAYER_SEGMENTS( | ||
| 154 | {8, 8, HSV_PINK} | ||
| 155 | ); | ||
| 156 | |||
| 114 | const rgblight_segment_t PROGMEM game_layer[] = RGBLIGHT_LAYER_SEGMENTS( | 157 | const rgblight_segment_t PROGMEM game_layer[] = RGBLIGHT_LAYER_SEGMENTS( |
| 115 | {0, 1, HSV_RED}, | 158 | {0, 1, HSV_RED}, |
| 116 | {7, 2, HSV_RED}, | 159 | {7, 2, HSV_RED}, |
| @@ -118,7 +161,7 @@ const rgblight_segment_t PROGMEM game_layer[] = RGBLIGHT_LAYER_SEGMENTS( | |||
| 118 | ); | 161 | ); |
| 119 | 162 | ||
| 120 | const rgblight_segment_t PROGMEM func_layer[] = RGBLIGHT_LAYER_SEGMENTS( | 163 | const rgblight_segment_t PROGMEM func_layer[] = RGBLIGHT_LAYER_SEGMENTS( |
| 121 | {0, 8, HSV_GREEN} | 164 | {0, 16, HSV_GREEN} |
| 122 | ); | 165 | ); |
| 123 | 166 | ||
| 124 | const rgblight_segment_t PROGMEM kp_layer[] = RGBLIGHT_LAYER_SEGMENTS( | 167 | const rgblight_segment_t PROGMEM kp_layer[] = RGBLIGHT_LAYER_SEGMENTS( |
| @@ -140,6 +183,7 @@ const rgblight_segment_t PROGMEM numlock_layer[] = RGBLIGHT_LAYER_SEGMENTS( | |||
| 140 | 183 | ||
| 141 | 184 | ||
| 142 | enum rgb_layer_index { | 185 | enum rgb_layer_index { |
| 186 | L_RPT, | ||
| 143 | L_GAME, | 187 | L_GAME, |
| 144 | L_FUNC, | 188 | L_FUNC, |
| 145 | L_KP, | 189 | L_KP, |
| @@ -149,6 +193,7 @@ enum rgb_layer_index { | |||
| 149 | }; | 193 | }; |
| 150 | 194 | ||
| 151 | const rgblight_segment_t * const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( | 195 | const rgblight_segment_t * const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( |
| 196 | [L_RPT] = rpt_layer, | ||
| 152 | [L_GAME] = game_layer, | 197 | [L_GAME] = game_layer, |
| 153 | [L_FUNC] = func_layer, | 198 | [L_FUNC] = func_layer, |
| 154 | [L_KP] = kp_layer, | 199 | [L_KP] = kp_layer, |
| @@ -158,13 +203,14 @@ const rgblight_segment_t * const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( | |||
| 158 | ); | 203 | ); |
| 159 | 204 | ||
| 160 | layer_state_t layer_state_set_keymap(layer_state_t state) { | 205 | layer_state_t layer_state_set_keymap(layer_state_t state) { |
| 206 | rgblight_set_layer_state(L_RPT, layer_state_cmp(state, _RPT)); | ||
| 161 | rgblight_set_layer_state(L_GAME, layer_state_cmp(state, _GAME)); | 207 | rgblight_set_layer_state(L_GAME, layer_state_cmp(state, _GAME)); |
| 162 | rgblight_set_layer_state(L_FUNC, layer_state_cmp(state, _FUNC)); | 208 | rgblight_set_layer_state(L_FUNC, layer_state_cmp(state, _FUNC)); |
| 163 | rgblight_set_layer_state(L_KP, layer_state_cmp(state, _KP)); | 209 | rgblight_set_layer_state(L_KP, layer_state_cmp(state, _KP)); |
| 164 | rgblight_set_layer_state(L_ADJUST, layer_state_cmp(state, _ADJUST)); | 210 | rgblight_set_layer_state(L_ADJUST, layer_state_cmp(state, _ADJUST)); |
| 165 | rgblight_set_layer_state(L_CAPSLOCK, CAPSLOCK_ON); | 211 | rgblight_set_layer_state(L_CAPSLOCK, CAPSLOCK_ON); |
| 166 | rgblight_set_layer_state(L_NUMLOCK, NUMLOCK_ON && layer_state_cmp(state, _KP)); | 212 | rgblight_set_layer_state(L_NUMLOCK, NUMLOCK_ON && layer_state_cmp(state, _KP)); |
| 167 | if (layer_state_cmp(state, _GAME)) | 213 | if (layer_state_cmp(state, _GAME) || layer_state_cmp(state, _RPT)) |
| 168 | autoshift_disable(); | 214 | autoshift_disable(); |
| 169 | else | 215 | else |
| 170 | autoshift_enable(); | 216 | autoshift_enable(); |
| @@ -180,6 +226,7 @@ bool led_update_user(led_t led_state) { | |||
| 180 | void keyboard_post_init_keymap(void) { | 226 | void keyboard_post_init_keymap(void) { |
| 181 | rgblight_layers = my_rgb_layers; | 227 | rgblight_layers = my_rgb_layers; |
| 182 | rgb_was_enabled = rgblight_is_enabled(); | 228 | rgb_was_enabled = rgblight_is_enabled(); |
| 229 | bspc_timer = 0; | ||
| 183 | } | 230 | } |
| 184 | 231 | ||
| 185 | LEADER_EXTERNS(); | 232 | LEADER_EXTERNS(); |
| @@ -194,86 +241,116 @@ void matrix_scan_keymap(void) { | |||
| 194 | rgblight_disable_noeeprom(); | 241 | rgblight_disable_noeeprom(); |
| 195 | rgb_idle_seconds = 0; | 242 | rgb_idle_seconds = 0; |
| 196 | } | 243 | } |
| 244 | // if MY_BSPC is held down too long, pretend like it wasn't and start | ||
| 245 | // pressing backspace | ||
| 246 | if (bspc_timer > 0 && timer_elapsed(bspc_timer) > LEADER_TIMEOUT) { | ||
| 247 | layer_off(_FUNC); | ||
| 248 | bspc_timer = 0; | ||
| 249 | register_code(KC_BSPC); | ||
| 250 | } | ||
| 197 | LEADER_DICTIONARY() { | 251 | LEADER_DICTIONARY() { |
| 198 | leading = false; | 252 | leading = false; |
| 199 | leader_end(); | 253 | leader_end(); |
| 200 | 254 | ||
| 201 | SEQ_ONE_KEY(KC_K) { | 255 | // layer navigation |
| 202 | layer_invert(_KP); | 256 | SEQ_ONE_KEY(KC_R) { layer_invert(_RPT); } |
| 203 | } | 257 | SEQ_ONE_KEY(KC_G) { layer_invert(_GAME); } |
| 204 | SEQ_ONE_KEY(KC_G) { | 258 | SEQ_ONE_KEY(KC_K) { layer_invert(_KP); } |
| 205 | layer_invert(_GAME); | 259 | SEQ_ONE_KEY(KC_KP_5) { layer_invert(_KP); } |
| 206 | } | 260 | |
| 207 | SEQ_ONE_KEY(KC_KP_5) { | 261 | // tmux navigation |
| 208 | layer_invert(_KP); | 262 | SEQ_ONE_KEY(KC_L) { SEND_STRING(SS_LCTL("a") "n"); } |
| 209 | } | 263 | SEQ_ONE_KEY(KC_H) { SEND_STRING(SS_LCTL("a") "p"); } |
| 210 | SEQ_TWO_KEYS(KC_SCLN, KC_1) { | 264 | SEQ_ONE_KEY(KC_N) { SEND_STRING(SS_LCTL("a") "c"); } |
| 211 | send_secret_string(0); | 265 | SEQ_ONE_KEY(KC_W) { SEND_STRING(SS_LCTL("a") "x"); } |
| 212 | } | 266 | SEQ_ONE_KEY(KC_MINS) { SEND_STRING(SS_LCTL("a") "-"); } |
| 213 | SEQ_TWO_KEYS(KC_SCLN, KC_2) { | 267 | SEQ_ONE_KEY(KC_QUOT) { SEND_STRING(SS_LCTL("a") "\""); } |
| 214 | send_secret_string(1); | 268 | SEQ_ONE_KEY(KC_1) { SEND_STRING(SS_LCTL("a") "1"); } |
| 215 | } | 269 | SEQ_ONE_KEY(KC_2) { SEND_STRING(SS_LCTL("a") "2"); } |
| 216 | SEQ_TWO_KEYS(KC_SCLN, KC_3) { | 270 | SEQ_ONE_KEY(KC_3) { SEND_STRING(SS_LCTL("a") "3"); } |
| 217 | send_secret_string(2); | 271 | SEQ_ONE_KEY(KC_4) { SEND_STRING(SS_LCTL("a") "4"); } |
| 218 | } | 272 | SEQ_ONE_KEY(KC_5) { SEND_STRING(SS_LCTL("a") "5"); } |
| 219 | SEQ_TWO_KEYS(KC_SCLN, KC_4) { | 273 | SEQ_ONE_KEY(KC_6) { SEND_STRING(SS_LCTL("a") "6"); } |
| 220 | send_secret_string(3); | 274 | SEQ_ONE_KEY(KC_7) { SEND_STRING(SS_LCTL("a") "7"); } |
| 221 | } | 275 | SEQ_ONE_KEY(KC_8) { SEND_STRING(SS_LCTL("a") "8"); } |
| 222 | SEQ_TWO_KEYS(KC_SCLN, KC_5) { | 276 | SEQ_ONE_KEY(KC_9) { SEND_STRING(SS_LCTL("a") "9"); } |
| 223 | send_secret_string(4); | 277 | |
| 224 | } | 278 | // secrets |
| 225 | SEQ_TWO_KEYS(KC_SCLN, KC_6) { | 279 | SEQ_TWO_KEYS(KC_SCLN, KC_M) { send_secret_string(0); } |
| 226 | send_secret_string(5); | 280 | SEQ_TWO_KEYS(KC_SCLN, KC_COMM) { send_secret_string(1); } |
| 227 | } | 281 | SEQ_TWO_KEYS(KC_SCLN, KC_DOT) { send_secret_string(2); } |
| 228 | SEQ_TWO_KEYS(KC_SCLN, KC_M) { | 282 | SEQ_TWO_KEYS(KC_SCLN, KC_J) { send_secret_string(3); } |
| 229 | send_secret_string(0); | 283 | SEQ_TWO_KEYS(KC_SCLN, KC_K) { send_secret_string(4); } |
| 230 | } | 284 | SEQ_TWO_KEYS(KC_SCLN, KC_L) { send_secret_string(5); } |
| 231 | SEQ_TWO_KEYS(KC_SCLN, KC_COMM) { | 285 | |
| 232 | send_secret_string(1); | 286 | // fast control-C |
| 233 | } | 287 | SEQ_ONE_KEY(KC_C) { tap_code16(C(KC_C)); } |
| 234 | SEQ_TWO_KEYS(KC_SCLN, KC_DOT) { | 288 | |
| 235 | send_secret_string(2); | 289 | // neovim: terminal escape |
| 236 | } | 290 | SEQ_ONE_KEY(KC_BSLS) { |
| 237 | SEQ_TWO_KEYS(KC_SCLN, KC_J) { | 291 | tap_code16(C(KC_BSLS)); |
| 238 | send_secret_string(3); | 292 | tap_code16(C(KC_N)); |
| 239 | } | ||
| 240 | SEQ_TWO_KEYS(KC_SCLN, KC_K) { | ||
| 241 | send_secret_string(4); | ||
| 242 | } | ||
| 243 | SEQ_TWO_KEYS(KC_SCLN, KC_L) { | ||
| 244 | send_secret_string(5); | ||
| 245 | } | ||
| 246 | SEQ_ONE_KEY(KC_C) { | ||
| 247 | tap_code16(C(KC_C)); | ||
| 248 | } | 293 | } |
| 249 | } | 294 | } |
| 250 | } | 295 | } |
| 251 | 296 | ||
| 252 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { | 297 | bool process_record_keymap(uint16_t keycode, keyrecord_t *record) { |
| 253 | static uint16_t gesc_timer; | 298 | static bool bspc_del = false; |
| 299 | static bool bspc_initiated_func = false; | ||
| 300 | bool rc = true; | ||
| 254 | 301 | ||
| 255 | rgb_idle_seconds = 0; | 302 | rgb_idle_seconds = 0; |
| 256 | if (!rgblight_is_enabled() && rgb_was_enabled) | 303 | if (!rgblight_is_enabled() && rgb_was_enabled) |
| 257 | rgblight_enable_noeeprom(); | 304 | rgblight_enable_noeeprom(); |
| 258 | 305 | ||
| 259 | switch (keycode) { | 306 | switch (keycode) { |
| 260 | // custom handle KC_GESC to emulate auto shift on it | 307 | case MY_BSPC: |
| 261 | case KC_GESC: | 308 | if (record->event.pressed) { |
| 262 | if (get_autoshift_state()) { | 309 | if (IS_LAYER_ON(_FUNC)) { |
| 263 | if (record->event.pressed) | 310 | // special case: if _FUNC was turned on by another key, |
| 264 | gesc_timer = timer_read(); | 311 | // treat this as KC_DEL and don't do anything else |
| 265 | else { | 312 | bspc_del = true; |
| 266 | if (timer_elapsed(gesc_timer) > AUTO_SHIFT_TIMEOUT || MODS_SHIFT) { | 313 | register_code(KC_DEL); |
| 267 | tap_code16(S(KC_GRV)); | 314 | return false; |
| 268 | } else if (MODS_GUI) | 315 | } else { |
| 269 | tap_code(KC_GRV); | 316 | bspc_timer = timer_read(); |
| 270 | else | 317 | bspc_initiated_func = true; |
| 271 | tap_code(KC_ESC); | 318 | layer_on(_FUNC); |
| 319 | } | ||
| 320 | } else { | ||
| 321 | if (bspc_del) { | ||
| 322 | // special case: if _FUNC was turned on by another key, | ||
| 323 | // treat this as KC_DEL and don't do anything else | ||
| 324 | unregister_code(KC_DEL); | ||
| 325 | bspc_del = false; | ||
| 326 | return false; | ||
| 327 | } | ||
| 328 | |||
| 329 | if (bspc_initiated_func) { | ||
| 330 | layer_off(_FUNC); | ||
| 331 | bspc_initiated_func = false; | ||
| 332 | } | ||
| 333 | |||
| 334 | if (bspc_timer > 0) { | ||
| 335 | // here the key was pressed and released before the timer | ||
| 336 | // expired, so treat as a backspace tap and pretend we | ||
| 337 | // never activated _FUNC | ||
| 338 | bspc_timer = 0; | ||
| 339 | tap_code(KC_BSPC); | ||
| 340 | } else { | ||
| 341 | // the timer went off, so KC_BSPC was registered in | ||
| 342 | // matrix_scan_keymap. unregister it now | ||
| 343 | unregister_code(KC_BSPC); | ||
| 272 | } | 344 | } |
| 273 | return false; | ||
| 274 | } | 345 | } |
| 275 | return false; | 346 | return false; // special case, return now without resetting timer |
| 347 | // other paths should set rc and break | ||
| 348 | break; | ||
| 276 | } | 349 | } |
| 277 | 350 | ||
| 278 | return true; | 351 | // if something was pressed while MY_BSPC was held down, keep it pressed by |
| 352 | // disabling the timer | ||
| 353 | bspc_timer = 0; | ||
| 354 | return rc; | ||
| 279 | } | 355 | } |
| 356 | |||
