aboutsummaryrefslogtreecommitdiff
path: root/qmk/keyboards/sofle_choc/keymaps/custom/tap_hold_dance.h
diff options
context:
space:
mode:
authorSébastien Dailly <sebastien@dailly.me>2026-08-04 15:27:25 +0200
committerSébastien Dailly <sebastien@dailly.me>2026-08-04 15:40:31 +0200
commitffaafb833088e7fa04c79c4c25b130df86291a7e (patch)
tree34bbc4d9ad38be2b7b0234c1ff318c530dd40ff8 /qmk/keyboards/sofle_choc/keymaps/custom/tap_hold_dance.h
parentd0f494918c32b391ed0e0feaa69160cccc98f4a6 (diff)
QMK: Dedicated file for the taphold mecanism
Diffstat (limited to 'qmk/keyboards/sofle_choc/keymaps/custom/tap_hold_dance.h')
-rw-r--r--qmk/keyboards/sofle_choc/keymaps/custom/tap_hold_dance.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/qmk/keyboards/sofle_choc/keymaps/custom/tap_hold_dance.h b/qmk/keyboards/sofle_choc/keymaps/custom/tap_hold_dance.h
new file mode 100644
index 0000000..4c895d5
--- /dev/null
+++ b/qmk/keyboards/sofle_choc/keymaps/custom/tap_hold_dance.h
@@ -0,0 +1,25 @@
+#pragma once
+#include QMK_KEYBOARD_H
+#include "quad_tapdance.h"
+
+typedef struct {
+ td_state_t state;
+ const uint16_t tap;
+ const uint16_t hold;
+ uint16_t held;
+ bool left;
+} tap_hold_dance_t;
+
+void tap_hold_dance_each(tap_dance_state_t *state, void *user_data);
+void tap_hold_dance_finished(tap_dance_state_t *state, void *user_data);
+void tap_hold_dance_reset(tap_dance_state_t *state, void *user_data);
+void tap_hold_dance_released(tap_dance_state_t *state, void *user_data);
+void tap_hold_dance_process_record(uint16_t keycode, keyrecord_t *record);
+uint16_t tap_hold_dance_tapping_term(uint16_t keycode, keyrecord_t *record);
+
+#define ACTION_TAP_HOLD_DANCE(tap, hold, left) \
+ { \
+ .fn = {NULL, tap_hold_dance_finished, tap_hold_dance_reset, tap_hold_dance_released}, \
+ .user_data = (void *)&((tap_hold_dance_t){TD_NONE, tap, hold, 0, 0}), \
+ }
+