mirror of
				https://github.com/qmk/qmk_userspace.git
				synced 2025-11-04 02:40:06 -05:00 
			
		
		
		
	Remove tap dance
This commit is contained in:
		
					parent
					
						
							
								6aec821065
							
						
					
				
			
			
				commit
				
					
						6d1ac07ee1
					
				
			
		
					 4 changed files with 11 additions and 238 deletions
				
			
		| 
						 | 
					@ -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
 | 
					 | 
				
			||||||
| 
						 | 
					@ -24,20 +24,13 @@
 | 
				
			||||||
#    define COMBO_SHOULD_TRIGGER
 | 
					#    define COMBO_SHOULD_TRIGGER
 | 
				
			||||||
#endif // COMBO_ENABLE
 | 
					#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
 | 
					// Tap-hold settings
 | 
				
			||||||
#    define TAPPING_TERM 300
 | 
					#define TAPPING_TERM 300
 | 
				
			||||||
#    define QUICK_TAP_TERM 175
 | 
					#define QUICK_TAP_TERM 175
 | 
				
			||||||
#    define QUICK_TAP_TERM_PER_KEY
 | 
					#define QUICK_TAP_TERM_PER_KEY
 | 
				
			||||||
#    define HOLD_ON_OTHER_KEY_PRESS
 | 
					#define HOLD_ON_OTHER_KEY_PRESS
 | 
				
			||||||
#    define HOLD_ON_OTHER_KEY_PRESS_PER_KEY
 | 
					#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY
 | 
				
			||||||
#    define PERMISSIVE_HOLD
 | 
					#define PERMISSIVE_HOLD
 | 
				
			||||||
#    define TAP_CODE_DELAY 20
 | 
					#define TAP_CODE_DELAY 20
 | 
				
			||||||
#    define TAPPING_FORCE_HOLD
 | 
					#define TAPPING_FORCE_HOLD
 | 
				
			||||||
#    define ONESHOT_TAP_TOGGLE 3
 | 
					#define ONESHOT_TAP_TOGGLE 3
 | 
				
			||||||
#endif // TAP_DANCE_ENABLED
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,3 @@ REPEAT_KEY_ENABLE = yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Userspace code
 | 
					# Userspace code
 | 
				
			||||||
SRC += struckmb.c
 | 
					SRC += struckmb.c
 | 
				
			||||||
 | 
					 | 
				
			||||||
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
 | 
					 | 
				
			||||||
	DYNAMIC_TAPPING_TERM_ENABLE = yes
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -124,13 +124,8 @@ enum userspace_custom_keycodes {
 | 
				
			||||||
#define LOW_TAB LT(LAYER_LOWER, KC_TAB)
 | 
					#define LOW_TAB LT(LAYER_LOWER, KC_TAB)
 | 
				
			||||||
#define RSE_BSP LT(LAYER_RAISE, KC_BSPC)
 | 
					#define RSE_BSP LT(LAYER_RAISE, KC_BSPC)
 | 
				
			||||||
#define ATT(kc) LT(LAYER_ATTIC, kc)
 | 
					#define ATT(kc) LT(LAYER_ATTIC, kc)
 | 
				
			||||||
#ifdef TAP_DANCE_ENABLE
 | 
					#define SY_L(kc) LT(LAYER_SYMBL, kc)
 | 
				
			||||||
#    define SY_L(kc) TD(SYM_L)
 | 
					#define SY_R(kc) LT(LAYER_SYMBL, kc)
 | 
				
			||||||
#    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
 | 
					#ifdef MOUSEKEY_ENABLE
 | 
				
			||||||
#    define MS(kc) LT(LAYER_POINTER, kc)
 | 
					#    define MS(kc) LT(LAYER_POINTER, kc)
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
| 
						 | 
					@ -152,29 +147,6 @@ enum userspace_custom_keycodes {
 | 
				
			||||||
#define C___TAB C(KC_TAB)
 | 
					#define C___TAB C(KC_TAB)
 | 
				
			||||||
#define S_C_TAB S(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 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)
 | 
					#define HRMR(k1, k2, k3, k4) RCTL_T(k1), RSFT_T(k2), LALT_T(k3), RGUI_T(k4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue