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