@ -93,6 +93,7 @@ void action_exec(keyevent_t event)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# ifdef SWAP_HANDS_ENABLE 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					bool  swap_hands  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					bool  swap_held  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  process_hand_swap ( keyevent_t  * event )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    static  swap_state_row_t  swap_state [ MATRIX_ROWS ] ; 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -132,6 +133,27 @@ bool process_record_quantum(keyrecord_t *record) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    return  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# ifndef NO_ACTION_TAPPING 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// Allows for handling tap-hold actions immediately instead of waiting for TAPPING_TERM or another keypress.
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  process_record_tap_hint ( keyrecord_t  * record ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    action_t  action  =  layer_switch_get_action ( record - > event . key ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    switch  ( action . kind . id )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# ifdef SWAP_HANDS_ENABLE 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        case  ACT_SWAP_HANDS : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            switch  ( action . swap . code )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                case  OP_SH_TAP_TOGGLE : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                default : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    swap_hands  =  ! swap_hands ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    swap_held  =  true ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					# endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  process_record ( keyrecord_t  * record ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( IS_NOEVENT ( record - > event ) )  {  return ;  } 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -551,23 +573,37 @@ void process_action(keyrecord_t *record, action_t action)
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    # ifndef NO_ACTION_TAPPING 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                case  OP_SH_TAP_TOGGLE : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    /* tap toggle */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    if  ( tap_count  >  0 )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        if  ( ! event . pressed )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    if  ( event . pressed )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        if  ( swap_held )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            swap_held  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        }  else  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            swap_hands  =  ! swap_hands ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    }  else  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        swap_hands  =  event . pressed ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        if  ( tap_count  <  TAPPING_TOGGLE )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            swap_hands  =  ! swap_hands ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                default : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    /* tap key */ 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    if  ( tap_count  >  0 )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        if  ( swap_held )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            swap_hands  =  ! swap_hands ;  // undo hold set up in _tap_hint
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            swap_held  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        if  ( event . pressed )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            register_code ( action . swap . code ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        }  else  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            unregister_code ( action . swap . code ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            * record  =  ( keyrecord_t ) { } ;  // hack: reset tap mode
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    }  else  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        swap_hands  =  event . pressed ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        if  ( swap_held  & &  ! event . pressed )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            swap_hands  =  ! swap_hands ;  // undo hold set up in _tap_hint
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                            swap_held  =  false ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                        } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    # endif 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }