@ -22,7 +22,7 @@ void qk_tap_dance_pair_reset (qk_tap_dance_state_t *state, void *user_data) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  _process_tap_dance_action_fn  ( qk_tap_dance_state_t  * state , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  void  _process_tap_dance_action_fn  ( qk_tap_dance_state_t  * state , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                          void  * user_data , 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                                          qk_tap_dance_user_fn_t  fn ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -31,34 +31,33 @@ static void _process_tap_dance_action_fn (qk_tap_dance_state_t *state,
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  process_tap_dance_action_on_each_tap  ( uint16_t keycode  ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  void  process_tap_dance_action_on_each_tap  ( qk_tap_dance_action_t action  ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  uint16_t  idx  =  keycode  -  QK_TAP_DANCE ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  qk_tap_dance_action_t  action ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  action  =  tap_dance_actions [ idx ] ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  _process_tap_dance_action_fn  ( & qk_tap_dance_state ,  action . user_data ,  action . fn . on_each_tap ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  process_tap_dance_action_on_dance_finished  ( uint16_t keycode  ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  void  process_tap_dance_action_on_dance_finished  ( qk_tap_dance_action_t  action ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  uint16_t  idx  =  keycode  -  QK_TAP_DANCE ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  qk_tap_dance_action_t  action ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  action  =  tap_dance_actions [ idx ] ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  _process_tap_dance_action_fn  ( & qk_tap_dance_state ,  action . user_data ,  action . fn . on_dance_finished ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  inline  void  process_tap_dance_action_on_reset  ( qk_tap_dance_action_t  action ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  _process_tap_dance_action_fn  ( & qk_tap_dance_state ,  action . user_data ,  action . fn . on_reset ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					bool  process_tap_dance ( uint16_t  keycode ,  keyrecord_t  * record )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  bool  r  =  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  uint16_t  idx  =  keycode  -  QK_TAP_DANCE ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  qk_tap_dance_action_t  action ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  switch ( keycode )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  case  QK_TAP_DANCE  . . .  QK_TAP_DANCE_MAX : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    process_tap_dance_action_on_each_tap  ( qk_tap_dance_state . keycode ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    action  =  tap_dance_actions [ idx ] ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    process_tap_dance_action_on_each_tap  ( action ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( qk_tap_dance_state . keycode  & &  qk_tap_dance_state . keycode  ! =  keycode )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      process_tap_dance_action_on_dance_finished  ( qk_tap_dance_state . keycode ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      process_tap_dance_action_on_dance_finished  ( action ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  else  if  ( qk_tap_dance_state . active  & &  qk_tap_dance_state . pressed )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      reset_tap_dance  ( & qk_tap_dance_state ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }  else  { 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -77,8 +76,11 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  default : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( qk_tap_dance_state . keycode )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      // if we are here, the tap dance was interrupted by a different key
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      process_tap_dance_action_on_each_tap  ( qk_tap_dance_state . keycode ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      process_tap_dance_action_on_dance_finished  ( qk_tap_dance_state . keycode ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      idx  =  qk_tap_dance_state . keycode  -  QK_TAP_DANCE ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      action  =  tap_dance_actions [ idx ] ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      process_tap_dance_action_on_each_tap  ( action ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      process_tap_dance_action_on_dance_finished  ( action ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      reset_tap_dance  ( & qk_tap_dance_state ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					      qk_tap_dance_state . active  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    } 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -91,7 +93,10 @@ bool process_tap_dance(uint16_t keycode, keyrecord_t *record) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  matrix_scan_tap_dance  ( )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  if  ( qk_tap_dance_state . active  & &  timer_elapsed  ( qk_tap_dance_state . timer )  >  TAPPING_TERM )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // if we are here, the tap dance was timed out
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    process_tap_dance_action_on_dance_finished  ( qk_tap_dance_state . keycode ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    uint16_t  idx  =  qk_tap_dance_state . keycode  -  QK_TAP_DANCE ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    qk_tap_dance_action_t  action  =  tap_dance_actions [ idx ] ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    process_tap_dance_action_on_dance_finished  ( action ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    reset_tap_dance  ( & qk_tap_dance_state ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -104,9 +109,7 @@ void reset_tap_dance (qk_tap_dance_state_t *state) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    return ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  action  =  tap_dance_actions [ idx ] ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  if  ( action . fn . on_reset )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    action . fn . on_reset ( state ,  action . user_data ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  process_tap_dance_action_on_reset  ( action ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  state - > keycode  =  0 ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					  state - > count  =  0 ;