diff options
| author | Iason Dimitrakopoulos <idimitrakopoulos@gmail.com> | 2019-04-16 20:28:29 +0300 |
|---|---|---|
| committer | Drashna Jaelre <drashna@live.com> | 2019-04-16 10:28:29 -0700 |
| commit | 838d09b0a9c78e7e57c9d01132154e78ebaaf560 (patch) | |
| tree | e8ca6a6b511c52d183671d23f0981d09f65fb50e /keyboards | |
| parent | d0fb7005d51be7c876e63e87778d080c8a733a13 (diff) | |
| download | qmk_firmware-838d09b0a9c78e7e57c9d01132154e78ebaaf560.tar.gz qmk_firmware-838d09b0a9c78e7e57c9d01132154e78ebaaf560.zip | |
[Keymap] Bugfixes on tapdance logic and small changes in layout (#5622)
* Add layer switcher functionality
* Fixes in left/right bracket functions and other small fixes
* used better KCs
Diffstat (limited to 'keyboards')
| -rw-r--r-- | keyboards/jj50/keymaps/archetype/config.h | 1 | ||||
| -rw-r--r-- | keyboards/jj50/keymaps/archetype/keymap.c | 138 |
2 files changed, 101 insertions, 38 deletions
diff --git a/keyboards/jj50/keymaps/archetype/config.h b/keyboards/jj50/keymaps/archetype/config.h index 7955796ea..a12e070b4 100644 --- a/keyboards/jj50/keymaps/archetype/config.h +++ b/keyboards/jj50/keymaps/archetype/config.h | |||
| @@ -4,5 +4,6 @@ | |||
| 4 | #undef TAPPING_TERM | 4 | #undef TAPPING_TERM |
| 5 | 5 | ||
| 6 | #define AUTO_SHIFT_TIMEOUT 150 | 6 | #define AUTO_SHIFT_TIMEOUT 150 |
| 7 | #define NO_AUTO_SHIFT_ALPHA | ||
| 7 | #define TAPPING_TERM 150 | 8 | #define TAPPING_TERM 150 |
| 8 | //#define BOOTMAGIC_KEY_SALT KC_LCTL | 9 | //#define BOOTMAGIC_KEY_SALT KC_LCTL |
diff --git a/keyboards/jj50/keymaps/archetype/keymap.c b/keyboards/jj50/keymaps/archetype/keymap.c index 0704943e0..82c615f13 100644 --- a/keyboards/jj50/keymaps/archetype/keymap.c +++ b/keyboards/jj50/keymaps/archetype/keymap.c | |||
| @@ -32,71 +32,131 @@ enum { | |||
| 32 | TD_BSPC_DEL = 0, | 32 | TD_BSPC_DEL = 0, |
| 33 | TD_LCTL_LBRC = 1, | 33 | TD_LCTL_LBRC = 1, |
| 34 | TD_LALT_RBRC = 2, | 34 | TD_LALT_RBRC = 2, |
| 35 | TD_ESC_LAYER = 3, | ||
| 35 | }; | 36 | }; |
| 36 | 37 | ||
| 37 | 38 | ||
| 38 | void left_brackets(qk_tap_dance_state_t *state, void *user_data) { | 39 | void left_brackets(qk_tap_dance_state_t *state, void *user_data) { |
| 39 | if (state->count == 1) { | 40 | if (state->count == 1) { |
| 40 | if (state->interrupted || !state->pressed) { | 41 | if (!state->pressed) { |
| 41 | register_mods(MOD_LSFT); | 42 | register_code16(KC_LPRN); |
| 42 | register_code(KC_9); | ||
| 43 | } else { | 43 | } else { |
| 44 | register_mods(MOD_LCTL); | 44 | register_code(KC_LCTL); |
| 45 | } | 45 | } |
| 46 | } else if (state->count == 2) { | 46 | } else if (state->count == 2) { |
| 47 | register_code(KC_LBRC); | 47 | register_code16(KC_LBRC); |
| 48 | } else if (state->count == 3) { | 48 | } else if (state->count == 3) { |
| 49 | register_mods(MOD_LSFT); | 49 | register_code16(KC_LCBR); |
| 50 | register_code(KC_LBRC); | ||
| 51 | } | 50 | } |
| 52 | } | 51 | } |
| 53 | 52 | ||
| 54 | void left_brackets_reset(qk_tap_dance_state_t *state, void *user_data) { | 53 | void left_brackets_reset(qk_tap_dance_state_t *state, void *user_data) { |
| 55 | if (state->count == 1) { | 54 | if (state->count == 1) { |
| 56 | if (state->interrupted || !state->pressed) { | 55 | unregister_code16(KC_LPRN); |
| 57 | unregister_mods(MOD_LSFT); | ||
| 58 | unregister_code(KC_9); | ||
| 59 | } else { | ||
| 60 | unregister_mods(MOD_LCTL); | ||
| 61 | } | ||
| 62 | } else if (state->count == 2) { | 56 | } else if (state->count == 2) { |
| 63 | unregister_code(KC_LBRC); | 57 | unregister_code16(KC_LBRC); |
| 64 | } else if (state->count == 3) { | 58 | } else if (state->count == 3) { |
| 65 | unregister_mods(MOD_LSFT); | 59 | unregister_code16(KC_LCBR); |
| 66 | unregister_code(KC_LBRC); | ||
| 67 | } | 60 | } |
| 61 | |||
| 62 | unregister_code(KC_LCTL); | ||
| 68 | } | 63 | } |
| 69 | 64 | ||
| 70 | void right_brackets(qk_tap_dance_state_t *state, void *user_data) { | 65 | void right_brackets(qk_tap_dance_state_t *state, void *user_data) { |
| 71 | if (state->count == 1) { | 66 | if (state->count == 1) { |
| 72 | if (state->interrupted || !state->pressed) { | 67 | if (!state->pressed) { |
| 73 | register_mods(MOD_LSFT); | 68 | register_code16(KC_RPRN); |
| 74 | register_code(KC_0); | ||
| 75 | } else { | 69 | } else { |
| 76 | register_mods(MOD_LALT); | 70 | register_code(KC_LALT); |
| 77 | } | 71 | } |
| 78 | } else if (state->count == 2) { | 72 | } else if (state->count == 2) { |
| 79 | register_code(KC_RBRC); | 73 | register_code16(KC_RBRC); |
| 80 | } else if (state->count == 3) { | 74 | } else if (state->count == 3) { |
| 81 | register_mods(MOD_LSFT); | 75 | register_code16(KC_RCBR); |
| 82 | register_code(KC_RBRC); | ||
| 83 | } | 76 | } |
| 84 | } | 77 | } |
| 85 | 78 | ||
| 86 | void right_brackets_reset(qk_tap_dance_state_t *state, void *user_data) { | 79 | void right_brackets_reset(qk_tap_dance_state_t *state, void *user_data) { |
| 87 | if (state->count == 1) { | 80 | if (state->count == 1) { |
| 88 | if (state->interrupted || !state->pressed) { | 81 | unregister_code16(KC_RPRN); |
| 89 | unregister_mods(MOD_LSFT); | ||
| 90 | unregister_code(KC_0); | ||
| 91 | } else { | ||
| 92 | unregister_mods(MOD_LALT); | ||
| 93 | } | ||
| 94 | } else if (state->count == 2) { | 82 | } else if (state->count == 2) { |
| 95 | unregister_code(KC_RBRC); | 83 | unregister_code16(KC_RBRC); |
| 96 | } else if (state->count == 3) { | 84 | } else if (state->count == 3) { |
| 97 | unregister_mods(MOD_LSFT); | 85 | unregister_code16(KC_RCBR); |
| 98 | unregister_code(KC_RBRC); | ||
| 99 | } | 86 | } |
| 87 | |||
| 88 | unregister_code(KC_LALT); | ||
| 89 | } | ||
| 90 | |||
| 91 | typedef struct { | ||
| 92 | bool is_press_action; | ||
| 93 | int state; | ||
| 94 | } tap; | ||
| 95 | |||
| 96 | enum { | ||
| 97 | SINGLE_TAP = 1, | ||
| 98 | SINGLE_HOLD = 2, | ||
| 99 | DOUBLE_TAP = 3, | ||
| 100 | DOUBLE_HOLD = 4, | ||
| 101 | DOUBLE_SINGLE_TAP = 5, //send two single taps | ||
| 102 | TRIPLE_TAP = 6, | ||
| 103 | TRIPLE_HOLD = 7, | ||
| 104 | TRIPLE_SINGLE_TAP = 8, //send three single taps | ||
| 105 | }; | ||
| 106 | |||
| 107 | int cur_dance (qk_tap_dance_state_t *state) { | ||
| 108 | if (state->count == 1) { | ||
| 109 | if (state->interrupted || !state->pressed) return SINGLE_TAP; | ||
| 110 | else return SINGLE_HOLD; | ||
| 111 | } | ||
| 112 | else if (state->count == 2) { | ||
| 113 | if (state->interrupted) return DOUBLE_SINGLE_TAP; | ||
| 114 | else if (state->pressed) return DOUBLE_HOLD; | ||
| 115 | else return DOUBLE_TAP; | ||
| 116 | } | ||
| 117 | |||
| 118 | if (state->count == 3) { | ||
| 119 | if (state->interrupted) return TRIPLE_SINGLE_TAP; | ||
| 120 | else if (state->pressed) return TRIPLE_HOLD; | ||
| 121 | else return TRIPLE_TAP; | ||
| 122 | } | ||
| 123 | else return 9; //magic number. At some point this method will expand to work for more presses | ||
| 124 | } | ||
| 125 | |||
| 126 | static tap tap_state = { | ||
| 127 | .is_press_action = true, | ||
| 128 | .state = 0 | ||
| 129 | }; | ||
| 130 | |||
| 131 | void layer_switcher (qk_tap_dance_state_t *state, void *user_data) { | ||
| 132 | tap_state.state = cur_dance(state); | ||
| 133 | switch (tap_state.state) { | ||
| 134 | case SINGLE_TAP: register_code(KC_ESC); break; | ||
| 135 | case SINGLE_HOLD: register_code(KC_ESC); break; | ||
| 136 | case DOUBLE_TAP: register_code(KC_ESC); break; | ||
| 137 | case DOUBLE_HOLD: layer_on(_COLEMAK); break; | ||
| 138 | case DOUBLE_SINGLE_TAP: register_code(KC_ESC); unregister_code(KC_ESC); register_code(KC_ESC); break; | ||
| 139 | case TRIPLE_TAP: register_code(KC_ESC); break; | ||
| 140 | case TRIPLE_HOLD: layer_on(_FX); break; | ||
| 141 | case TRIPLE_SINGLE_TAP: register_code(KC_ESC); unregister_code(KC_ESC); register_code(KC_ESC); unregister_code(KC_ESC); register_code(KC_ESC); break; | ||
| 142 | //Last case is for fast typing. Assuming your key is `f`: | ||
| 143 | //For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`. | ||
| 144 | //In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms. | ||
| 145 | } | ||
| 146 | } | ||
| 147 | |||
| 148 | void layer_switcher_reset (qk_tap_dance_state_t *state, void *user_data) { | ||
| 149 | switch (tap_state.state) { | ||
| 150 | case SINGLE_TAP: unregister_code(KC_ESC); break; | ||
| 151 | case SINGLE_HOLD: unregister_code(KC_ESC); break; | ||
| 152 | case DOUBLE_TAP: unregister_code(KC_ESC); break; | ||
| 153 | case DOUBLE_HOLD: break; | ||
| 154 | case DOUBLE_SINGLE_TAP: unregister_code(KC_ESC); break; | ||
| 155 | case TRIPLE_TAP: unregister_code(KC_ESC); break; | ||
| 156 | case TRIPLE_HOLD: break; | ||
| 157 | case TRIPLE_SINGLE_TAP: unregister_code(KC_ESC); break; | ||
| 158 | } | ||
| 159 | tap_state.state = 0; | ||
| 100 | } | 160 | } |
| 101 | 161 | ||
| 102 | qk_tap_dance_action_t tap_dance_actions[] = { | 162 | qk_tap_dance_action_t tap_dance_actions[] = { |
| @@ -106,6 +166,8 @@ qk_tap_dance_action_t tap_dance_actions[] = { | |||
| 106 | [TD_LCTL_LBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, left_brackets, left_brackets_reset), | 166 | [TD_LCTL_LBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, left_brackets, left_brackets_reset), |
| 107 | // Single tap = ) | Double tap = ] | Triple tap = } | Single hold = KC_LALT | 167 | // Single tap = ) | Double tap = ] | Triple tap = } | Single hold = KC_LALT |
| 108 | [TD_LALT_RBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, right_brackets, right_brackets_reset), | 168 | [TD_LALT_RBRC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, right_brackets, right_brackets_reset), |
| 169 | // Layer Switcher ESC | ||
| 170 | [TD_ESC_LAYER] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, layer_switcher, layer_switcher_reset, 100), | ||
| 109 | }; | 171 | }; |
| 110 | 172 | ||
| 111 | 173 | ||
| @@ -115,7 +177,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 115 | 177 | ||
| 116 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+. | 178 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+. |
| 117 | //| | | | | | | | | | | | | | 179 | //| | | | | | | | | | | | | |
| 118 | KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ | 180 | TD(TD_ESC_LAYER), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ |
| 119 | //| | | | | | | | | | | | | | 181 | //| | | | | | | | | | | | | |
| 120 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| | 182 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| |
| 121 | //| | | | | | | | | | | | | | 183 | //| | | | | | | | | | | | | |
| @@ -131,7 +193,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 131 | //| | | | | | | | | | | | | | 193 | //| | | | | | | | | | | | | |
| 132 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| | 194 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| |
| 133 | //| | | | | | | | | | | | | | 195 | //| | | | | | | | | | | | | |
| 134 | TD(TD_LCTL_LBRC), KC_LGUI, TD(TD_LALT_RBRC), _______, _______, LT(_FN, KC_SPC), LT(_FN, KC_SPC), _______, KC_COMM, KC_LEFT, KC_DOWN, KC_RGHT \ | 196 | TD(TD_LCTL_LBRC), KC_LGUI, TD(TD_LALT_RBRC), _______, _______, LT(_FN, KC_SPC), _______, LT(_FX, KC_SPC), KC_COMM, KC_LEFT, KC_DOWN, KC_RGHT \ |
| 135 | //| | | | | | | | | | | | | | 197 | //| | | | | | | | | | | | | |
| 136 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+' | 198 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+' |
| 137 | ), | 199 | ), |
| @@ -194,19 +256,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 194 | //| | | | | | | | | | | | | | 256 | //| | | | | | | | | | | | | |
| 195 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| | 257 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| |
| 196 | //| | | | | | | | | | | | | | 258 | //| | | | | | | | | | | | | |
| 197 | _______, BL_ON, BL_INC, RGB_TOG, RGB_MOD, _______, _______, _______, _______, _______, _______, _______, \ | 259 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, \ |
| 198 | //| | | | | | | | | | | | | | 260 | //| | | | | | | | | | | | | |
| 199 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| | 261 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| |
| 200 | //| | | | | | | | | | | | | | 262 | //| | | | | | | | | | | | | |
| 201 | _______, BL_OFF, BL_DEC, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, _______, _______, _______, _______, _______, \ | 263 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, _______, \ |
| 202 | //| | | | | | | | | | | | | | 264 | //| | | | | | | | | | | | | |
| 203 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| | 265 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| |
| 204 | //| | | | | | | | | | | | | | 266 | //| | | | | | | | | | | | | |
| 205 | _______, RGB_TOG, BL_STEP, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, _______, _______, _______, _______, _______, \ | 267 | _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_MOD, RGB_HUI, RGB_TOG, \ |
| 206 | //| | | | | | | | | | | | | | 268 | //| | | | | | | | | | | | | |
| 207 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| | 269 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+| |
| 208 | //| | | | | | | | | | | | | | 270 | //| | | | | | | | | | | | | |
| 209 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ | 271 | _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI, RGB_HUD, RGB_SAD \ |
| 210 | //| | | | | | | | | | | | | | 272 | //| | | | | | | | | | | | | |
| 211 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+' | 273 | //,----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+' |
| 212 | ), | 274 | ), |
