blob: 9f66428836dcfe812ac41fd18a1581e33313298f (
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
#pragma once
#ifdef RGBLIGHT_ENABLE
extern rgblight_config_t rgblight_config;
rgblight_config_t RGB_current_config;
#endif
#ifdef RGB_MATRIX_ENABLE
extern rgb_config_t rgb_matrix_config;
rgb_config_t RGB_current_config;
#endif
void save_rgb_config(void) {
#ifdef RGBLIGHT_ENABLE
RGB_current_config.enable = rgblight_config.enable;
RGB_current_config.mode = rgblight_get_mode();
RGB_current_config.speed = rgblight_get_speed();
RGB_current_config.hue = rgblight_get_hue();
RGB_current_config.sat = rgblight_get_sat();
RGB_current_config.val = rgblight_get_val();
#elif RGB_MATRIX_ENABLE
RGB_current_config.enable = rgb_matrix_config.enable;
RGB_current_config.mode = rgb_matrix_get_mode();
RGB_current_config.speed = rgb_matrix_config.speed;
RGB_current_config.hsv = rgb_matrix_config.hsv;
#endif
}
void restore_rgb_config(void) {
#ifdef RGBLIGHT_ENABLE
rgblight_set_speed_noeeprom(RGB_current_config.speed);
if (rgblight_config.mode != RGB_current_config.mode) {
rgblight_mode_noeeprom(RGB_current_config.mode);
}
if ((RGB_current_config.hue != rgblight_config.hue) || (RGB_current_config.sat != rgblight_config.sat) || (RGB_current_config.val != rgblight_config.val)) {
rgblight_sethsv_noeeprom(RGB_current_config.hue, RGB_current_config.sat, RGB_current_config.val);
}
if (rgblight_config.enable) {
rgblight_enable_noeeprom();
} else {
rgblight_disable_noeeprom();
}
#elif RGB_MATRIX_ENABLE
rgb_matrix_config.speed = RGB_current_config.speed;
if (rgb_matrix_config.mode != RGB_current_config.mode) {
rgb_matrix_mode_noeeprom(RGB_current_config.mode);
}
if ((RGB_current_config.hsv.h != rgb_matrix_config.hsv.h) || (RGB_current_config.hsv.s != rgb_matrix_config.hsv.s) || (RGB_current_config.hsv.v != rgb_matrix_config.hsv.v)) {
rgb_matrix_sethsv_noeeprom(RGB_current_config.hsv.h, RGB_current_config.hsv.s, RGB_current_config.hsv.v);
}
if (rgb_matrix_config.enable) {
rgb_matrix_enable_noeeprom();
} else {
rgb_matrix_disable_noeeprom();
}
#endif
}
void rgb_by_layer(int layer) {
#ifdef RGBLIGHT_ENABLE
rgblight_mode_noeeprom(RGBLIGHT_MODE_STATIC_LIGHT);
#elif RGB_MATRIX_ENABLE
rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
#endif
switch (layer) {
case _ADJUST:
rgblight_sethsv_noeeprom(9, 255, 255);
break;
case _RAISE:
rgblight_sethsv_noeeprom(HSV_CYAN);
break;
case _LOWER:
rgblight_sethsv_noeeprom(HSV_MAGENTA);
break;
default:
rgblight_sethsv_noeeprom(HSV_RED);
}
}
|