aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--keyboards/melody96/keymaps/konstantin/keymap.c2
-rw-r--r--users/konstantin/tap_dance.c9
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
4static const hsv_t *colors[] = { &GODSPEED_BLUE, &GODSPEED_YELLOW }; 4static const hsv_t *colors[] = { &GODSPEED_BLUE, &GODSPEED_YELLOW };
5static size_t cnum = sizeof colors / sizeof *colors; 5static size_t cnum = sizeof colors / sizeof *colors;
6static size_t cidx; 6static size_t cidx = 0;
7 7
8void eeconfig_init_keymap(void) { 8void 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
9void td_double_mods_each(qk_tap_dance_state_t *state, void *user_data) { 9void 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
22void td_double_mods_reset(qk_tap_dance_state_t *state, void *user_data) { 23void 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
37void td_mod_layer_each(qk_tap_dance_state_t *state, void *user_data) { 39void 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
50void td_mod_layer_reset(qk_tap_dance_state_t *state, void *user_data) { 53void 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
65typedef struct { 69typedef 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
89void td_layer_mod_reset(qk_tap_dance_state_t *state, void *user_data) { 94void 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