blob: 0b123bb8d20d03d8449d41b8cd2737812c136f46 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#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(HSV_RED);
break;
case _NUMP:
rgblight_sethsv_noeeprom(HSV_GREEN);
break;
case _OVERWATCH:
rgblight_sethsv_noeeprom(HSV_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 (get_highest_layer(layer_state) == _QWERTY) {
if ((this_mod | this_osm) & MOD_MASK_SHIFT) {
rgblight_setrgb_at(RGB_GOLD, 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);
}
}
}
|