@ -324,8 +324,8 @@ void rgb_matrix_raindrops(bool initialize) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    HSV  hsv ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    RGB  rgb ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Change one LED every tick 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    uint8_t  led_to_change  =  (  g_tick  &  0x000  )  = =  0  ?  rand ( )  %  DRIVER_LED_TOTAL   : 255 ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Change one LED every tick , make sure speed is not 0 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    uint8_t  led_to_change  =  (  g_tick  &  (  0x0A  /  ( rgb_matrix_config . speed  = =  0  ?  1  :  rgb_matrix_config . speed )  )  )  = =  0  ?  rand ( )  %  ( DRIVER_LED_TOTAL )   : 255 ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  (  int  i = 0 ;  i < DRIVER_LED_TOTAL ;  i + +  ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    { 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -432,7 +432,7 @@ void rgb_matrix_rainbow_beacon(void) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    rgb_led  led ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( uint8_t  i  =  0 ;  i  <  DRIVER_LED_TOTAL ;  i + + )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        led  =  g_rgb_leds [ i ] ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        hsv . h  =  1.5  *  ( led . point . y  -  32.0 ) *  cos ( g_tick  *  PI  /  128 )  +  1.5  *  ( led . point . x  -  112.0 )  *  sin ( g_tick  *  PI  /  128 )  +  rgb_matrix_config . hue ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        hsv . h  =  ( 1.5  *  ( rgb_matrix_config . speed  = =  0  ?  1  :  rgb_matrix_config . speed ) )   *  ( led . point . y  -  32.0 ) *  cos ( g_tick  *  PI  /  128 )  +  ( 1.5  *  ( rgb_matrix_config . speed  = =  0  ?  1  :  rgb_matrix_config . speed ) )   *  ( led . point . x  -  112.0 )  *  sin ( g_tick  *  PI  /  128 )  +  rgb_matrix_config . hue ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        rgb  =  hsv_to_rgb (  hsv  ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        rgb_matrix_set_color (  i ,  rgb . r ,  rgb . g ,  rgb . b  ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    } 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -444,7 +444,7 @@ void rgb_matrix_rainbow_pinwheels(void) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    rgb_led  led ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  ( uint8_t  i  =  0 ;  i  <  DRIVER_LED_TOTAL ;  i + + )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        led  =  g_rgb_leds [ i ] ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        hsv . h  =  2  *  ( led . point . y  -  32.0 ) *  cos ( g_tick  *  PI  /  128 )  +  2  *  ( 66  -  abs ( led . point . x  -  112.0 ) )  *  sin ( g_tick  *  PI  /  128 )  +  rgb_matrix_config . hue ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        hsv . h  =  ( 2  *  ( rgb_matrix_config . speed  = =  0  ?  1  :  rgb_matrix_config . speed ) )   *  ( led . point . y  -  32.0 ) *  cos ( g_tick  *  PI  /  128 )  +  ( 2  *  ( rgb_matrix_config . speed  = =  0  ?  1  :  rgb_matrix_config . speed ) )   *  ( 66  -  abs ( led . point . x  -  112.0 ) )  *  sin ( g_tick  *  PI  /  128 )  +  rgb_matrix_config . hue ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        rgb  =  hsv_to_rgb (  hsv  ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        rgb_matrix_set_color (  i ,  rgb . r ,  rgb . g ,  rgb . b  ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    } 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -458,7 +458,7 @@ void rgb_matrix_rainbow_moving_chevron(void) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        led  =  g_rgb_leds [ i ] ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // uint8_t r = g_tick;
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        uint8_t  r  =  32 ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        hsv . h  =  1.5  *  abs ( led . point . y  -  32.0 ) *  sin ( r  *  PI  /  128 )  +  1.5  *  ( led . point . x  -  ( g_tick  /  256.0  *  224 ) )  *  cos ( r  *  PI  /  128 )  +  rgb_matrix_config . hue ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        hsv . h  =  ( 1.5  *  ( rgb_matrix_config . speed  = =  0  ?  1  :  rgb_matrix_config . speed ) )   *  abs ( led . point . y  -  32.0 ) *  sin ( r  *  PI  /  128 )  +  ( 1.5  *  ( rgb_matrix_config . speed  = =  0  ?  1  :  rgb_matrix_config . speed ) )   *  ( led . point . x  -  ( g_tick  /  256.0  *  224 ) )  *  cos ( r  *  PI  /  128 )  +  rgb_matrix_config . hue ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        rgb  =  hsv_to_rgb (  hsv  ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        rgb_matrix_set_color (  i ,  rgb . r ,  rgb . g ,  rgb . b  ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    } 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -469,8 +469,8 @@ void rgb_matrix_jellybean_raindrops( bool initialize ) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    HSV  hsv ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    RGB  rgb ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Change one LED every tick 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    uint8_t  led_to_change  =  (  g_tick  &  0x000  )  = =  0  ?  rand ( )  %  DRIVER_LED_TOTAL   : 255 ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Change one LED every tick , make sure speed is not 0 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    uint8_t  led_to_change  =  (  g_tick  &  (  0x0A  /  ( rgb_matrix_config . speed  = =  0  ?  1  :  rgb_matrix_config . speed )  )  )  = =  0  ?  rand ( )  %  ( DRIVER_LED_TOTAL )   : 255 ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    for  (  int  i = 0 ;  i < DRIVER_LED_TOTAL ;  i + +  ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    { 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -577,8 +577,10 @@ void rgb_matrix_custom(void) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					} 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  rgb_matrix_task ( void )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    static  uint8_t  toggle_enable_last  =  255 ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( ! rgb_matrix_config . enable )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	rgb_matrix_all_off ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        toggle_enable_last  =  rgb_matrix_config . enable ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    	return ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    } 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // delay 1 second before driving LEDs or doing anything else
 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -618,8 +620,9 @@ void rgb_matrix_task(void) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // detect change in effect, so each effect can
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // have an optional initialization.
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    static  uint8_t  effect_last  =  255 ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  initialize  =  effect  ! =  effect_last ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool  initialize  =  ( effect  ! =  effect_last )  | |  ( rgb_matrix_config . enable  ! =  toggle_enable_last ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    effect_last  =  effect ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    toggle_enable_last  =  rgb_matrix_config . enable ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // this gets ticked at 20 Hz.
 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // each effect can opt to do calculations
 
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -628,9 +631,6 @@ void rgb_matrix_task(void) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        case  RGB_MATRIX_SOLID_COLOR : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            rgb_matrix_solid_color ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        case  RGB_MATRIX_SOLID_REACTIVE : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            rgb_matrix_solid_reactive ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        case  RGB_MATRIX_ALPHAS_MODS : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            rgb_matrix_alphas_mods ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            break ; 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -665,6 +665,9 @@ void rgb_matrix_task(void) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            rgb_matrix_jellybean_raindrops (  initialize  ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        # ifdef RGB_MATRIX_KEYPRESSES 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            case  RGB_MATRIX_SOLID_REACTIVE : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                rgb_matrix_solid_reactive ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                break ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            case  RGB_MATRIX_SPLASH : 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                rgb_matrix_splash ( ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                break ; 
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -830,8 +833,8 @@ void rgblight_step(void) {
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					void  rgblight_step_reverse ( void )  { 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    rgb_matrix_config . mode - - ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( rgb_matrix_config . mode  < =   1 ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        rgb_matrix_config . mode  =  ( RGB_MATRIX_EFFECT_MAX  -  1 ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( rgb_matrix_config . mode  <  1 ) 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        rgb_matrix_config . mode  =  RGB_MATRIX_EFFECT_MAX  -  1 ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    eeconfig_update_rgb_matrix ( rgb_matrix_config . raw ) ; 
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}