diff options
| author | Sébastien Dailly <sebastien@dailly.me> | 2026-08-04 15:27:25 +0200 |
|---|---|---|
| committer | Sébastien Dailly <sebastien@dailly.me> | 2026-08-04 15:40:31 +0200 |
| commit | ffaafb833088e7fa04c79c4c25b130df86291a7e (patch) | |
| tree | 34bbc4d9ad38be2b7b0234c1ff318c530dd40ff8 /qmk/keyboards/sofle_choc/keymaps/custom/tap_hold_dance.h | |
| parent | d0f494918c32b391ed0e0feaa69160cccc98f4a6 (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.h | 25 |
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}), \ + } + |
