From ffaafb833088e7fa04c79c4c25b130df86291a7e Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Tue, 4 Aug 2026 15:27:25 +0200 Subject: QMK: Dedicated file for the taphold mecanism --- .../sofle_choc/keymaps/custom/tap_hold_dance.h | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 qmk/keyboards/sofle_choc/keymaps/custom/tap_hold_dance.h (limited to 'qmk/keyboards/sofle_choc/keymaps/custom/tap_hold_dance.h') 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}), \ + } + -- cgit v1.2.3