diff options
| -rw-r--r-- | keyboards/ergodox/keymaps/dvorak_programmer/keymap.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c index 7ed0c7f12..6757355c8 100644 --- a/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c +++ b/keyboards/ergodox/keymaps/dvorak_programmer/keymap.c | |||
| @@ -35,7 +35,9 @@ | |||
| 35 | #define SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND 15 | 35 | #define SHELL_RECALL_LAST_ARG_REMOVE_FIRST_COMMAND 15 |
| 36 | #define SEMICOLON_NEWLINE 16 | 36 | #define SEMICOLON_NEWLINE 16 |
| 37 | #define END_NEWLINE 17 | 37 | #define END_NEWLINE 17 |
| 38 | #define DUAL_CAPSLOCK 18 | ||
| 38 | 39 | ||
| 40 | static uint16_t capslock_timer; | ||
| 39 | 41 | ||
| 40 | const uint16_t PROGMEM fn_actions[] = { | 42 | const uint16_t PROGMEM fn_actions[] = { |
| 41 | [1] = ACTION_LAYER_TAP_TOGGLE(KEY_NAV), // FN1 - keynav layer | 43 | [1] = ACTION_LAYER_TAP_TOGGLE(KEY_NAV), // FN1 - keynav layer |
| @@ -59,8 +61,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 59 | [BASE] = KEYMAP( // layer 0 : default | 61 | [BASE] = KEYMAP( // layer 0 : default |
| 60 | // left hand | 62 | // left hand |
| 61 | KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, | 63 | KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, |
| 62 | LT(SHELL_NAV,KC_TAB), KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(KEY_SEL), | 64 | KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, MO(KEY_SEL), |
| 63 | OSL(BRACKETS), KC_A, KC_O, KC_E, KC_U, KC_I, | 65 | M(DUAL_CAPSLOCK), KC_A, KC_O, KC_E, KC_U, KC_I, |
| 64 | OSM(MOD_LSFT), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, MO(KEY_NAV), | 66 | OSM(MOD_LSFT), KC_SCLN, KC_Q, KC_J, KC_K, KC_X, MO(KEY_NAV), |
| 65 | OSL(SHORTCUTS),KC_FN4, KC_FN5,OSL(SYMBOL),MO(NUMBER), | 67 | OSL(SHORTCUTS),KC_FN4, KC_FN5,OSL(SYMBOL),MO(NUMBER), |
| 66 | // thumb cluster | 68 | // thumb cluster |
| @@ -395,7 +397,22 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) | |||
| 395 | if (record->event.pressed) { | 397 | if (record->event.pressed) { |
| 396 | return MACRO( T(END), T(ENTER), END); | 398 | return MACRO( T(END), T(ENTER), END); |
| 397 | } | 399 | } |
| 398 | break; | 400 | break; |
| 401 | case DUAL_CAPSLOCK: | ||
| 402 | if (record->event.pressed) { | ||
| 403 | if(timer_elapsed(capslock_timer) < 100) { | ||
| 404 | // activate SHELL_NAV | ||
| 405 | layer_on(SHELL_NAV); | ||
| 406 | } else { | ||
| 407 | layer_on(BRACKETS); | ||
| 408 | } | ||
| 409 | } else { | ||
| 410 | layer_off(SHELL_NAV); | ||
| 411 | layer_off(BRACKETS); | ||
| 412 | capslock_timer = timer_read(); | ||
| 413 | } | ||
| 414 | break; | ||
| 415 | |||
| 399 | 416 | ||
| 400 | } | 417 | } |
| 401 | return MACRO_NONE; | 418 | return MACRO_NONE; |
