diff options
| -rw-r--r-- | keyboards/melody96/keymaps/konstantin/keymap.c | 2 | ||||
| -rw-r--r-- | users/konstantin/tap_dance.c | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/keyboards/melody96/keymaps/konstantin/keymap.c b/keyboards/melody96/keymaps/konstantin/keymap.c index c8b6edb3d..de1b67e98 100644 --- a/keyboards/melody96/keymaps/konstantin/keymap.c +++ b/keyboards/melody96/keymaps/konstantin/keymap.c | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | static const hsv_t *colors[] = { &GODSPEED_BLUE, &GODSPEED_YELLOW }; | 4 | static const hsv_t *colors[] = { &GODSPEED_BLUE, &GODSPEED_YELLOW }; |
| 5 | static size_t cnum = sizeof colors / sizeof *colors; | 5 | static size_t cnum = sizeof colors / sizeof *colors; |
| 6 | static size_t cidx; | 6 | static size_t cidx = 0; |
| 7 | 7 | ||
| 8 | void eeconfig_init_keymap(void) { | 8 | void eeconfig_init_keymap(void) { |
| 9 | rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v); | 9 | rgblight_sethsv(colors[cidx]->h, colors[cidx]->s, colors[cidx]->v); |
diff --git a/users/konstantin/tap_dance.c b/users/konstantin/tap_dance.c index 377a0889f..c01b29bd5 100644 --- a/users/konstantin/tap_dance.c +++ b/users/konstantin/tap_dance.c | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | 8 | ||
| 9 | void td_double_mods_each(qk_tap_dance_state_t *state, void *user_data) { | 9 | void td_double_mods_each(qk_tap_dance_state_t *state, void *user_data) { |
| 10 | qk_tap_dance_pair_t *data = (qk_tap_dance_pair_t *)user_data; | 10 | qk_tap_dance_pair_t *data = (qk_tap_dance_pair_t *)user_data; |
| 11 | |||
| 11 | // Single tap → mod1, double tap → mod2, triple tap etc. → mod1+mod2 | 12 | // Single tap → mod1, double tap → mod2, triple tap etc. → mod1+mod2 |
| 12 | if (state->count == 1 || state->count == 3) { | 13 | if (state->count == 1 || state->count == 3) { |
| 13 | register_code(data->kc1); | 14 | register_code(data->kc1); |
| @@ -21,6 +22,7 @@ void td_double_mods_each(qk_tap_dance_state_t *state, void *user_data) { | |||
| 21 | 22 | ||
| 22 | void td_double_mods_reset(qk_tap_dance_state_t *state, void *user_data) { | 23 | void td_double_mods_reset(qk_tap_dance_state_t *state, void *user_data) { |
| 23 | qk_tap_dance_pair_t *data = (qk_tap_dance_pair_t *)user_data; | 24 | qk_tap_dance_pair_t *data = (qk_tap_dance_pair_t *)user_data; |
| 25 | |||
| 24 | if (state->count == 1 || state->count >= 3) { | 26 | if (state->count == 1 || state->count >= 3) { |
| 25 | unregister_code(data->kc1); | 27 | unregister_code(data->kc1); |
| 26 | } | 28 | } |
| @@ -36,6 +38,7 @@ void td_double_mods_reset(qk_tap_dance_state_t *state, void *user_data) { | |||
| 36 | 38 | ||
| 37 | void td_mod_layer_each(qk_tap_dance_state_t *state, void *user_data) { | 39 | void td_mod_layer_each(qk_tap_dance_state_t *state, void *user_data) { |
| 38 | qk_tap_dance_dual_role_t *data = (qk_tap_dance_dual_role_t *)user_data; | 40 | qk_tap_dance_dual_role_t *data = (qk_tap_dance_dual_role_t *)user_data; |
| 41 | |||
| 39 | // Single tap → mod, double tap → layer, triple tap etc. → mod+layer | 42 | // Single tap → mod, double tap → layer, triple tap etc. → mod+layer |
| 40 | if (state->count == 1 || state->count == 3) { | 43 | if (state->count == 1 || state->count == 3) { |
| 41 | register_code(data->kc); | 44 | register_code(data->kc); |
| @@ -49,6 +52,7 @@ void td_mod_layer_each(qk_tap_dance_state_t *state, void *user_data) { | |||
| 49 | 52 | ||
| 50 | void td_mod_layer_reset(qk_tap_dance_state_t *state, void *user_data) { | 53 | void td_mod_layer_reset(qk_tap_dance_state_t *state, void *user_data) { |
| 51 | qk_tap_dance_dual_role_t *data = (qk_tap_dance_dual_role_t *)user_data; | 54 | qk_tap_dance_dual_role_t *data = (qk_tap_dance_dual_role_t *)user_data; |
| 55 | |||
| 52 | if (state->count == 1 || state->count >= 3) { | 56 | if (state->count == 1 || state->count >= 3) { |
| 53 | unregister_code(data->kc); | 57 | unregister_code(data->kc); |
| 54 | } | 58 | } |
| @@ -59,7 +63,7 @@ void td_mod_layer_reset(qk_tap_dance_state_t *state, void *user_data) { | |||
| 59 | 63 | ||
| 60 | #define ACTION_TAP_DANCE_LAYER_MOD(layer, mod) { \ | 64 | #define ACTION_TAP_DANCE_LAYER_MOD(layer, mod) { \ |
| 61 | .fn = { td_layer_mod_each, NULL, td_layer_mod_reset }, \ | 65 | .fn = { td_layer_mod_each, NULL, td_layer_mod_reset }, \ |
| 62 | .user_data = &(qk_tap_dance_layer_mod_t){ layer, mod }, \ | 66 | .user_data = &(qk_tap_dance_layer_mod_t){ layer, mod, 0, 0 }, \ |
| 63 | } | 67 | } |
| 64 | 68 | ||
| 65 | typedef struct { | 69 | typedef struct { |
| @@ -75,6 +79,7 @@ void td_layer_mod_each(qk_tap_dance_state_t *state, void *user_data) { | |||
| 75 | data->layer_on = IS_LAYER_ON(data->layer); | 79 | data->layer_on = IS_LAYER_ON(data->layer); |
| 76 | data->started = true; | 80 | data->started = true; |
| 77 | } | 81 | } |
| 82 | |||
| 78 | // Single tap → layer, double tap → mod, triple tap etc. → layer+mod | 83 | // Single tap → layer, double tap → mod, triple tap etc. → layer+mod |
| 79 | if (state->count == 1 || state->count == 3) { | 84 | if (state->count == 1 || state->count == 3) { |
| 80 | layer_on(data->layer); | 85 | layer_on(data->layer); |
| @@ -88,12 +93,14 @@ void td_layer_mod_each(qk_tap_dance_state_t *state, void *user_data) { | |||
| 88 | 93 | ||
| 89 | void td_layer_mod_reset(qk_tap_dance_state_t *state, void *user_data) { | 94 | void td_layer_mod_reset(qk_tap_dance_state_t *state, void *user_data) { |
| 90 | qk_tap_dance_layer_mod_t *data = (qk_tap_dance_layer_mod_t *)user_data; | 95 | qk_tap_dance_layer_mod_t *data = (qk_tap_dance_layer_mod_t *)user_data; |
| 96 | |||
| 91 | if ((state->count == 1 || state->count >= 3) && !data->layer_on) { | 97 | if ((state->count == 1 || state->count >= 3) && !data->layer_on) { |
| 92 | layer_off(data->layer); | 98 | layer_off(data->layer); |
| 93 | } | 99 | } |
| 94 | if (state->count >= 2) { | 100 | if (state->count >= 2) { |
| 95 | unregister_code(data->kc); | 101 | unregister_code(data->kc); |
| 96 | } | 102 | } |
| 103 | |||
| 97 | data->started = false; | 104 | data->started = false; |
| 98 | } | 105 | } |
| 99 | 106 | ||
