@ -14,8 +14,23 @@ void eeconfig_init_keymap(void) {
rgblight_mode ( RGBLIGHT_MODE_RAINBOW_SWIRL ) ;
rgblight_mode ( RGBLIGHT_MODE_RAINBOW_SWIRL ) ;
}
}
bool indicator_light = false ;
bool process_record_keymap ( uint16_t keycode , keyrecord_t * record ) {
bool process_record_keymap ( uint16_t keycode , keyrecord_t * record ) {
switch ( keycode ) {
switch ( keycode ) {
case RGB_TOG . . . RGB_SPD :
// Disable RGB controls when Fn/Caps indicator lights are on
if ( indicator_light ) {
return false ;
}
// Shift+Toggle = reset RGB
if ( record - > event . pressed & & keycode = = RGB_TOG & & get_mods ( ) & MOD_MASK_SHIFT ) {
eeconfig_init_keymap ( ) ;
return false ;
}
break ;
// Combined RCtrl and layer
case RCTRL :
case RCTRL :
if ( record - > event . pressed ) {
if ( record - > event . pressed ) {
register_code ( KC_RCTRL ) ;
register_code ( KC_RCTRL ) ;
@ -33,17 +48,20 @@ bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
static inline void fn_light ( void ) {
static inline void fn_light ( void ) {
rgblight_mode_noeeprom ( RGBLIGHT_MODE_STATIC_LIGHT ) ;
rgblight_mode_noeeprom ( RGBLIGHT_MODE_STATIC_LIGHT ) ;
rgblight_sethsv_noeeprom ( modern_dolch_red . h , modern_dolch_red . s , rgblight_get_val ( ) ) ;
rgblight_sethsv_noeeprom ( modern_dolch_red . h , modern_dolch_red . s , rgblight_get_val ( ) ) ;
indicator_light = true ;
}
}
static inline void caps_light ( void ) {
static inline void caps_light ( void ) {
rgblight_mode_noeeprom ( RGBLIGHT_MODE_STATIC_LIGHT ) ;
rgblight_mode_noeeprom ( RGBLIGHT_MODE_STATIC_LIGHT ) ;
rgblight_sethsv_noeeprom ( modern_dolch_cyan . h , modern_dolch_cyan . s , rgblight_get_val ( ) ) ;
rgblight_sethsv_noeeprom ( modern_dolch_cyan . h , modern_dolch_cyan . s , rgblight_get_val ( ) ) ;
indicator_light = true ;
}
}
static inline void restore_light ( void ) {
static inline void restore_light ( void ) {
rgblight_config_t saved = { . raw = eeconfig_read_rgblight ( ) } ;
rgblight_config_t saved = { . raw = eeconfig_read_rgblight ( ) } ;
rgblight_sethsv_noeeprom ( saved . hue , saved . sat , saved . val ) ;
rgblight_sethsv_noeeprom ( saved . hue , saved . sat , saved . val ) ;
rgblight_mode_noeeprom ( saved . mode ) ;
rgblight_mode_noeeprom ( saved . mode ) ;
indicator_light = false ;
}
}
static void check_light_layer ( uint32_t state ) {
static void check_light_layer ( uint32_t state ) {