aboutsummaryrefslogtreecommitdiff
path: root/quantum/process_keycode/process_tap_dance.h
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/process_keycode/process_tap_dance.h')
-rw-r--r--quantum/process_keycode/process_tap_dance.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/quantum/process_keycode/process_tap_dance.h b/quantum/process_keycode/process_tap_dance.h
index b2d0cb829..8d227dfd7 100644
--- a/quantum/process_keycode/process_tap_dance.h
+++ b/quantum/process_keycode/process_tap_dance.h
@@ -56,13 +56,19 @@ typedef struct {
56typedef struct { 56typedef struct {
57 uint16_t kc; 57 uint16_t kc;
58 uint8_t layer; 58 uint8_t layer;
59 void (*layer_function)(uint8_t);
59} qk_tap_dance_dual_role_t; 60} qk_tap_dance_dual_role_t;
60 61
61# define ACTION_TAP_DANCE_DOUBLE(kc1, kc2) \ 62# define ACTION_TAP_DANCE_DOUBLE(kc1, kc2) \
62 { .fn = {qk_tap_dance_pair_on_each_tap, qk_tap_dance_pair_finished, qk_tap_dance_pair_reset}, .user_data = (void *)&((qk_tap_dance_pair_t){kc1, kc2}), } 63 { .fn = {qk_tap_dance_pair_on_each_tap, qk_tap_dance_pair_finished, qk_tap_dance_pair_reset}, .user_data = (void *)&((qk_tap_dance_pair_t){kc1, kc2}), }
63 64
64# define ACTION_TAP_DANCE_DUAL_ROLE(kc, layer) \ 65# define ACTION_TAP_DANCE_DUAL_ROLE(kc, layer) \
65 { .fn = {qk_tap_dance_dual_role_on_each_tap, qk_tap_dance_dual_role_finished, qk_tap_dance_dual_role_reset}, .user_data = (void *)&((qk_tap_dance_dual_role_t){kc, layer}), } 66 { .fn = { qk_tap_dance_dual_role_on_each_tap, qk_tap_dance_dual_role_finished, qk_tap_dance_dual_role_reset }, .user_data = (void *)&((qk_tap_dance_dual_role_t) { kc, layer, layer_move }), }
67
68# define ACTION_TAP_DANCE_TOGGLE_LAYER(kc, layer) \
69 { .fn = { NULL, qk_tap_dance_dual_role_finished, qk_tap_dance_dual_role_reset }, .user_data = (void *)&((qk_tap_dance_dual_role_t) { kc, layer, layer_invert }), }
70
71# define ACTION_TAP_DANCE_LAYER_MOVE(kc, layer) ACTION_TAP_DANCE_DUAL_ROLE(kc, layer)
66 72
67# define ACTION_TAP_DANCE_FN(user_fn) \ 73# define ACTION_TAP_DANCE_FN(user_fn) \
68 { .fn = {NULL, user_fn, NULL}, .user_data = NULL, } 74 { .fn = {NULL, user_fn, NULL}, .user_data = NULL, }
@@ -73,6 +79,8 @@ typedef struct {
73# define ACTION_TAP_DANCE_FN_ADVANCED_TIME(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset, tap_specific_tapping_term) \ 79# define ACTION_TAP_DANCE_FN_ADVANCED_TIME(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset, tap_specific_tapping_term) \
74 { .fn = {user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset}, .user_data = NULL, .custom_tapping_term = tap_specific_tapping_term, } 80 { .fn = {user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset}, .user_data = NULL, .custom_tapping_term = tap_specific_tapping_term, }
75 81
82
83
76extern qk_tap_dance_action_t tap_dance_actions[]; 84extern qk_tap_dance_action_t tap_dance_actions[];
77 85
78/* To be used internally */ 86/* To be used internally */