diff options
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}), \ + } + |
