Remove tap dance

This commit is contained in:
struckmb 2025-08-25 17:49:32 +02:00
commit 6d1ac07ee1
4 changed files with 11 additions and 238 deletions

View file

@ -1,188 +0,0 @@
#ifdef TAP_DANCE_ENABLE
// Create a global instance of the tapdance state type
static td_state_t td_state;
// Determine the tapdance state to return
td_state_t cur_dance(tap_dance_state_t *state) {
if (state->count == 1) {
if (state->interrupted || !state->pressed)
return TD_SINGLE_TAP;
else
return TD_SINGLE_HOLD;
}
if (state->count == 2)
return TD_DOUBLE_SINGLE_TAP;
else
return TD_UNKNOWN; // Any number higher than the maximum state value you return above
}
// Handle the possible states for each tapdance keycode you define:
void symL_finished(tap_dance_state_t *state, void *user_data) {
td_state = cur_dance(state);
if (td_state == TD_SINGLE_HOLD) {
layer_on(LAYER_SYMBL);
return;
}
uint8_t current_layer = get_highest_layer(default_layer_state);
switch (td_state) {
case TD_SINGLE_TAP:
# ifdef QWERTY_ENABLE
if (LAYER_QWERTY == current_layer) register_code16(DE_A);
# endif // QWERTY_ENABLE
# ifdef BONE_ENABLE
if (LAYER_BONE == current_layer) register_code16(DE_C);
# endif // BONE_ENABLE
# ifdef NOTED_ENABLE
if (LAYER_NOTED == current_layer) register_code16(DE_C);
# endif // NOTED_ENABLE
# ifdef COLEMAK_DH_ENABLE
if (LAYER_COLEMAK_DH == current_layer) register_code16(DE_A);
# endif // COLEMAK_DH_ENABLE
break;
case TD_DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term
# ifdef QWERTY_ENABLE
if (LAYER_QWERTY == current_layer) {
tap_code16(DE_A);
register_code16(DE_A);
}
# endif // QWERTY_ENABLE
# ifdef BONE_ENABLE
if (LAYER_BONE == current_layer) {
tap_code16(DE_C);
register_code16(DE_C);
}
# endif // BONE_ENABLE
# ifdef NOTED_ENABLE
if (LAYER_NOTED == current_layer) {
tap_code16(DE_C);
register_code16(DE_C);
}
# endif // NOTED_ENABLE
# ifdef COLEMAK_DH_ENABLE
if (LAYER_COLEMAK_DH == current_layer) {
tap_code16(DE_A);
register_code16(DE_A);
}
# endif // COLEMAK_DH_ENABLE
break;
default:
break;
}
}
void symL_reset(tap_dance_state_t *state, void *user_data) {
if (td_state == TD_SINGLE_HOLD) {
layer_off(LAYER_SYMBL);
return;
}
uint8_t current_layer = get_highest_layer(default_layer_state);
switch (td_state) {
case TD_SINGLE_TAP:
case TD_DOUBLE_SINGLE_TAP:
# ifdef QWERTY_ENABLE
if (LAYER_QWERTY == current_layer) unregister_code16(DE_A);
# endif // QWERTY_ENABLE
# ifdef BONE_ENABLE
if (LAYER_BONE == current_layer) unregister_code16(DE_C);
# endif // BONE_ENABLE
# ifdef NOTED_ENABLE
if (LAYER_NOTED == current_layer) unregister_code16(DE_C);
# endif // NOTED_ENABLE
# ifdef COLEMAK_DH_ENABLE
if (LAYER_COLEMAK_DH == current_layer) unregister_code16(DE_A);
# endif // COLEMAK_DH_ENABLE
break;
default:
break;
}
}
void symR_finished(tap_dance_state_t *state, void *user_data) {
td_state = cur_dance(state);
if (td_state == TD_SINGLE_HOLD) {
layer_on(LAYER_SYMBL);
return;
}
uint8_t current_layer = get_highest_layer(default_layer_state);
switch (td_state) {
case TD_SINGLE_TAP:
# ifdef QWERTY_ENABLE
if (LAYER_QWERTY == current_layer) register_code16(DE_ODIA);
# endif // QWERTY_ENABLE
# ifdef BONE_ENABLE
if (LAYER_BONE == current_layer) register_code16(DE_G);
# endif // BONE_ENABLE
# ifdef NOTED_ENABLE
if (LAYER_NOTED == current_layer) register_code16(DE_G);
# endif // NOTED_ENABLE
# ifdef COLEMAK_DH_ENABLE
if (LAYER_COLEMAK_DH == current_layer) register_code16(DE_O);
# endif // COLEMAK_DH_ENABLE
break;
case TD_DOUBLE_SINGLE_TAP: // Allow nesting of 2 key presses within tapping term
# ifdef QWERTY_ENABLE
if (LAYER_QWERTY == current_layer) {
tap_code16(DE_ODIA);
register_code16(DE_ODIA);
}
# endif // QWERTY_ENABLE
# ifdef BONE_ENABLE
if (LAYER_BONE == current_layer) {
tap_code16(DE_G);
register_code16(DE_G);
}
# endif // BONE_ENABLE
# ifdef NOTED_ENABLE
if (LAYER_NOTED == current_layer) {
tap_code16(DE_G);
register_code16(DE_G);
}
# endif // NOTED_ENABLE
# ifdef COLEMAK_DH_ENABLE
if (LAYER_COLEMAK_DH == current_layer) {
tap_code16(DE_O);
register_code16(DE_O);
}
# endif // COLEMAK_DH_ENABLE
break;
default:
break;
}
}
void symR_reset(tap_dance_state_t *state, void *user_data) {
if (td_state == TD_SINGLE_HOLD) {
layer_off(LAYER_SYMBL);
return;
}
uint8_t current_layer = get_highest_layer(default_layer_state);
switch (td_state) {
case TD_SINGLE_TAP:
case TD_DOUBLE_SINGLE_TAP:
# ifdef QWERTY_ENABLE
if (LAYER_QWERTY == current_layer) unregister_code16(DE_ODIA);
# endif // QWERTY_ENABLE
# ifdef BONE_ENABLE
if (LAYER_BONE == current_layer) unregister_code16(DE_G);
# endif // BONE_ENABLE
# ifdef NOTED_ENABLE
if (LAYER_NOTED == current_layer) unregister_code16(DE_G);
# endif // NOTED_ENABLE
# ifdef COLEMAK_DH_ENABLE
if (LAYER_COLEMAK_DH == current_layer) unregister_code16(DE_O);
# endif // COLEMAK_DH_ENABLE
break;
default:
break;
}
}
// Define `ACTION_TAP_DANCE_FN_ADVANCED()` for each tapdance keycode, passing in `finished` and `reset` functions
tap_dance_action_t tap_dance_actions[] = {
//
[SYM_L] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, symL_finished, symL_reset),
[SYM_R] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, symR_finished, symR_reset),
};
#endif // TAP_DANCE_ENABLE

View file

@ -24,12 +24,6 @@
# define COMBO_SHOULD_TRIGGER
#endif // COMBO_ENABLE
#ifdef TAP_DANCE_ENABLE
# define TAPPING_TERM 120
# ifdef DYNAMIC_TAPPING_TERM_ENABLE
# define DYNAMIC_TAPPING_TERM_INCREMENT 10
# endif // DYNAMIC_TAPPING_TERM_ENABLE
#else
// Tap-hold settings
#define TAPPING_TERM 300
#define QUICK_TAP_TERM 175
@ -40,4 +34,3 @@
#define TAP_CODE_DELAY 20
#define TAPPING_FORCE_HOLD
#define ONESHOT_TAP_TOGGLE 3
#endif // TAP_DANCE_ENABLED

View file

@ -5,7 +5,3 @@ REPEAT_KEY_ENABLE = yes
# Userspace code
SRC += struckmb.c
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
DYNAMIC_TAPPING_TERM_ENABLE = yes
endif

View file

@ -124,13 +124,8 @@ enum userspace_custom_keycodes {
#define LOW_TAB LT(LAYER_LOWER, KC_TAB)
#define RSE_BSP LT(LAYER_RAISE, KC_BSPC)
#define ATT(kc) LT(LAYER_ATTIC, kc)
#ifdef TAP_DANCE_ENABLE
# define SY_L(kc) TD(SYM_L)
# define SY_R(kc) TD(SYM_R)
#else
#define SY_L(kc) LT(LAYER_SYMBL, kc)
#define SY_R(kc) LT(LAYER_SYMBL, kc)
#endif // TAP_DANCE_ENABLE
#ifdef MOUSEKEY_ENABLE
# define MS(kc) LT(LAYER_POINTER, kc)
#else
@ -152,29 +147,6 @@ enum userspace_custom_keycodes {
#define C___TAB C(KC_TAB)
#define S_C_TAB S(C(KC_TAB))
#ifdef TAP_DANCE_ENABLE
// Tap Dance keycodes
enum td_keycodes {
// Toggle symbol layer if held, key based on current base layer, else
SYM_L,
SYM_R
};
// Define a type containing as many tapdance states as you need
typedef enum { TD_NONE, TD_UNKNOWN, TD_SINGLE_TAP, TD_SINGLE_HOLD, TD_DOUBLE_SINGLE_TAP } td_state_t;
// Declare your tapdance functions:
// Function to determine the current tapdance state
td_state_t cur_dance(tap_dance_state_t *state);
// `finished` and `reset` functions for each tapdance keycode
void symL_finished(tap_dance_state_t *state, void *user_data);
void symL_reset(tap_dance_state_t *state, void *user_data);
void symR_finished(tap_dance_state_t *state, void *user_data);
void symR_reset(tap_dance_state_t *state, void *user_data);
#endif // TAP_DANCE_ENABLE
#define HRML(k1, k2, k3, k4) LGUI_T(k1), LALT_T(k2), LSFT_T(k3), LCTL_T(k4)
#define HRMR(k1, k2, k3, k4) RCTL_T(k1), RSFT_T(k2), LALT_T(k3), RGUI_T(k4)