aboutsummaryrefslogtreecommitdiff
path: root/users/drashna/rgb_matrix_stuff.c
diff options
context:
space:
mode:
Diffstat (limited to 'users/drashna/rgb_matrix_stuff.c')
-rw-r--r--users/drashna/rgb_matrix_stuff.c54
1 files changed, 20 insertions, 34 deletions
diff --git a/users/drashna/rgb_matrix_stuff.c b/users/drashna/rgb_matrix_stuff.c
index 9e9e1e427..9fbe6214b 100644
--- a/users/drashna/rgb_matrix_stuff.c
+++ b/users/drashna/rgb_matrix_stuff.c
@@ -28,33 +28,27 @@ static uint32_t hypno_timer;
28 28
29void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type, uint8_t led_min, uint8_t led_max) { 29void rgb_matrix_layer_helper(uint8_t hue, uint8_t sat, uint8_t val, uint8_t mode, uint8_t speed, uint8_t led_type, uint8_t led_min, uint8_t led_max) {
30 HSV hsv = {hue, sat, val}; 30 HSV hsv = {hue, sat, val};
31 if (hsv.v > rgb_matrix_get_val()) { 31 if (hsv.v > rgb_matrix_get_val()) { hsv.v = rgb_matrix_get_val(); }
32 hsv.v = rgb_matrix_get_val();
33 }
34 32
35 switch (mode) { 33 switch (mode) {
36 case 1: // breathing 34 case 1: // breathing
37 { 35 {
38 uint16_t time = scale16by8(g_rgb_timer, speed / 8); 36 uint16_t time = scale16by8(g_rgb_timer, speed / 8);
39 hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v); 37 hsv.v = scale8(abs8(sin8(time) - 128) * 2, hsv.v);
40 RGB rgb = hsv_to_rgb(hsv); 38 RGB rgb = hsv_to_rgb(hsv);
41 for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) { 39 for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
42 if (HAS_FLAGS(g_led_config.flags[i], led_type)) { 40 if (HAS_FLAGS(g_led_config.flags[i], led_type)) { RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b); }
43 RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b);
44 } 41 }
42 break;
45 } 43 }
46 break; 44 default: // Solid Color
47 } 45 {
48 default: // Solid Color 46 RGB rgb = hsv_to_rgb(hsv);
49 { 47 for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
50 RGB rgb = hsv_to_rgb(hsv); 48 if (HAS_FLAGS(g_led_config.flags[i], led_type)) { RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b); }
51 for (uint8_t i = 0; i < DRIVER_LED_TOTAL; i++) {
52 if (HAS_FLAGS(g_led_config.flags[i], led_type)) {
53 RGB_MATRIX_INDICATOR_SET_COLOR(i, rgb.r, rgb.g, rgb.b);
54 } 49 }
50 break;
55 } 51 }
56 break;
57 }
58 } 52 }
59} 53}
60 54
@@ -62,38 +56,30 @@ __attribute__((weak)) void rgb_matrix_indicator_keymap(void) {}
62 56
63void matrix_scan_rgb_matrix(void) { 57void matrix_scan_rgb_matrix(void) {
64#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) 58#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
65 if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && sync_timer_elapsed32(hypno_timer) > 15000) { 59 if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_TYPING_HEATMAP && sync_timer_elapsed32(hypno_timer) > 15000) { rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE); }
66 rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
67 }
68#endif 60#endif
69 rgb_matrix_indicator_keymap(); 61 rgb_matrix_indicator_keymap();
70} 62}
71 63
72void keyboard_post_init_rgb_matrix(void) { 64void keyboard_post_init_rgb_matrix(void) {
73#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) 65#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
74 if (userspace_config.rgb_matrix_idle_anim) { 66 if (userspace_config.rgb_matrix_idle_anim) { rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE); }
75 rgb_matrix_mode_noeeprom(RGB_MATRIX_REST_MODE);
76 }
77#endif 67#endif
78} 68}
79 69
80bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) { 70bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) {
81#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) 71#if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
82 hypno_timer = sync_timer_read32(); 72 hypno_timer = sync_timer_read32();
83 if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) { 73 if (userspace_config.rgb_matrix_idle_anim && rgb_matrix_get_mode() == RGB_MATRIX_REST_MODE) { rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); }
84 rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
85 }
86#endif 74#endif
87 switch (keycode) { 75 switch (keycode) {
88 case RGB_IDL: // This allows me to use underglow as layer indication, or as normal 76 case RGB_IDL: // This allows me to use underglow as layer indication, or as normal
89#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) 77#if defined(RGB_MATRIX_ENABLE) && defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
90 if (record->event.pressed) { 78 if (record->event.pressed) {
91 userspace_config.rgb_matrix_idle_anim ^= 1; 79 userspace_config.rgb_matrix_idle_anim ^= 1;
92 dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim); 80 dprintf("RGB Matrix Idle Animation [EEPROM]: %u\n", userspace_config.rgb_matrix_idle_anim);
93 eeconfig_update_user(userspace_config.raw); 81 eeconfig_update_user(userspace_config.raw);
94 if (userspace_config.rgb_matrix_idle_anim) { 82 if (userspace_config.rgb_matrix_idle_anim) { rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP); }
95 rgb_matrix_mode_noeeprom(RGB_MATRIX_TYPING_HEATMAP);
96 }
97 } 83 }
98#endif 84#endif
99 break; 85 break;