forked from forks/qmk_firmware
62 lines
1.6 KiB
C
62 lines
1.6 KiB
C
|
#include "rgb.h"
|
||
|
|
||
|
// TODO gate this debugging header
|
||
|
#include <print.h>
|
||
|
|
||
|
// Wired up in layer_state_set_user in keymap.c
|
||
|
layer_state_t layer_state_set_rgb(layer_state_t state) {
|
||
|
switch (get_highest_layer(state)) {
|
||
|
case _QWERTY:
|
||
|
rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
|
||
|
rgblight_sethsv_noeeprom(RGB_CLEAR);
|
||
|
break;
|
||
|
case _SYMB:
|
||
|
rgblight_sethsv_noeeprom_red();
|
||
|
break;
|
||
|
case _NUMP:
|
||
|
rgblight_sethsv_noeeprom_green();
|
||
|
break;
|
||
|
case _OVERWATCH:
|
||
|
rgblight_sethsv_noeeprom_blue();
|
||
|
// TODO set up animated rainbow swirl with overwatch colors.
|
||
|
// rgblight_mode_noeeprom(RGBLIGHT_MODE_RAINBOW_SWIRL);
|
||
|
// rgblight_effect_breathing(&animation_status);
|
||
|
// rgblight_mode_noeeprom(RGBLIGHT_MODE_BREATHING + 3);
|
||
|
break;
|
||
|
case _NAVI:
|
||
|
rgblight_sethsv_noeeprom(HSV_AZURE);
|
||
|
break;
|
||
|
default: // for any other layers, or the default layer
|
||
|
break;
|
||
|
}
|
||
|
return state;
|
||
|
}
|
||
|
|
||
|
|
||
|
void keyboard_post_init_rgb(void) {
|
||
|
rgblight_enable();
|
||
|
rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
|
||
|
rgblight_setrgb(RGB_CLEAR);
|
||
|
uprintf("Reset RGB colors");
|
||
|
}
|
||
|
|
||
|
void matrix_scan_rgb(void) {
|
||
|
set_rgb_indicators(get_mods(), get_oneshot_mods());
|
||
|
}
|
||
|
|
||
|
void set_rgb_indicators(uint8_t this_mod, uint8_t this_osm) {
|
||
|
if (biton32(layer_state) == _QWERTY) {
|
||
|
if ((this_mod | this_osm) & MOD_MASK_SHIFT) {
|
||
|
rgblight_setrgb_gold_at(SHFT_LED1);
|
||
|
} else {
|
||
|
rgblight_setrgb_at(RGB_CLEAR, SHFT_LED1);
|
||
|
}
|
||
|
|
||
|
if ((this_mod | this_osm) & MOD_MASK_GUI) {
|
||
|
rgblight_setrgb_purple_at(GUI_LED1);
|
||
|
} else {
|
||
|
rgblight_setrgb_at(RGB_CLEAR, GUI_LED1);
|
||
|
}
|
||
|
}
|
||
|
}
|