summary refs log tree commit diff
path: root/quantum/process_keycode/process_tap_dance.h
diff options
context:
space:
mode:
authorThat-Canadian <poole.chris.11@gmail.com>2017-08-03 10:52:30 -0400
committerThat-Canadian <poole.chris.11@gmail.com>2017-08-03 10:52:30 -0400
commitc33434c0d64dd7cbd5f6371c7cb4ac5e05924944 (patch)
tree59fe34d95089a59fa4e615fd995c81d274147bba /quantum/process_keycode/process_tap_dance.h
parentdb5bb7dbbfa2d2eb4f41aa4c768c3c5c8d73f563 (diff)
parent07ba06d0b6e516bcfa4cbccbed9cfd8dc131072a (diff)
Merge branch 'master' into eco-keyboard
Diffstat (limited to 'quantum/process_keycode/process_tap_dance.h')
-rw-r--r--quantum/process_keycode/process_tap_dance.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/quantum/process_keycode/process_tap_dance.h b/quantum/process_keycode/process_tap_dance.h
index f42c154a05..37a27c5366 100644
--- a/quantum/process_keycode/process_tap_dance.h
+++ b/quantum/process_keycode/process_tap_dance.h
@@ -54,11 +54,22 @@ typedef struct
   uint16_t kc2;
 } qk_tap_dance_pair_t;
 
+typedef struct
+{
+  uint16_t kc;
+  uint8_t layer;
+} qk_tap_dance_dual_role_t;
+
 #define ACTION_TAP_DANCE_DOUBLE(kc1, kc2) { \
     .fn = { NULL, qk_tap_dance_pair_finished, qk_tap_dance_pair_reset }, \
     .user_data = (void *)&((qk_tap_dance_pair_t) { kc1, kc2 }),  \
   }
 
+#define ACTION_TAP_DANCE_DUAL_ROLE(kc, layer) { \
+    .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 }), \
+  }
+
 #define ACTION_TAP_DANCE_FN(user_fn) {  \
     .fn = { NULL, user_fn, NULL }, \
     .user_data = NULL, \
@@ -86,6 +97,9 @@ void reset_tap_dance (qk_tap_dance_state_t *state);
 void qk_tap_dance_pair_finished (qk_tap_dance_state_t *state, void *user_data);
 void qk_tap_dance_pair_reset (qk_tap_dance_state_t *state, void *user_data);
 
+void qk_tap_dance_dual_role_finished (qk_tap_dance_state_t *state, void *user_data);
+void qk_tap_dance_dual_role_reset (qk_tap_dance_state_t *state, void *user_data);
+
 #else
 
 #define TD(n) KC_NO