diff options
Diffstat (limited to 'users/drashna/rgb_matrix_stuff.c')
| -rw-r--r-- | users/drashna/rgb_matrix_stuff.c | 34 |
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 | ||
| 29 | void 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) { | 29 | void 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 | ||
| 57 | void matrix_scan_rgb_matrix(void) { | 63 | void 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 | ||
| 64 | void keyboard_post_init_rgb_matrix(void) { | 72 | void 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 | ||
| 70 | bool process_record_user_rgb_matrix(uint16_t keycode, keyrecord_t *record) { | 80 | bool 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; |
