Generalize Tap Dance Layer functions (#6629)
* made tapdance dual_role general * updated original dual_role functionality * added toggling layer example * Fix dual role and add alias * Update docs about new layer tap dances * Fix up based on feedback
This commit is contained in:
		
							parent
							
								
									63a0b1241d
								
							
						
					
					
						commit
						f069e9fc09
					
				
					 4 changed files with 20 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -71,7 +71,7 @@ void qk_tap_dance_dual_role_finished(qk_tap_dance_state_t *state, void *user_dat
 | 
			
		|||
    if (state->count == 1) {
 | 
			
		||||
        register_code16(pair->kc);
 | 
			
		||||
    } else if (state->count == 2) {
 | 
			
		||||
        layer_move(pair->layer);
 | 
			
		||||
        pair->layer_function(pair->layer);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,13 +56,19 @@ typedef struct {
 | 
			
		|||
typedef struct {
 | 
			
		||||
    uint16_t kc;
 | 
			
		||||
    uint8_t  layer;
 | 
			
		||||
    void (*layer_function)(uint8_t);
 | 
			
		||||
} qk_tap_dance_dual_role_t;
 | 
			
		||||
 | 
			
		||||
#    define ACTION_TAP_DANCE_DOUBLE(kc1, kc2) \
 | 
			
		||||
        { .fn = {qk_tap_dance_pair_on_each_tap, qk_tap_dance_pair_finished, qk_tap_dance_pair_reset}, .user_data = (void *)&((qk_tap_dance_pair_t){kc1, kc2}), }
 | 
			
		||||
 | 
			
		||||
#    define ACTION_TAP_DANCE_DUAL_ROLE(kc, layer) \
 | 
			
		||||
        { .fn = {qk_tap_dance_dual_role_on_each_tap, qk_tap_dance_dual_role_finished, qk_tap_dance_dual_role_reset}, .user_data = (void *)&((qk_tap_dance_dual_role_t){kc, layer}), }
 | 
			
		||||
        { .fn = { qk_tap_dance_dual_role_on_each_tap, qk_tap_dance_dual_role_finished, qk_tap_dance_dual_role_reset }, .user_data = (void *)&((qk_tap_dance_dual_role_t) { kc, layer, layer_move }),  }
 | 
			
		||||
 | 
			
		||||
#    define ACTION_TAP_DANCE_TOGGLE_LAYER(kc, layer) \
 | 
			
		||||
        { .fn = { NULL, qk_tap_dance_dual_role_finished, qk_tap_dance_dual_role_reset }, .user_data = (void *)&((qk_tap_dance_dual_role_t) { kc, layer, layer_invert }), }
 | 
			
		||||
 | 
			
		||||
#    define ACTION_TAP_DANCE_LAYER_MOVE(kc, layer) ACTION_TAP_DANCE_DUAL_ROLE(kc, layer)
 | 
			
		||||
 | 
			
		||||
#    define ACTION_TAP_DANCE_FN(user_fn) \
 | 
			
		||||
        { .fn = {NULL, user_fn, NULL}, .user_data = NULL, }
 | 
			
		||||
| 
						 | 
				
			
			@ -73,6 +79,8 @@ typedef struct {
 | 
			
		|||
#    define ACTION_TAP_DANCE_FN_ADVANCED_TIME(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset, tap_specific_tapping_term) \
 | 
			
		||||
        { .fn = {user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset}, .user_data = NULL, .custom_tapping_term = tap_specific_tapping_term, }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
extern qk_tap_dance_action_t tap_dance_actions[];
 | 
			
		||||
 | 
			
		||||
/* To be used internally */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue