@ -147,6 +147,7 @@ bool rgblight_twinkle_is_led_used(uint8_t index) {
/* Handler for fading/twinkling effect */
void scan_rgblight_fadeout ( void ) { // Don't effing change this function .... rgblight_sethsv is supppppper intensive
bool litup = false ;
for ( uint8_t light_index = 0 ; light_index < RGBLED_NUM ; + + light_index ) {
if ( lights [ light_index ] . enabled & & timer_elapsed ( lights [ light_index ] . timer ) > 10 ) {
rgblight_fadeout * light = & lights [ light_index ] ;
@ -179,6 +180,7 @@ void start_rgb_light(void) {
uint8_t indices_count = 0 ;
uint8_t min_life = 0xFF ;
uint8_t min_life_index = - 1 ;
for ( uint8_t index = 0 ; index < RGBLED_NUM ; + + index ) {
if ( rgblight_twinkle_is_led_used ( index ) ) {
continue ;
@ -248,7 +250,14 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
dprintf ( " rgblight layer change [EEPROM]: %u \n " , userspace_config . rgb_layer_change ) ;
eeconfig_update_user ( userspace_config . raw ) ;
if ( userspace_config . rgb_layer_change ) {
# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
rgblight_enable_noeeprom ( ) ;
# endif
layer_state_set ( layer_state ) ; // This is needed to immediately set the layer color (looks better)
# if defined(RGBLIGHT_ENABLE) && defined(RGB_MATRIX_ENABLE)
} else {
rgblight_disable_noeeprom ( ) ;
# endif
}
}
# endif // RGBLIGHT_ENABLE
@ -265,28 +274,182 @@ bool process_record_user_rgb(uint16_t keycode, keyrecord_t *record) {
}
# endif
break ;
# if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
case RGB_TOG :
// Split keyboards need to trigger on key-up for edge-case issue
# ifndef SPLIT_KEYBOARD
if ( record - > event . pressed ) {
# else
if ( ! record - > event . pressed ) {
# endif
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_toggle ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_toggle ( ) ;
# endif
}
return false ;
break ;
case RGB_MODE_FORWARD . . . RGB_MODE_GRADIENT : // quantum_keycodes.h L400 for definitions
if ( record - > event . pressed ) {
bool is_eeprom_updated = false ;
# ifdef RGBLIGHT_ENABLE
bool is_eeprom_updated ;
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
// This disables layer indication, as it's assumed that if you're changing this ... you want that disabled
if ( userspace_config . rgb_layer_change ) {
userspace_config . rgb_layer_change = false ;
dprintf ( " rgblight layer change [EEPROM]: %u \n " , userspace_config . rgb_layer_change ) ;
is_eeprom_updated = true ;
}
# endif
# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
# endif
# if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
if ( userspace_config . rgb_matrix_idle_anim ) {
userspace_config . rgb_matrix_idle_anim = false ;
dprintf ( " RGB Matrix Idle Animation [EEPROM]: %u \n " , userspace_config . rgb_matrix_idle_anim ) ;
is_eeprom_updated = true ;
}
# endif
# endif
if ( is_eeprom_updated ) {
eeconfig_update_user ( userspace_config . raw ) ;
}
}
# if defined(RGBLIGHT_DISABLE_KEYCODES) || defined(RGB_MATRIX_DISABLE_KEYCODES)
if ( keycode = = RGB_MODE_FORWARD & & record - > event . pressed ) {
uint8_t shifted = get_mods ( ) & ( MOD_MASK_SHIFT ) ;
if ( shifted ) {
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_step_reverse ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_step_reverse ( ) ;
# endif
} else {
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_step ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_step ( ) ;
# endif
}
} else if ( keycode = = RGB_MODE_REVERSE & & record - > event . pressed ) {
uint8_t shifted = get_mods ( ) & ( MOD_MASK_SHIFT ) ;
if ( shifted ) {
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_step ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_step ( ) ;
# endif
} else {
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_step_reverse ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_step_reverse ( ) ;
# endif
}
} else if ( keycode = = RGB_HUI ) {
# ifndef SPLIT_KEYBOARD
if ( record - > event . pressed ) {
# else
if ( ! record - > event . pressed ) {
# endif
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_increase_hue ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_increase_hue ( ) ;
# endif
}
} else if ( keycode = = RGB_HUD ) {
# ifndef SPLIT_KEYBOARD
if ( record - > event . pressed ) {
# else
if ( ! record - > event . pressed ) {
# endif
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_decrease_hue ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_decrease_hue ( ) ;
# endif
}
} else if ( keycode = = RGB_SAI ) {
# ifndef SPLIT_KEYBOARD
if ( record - > event . pressed ) {
# else
if ( ! record - > event . pressed ) {
# endif
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_increase_sat ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_increase_sat ( ) ;
# endif
}
} else if ( keycode = = RGB_SAD ) {
# ifndef SPLIT_KEYBOARD
if ( record - > event . pressed ) {
# else
if ( ! record - > event . pressed ) {
# endif
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_decrease_sat ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_decrease_sat ( ) ;
# endif
}
} else if ( keycode = = RGB_VAI ) {
# ifndef SPLIT_KEYBOARD
if ( record - > event . pressed ) {
# else
if ( ! record - > event . pressed ) {
# endif
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_increase_val ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_increase_val ( ) ;
# endif
}
} else if ( keycode = = RGB_VAD ) {
# ifndef SPLIT_KEYBOARD
if ( record - > event . pressed ) {
# else
if ( ! record - > event . pressed ) {
# endif
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_decrease_val ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_decrease_val ( ) ;
# endif
}
} else if ( keycode = = RGB_SPI ) {
if ( record - > event . pressed ) {
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_increase_speed ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_increase_speed ( ) ;
# endif
}
} else if ( keycode = = RGB_SPD ) {
if ( record - > event . pressed ) {
# if defined(RGBLIGHT_ENABLE) && !defined(RGBLIGHT_DISABLE_KEYCODES)
rgblight_decrease_speed ( ) ;
# endif
# if defined(RGB_MATRIX_ENABLE) && !defined(RGB_MATRIX_DISABLE_KEYCODES)
rgb_matrix_decrease_speed ( ) ;
# endif
}
}
return false ;
# endif
# endif
break ;
}
return true ;