diff options
author | Daniel Prilik <danielprilik@gmail.com> | 2019-04-29 17:48:41 -0400 |
---|---|---|
committer | Drashna Jaelre <drashna@live.com> | 2019-04-29 14:48:41 -0700 |
commit | 1d784f0f9575b70e35c9c8338b0ff80dc7316d7e (patch) | |
tree | f1617c0a36ccb3bf6c1b881b6f1b9caad2678e2e /quantum/rgb_matrix.c | |
parent | e337bb82a3b418dfd6c60b8c615322c854e5995d (diff) | |
download | qmk_firmware-1d784f0f9575b70e35c9c8338b0ff80dc7316d7e.tar.gz qmk_firmware-1d784f0f9575b70e35c9c8338b0ff80dc7316d7e.zip |
RGB Matrix: Custom effects on a kb/user level (#5338)
* Revamped custom effects approach
See docs for example usage
* push-up RGB Matrix default mode
Override default effect using RGB_MATRIX_STARTUP_MODE.
Useful on boards without EEPROM support
(*cough* Massdrop ALT/CTRL *cough*)
* update docs
Diffstat (limited to 'quantum/rgb_matrix.c')
-rw-r--r-- | quantum/rgb_matrix.c | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/quantum/rgb_matrix.c b/quantum/rgb_matrix.c index 41ed8983e..5ca9b87a6 100644 --- a/quantum/rgb_matrix.c +++ b/quantum/rgb_matrix.c | |||
@@ -48,6 +48,19 @@ | |||
48 | #include "rgb_matrix_animations/solid_splash_anim.h" | 48 | #include "rgb_matrix_animations/solid_splash_anim.h" |
49 | #include "rgb_matrix_animations/breathing_anim.h" | 49 | #include "rgb_matrix_animations/breathing_anim.h" |
50 | 50 | ||
51 | #if defined(RGB_MATRIX_CUSTOM_KB) || defined(RGB_MATRIX_CUSTOM_USER) | ||
52 | #define RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||
53 | #define RGB_MATRIX_EFFECT(name, ...) | ||
54 | #ifdef RGB_MATRIX_CUSTOM_KB | ||
55 | #include "rgb_matrix_kb.inc" | ||
56 | #endif | ||
57 | #ifdef RGB_MATRIX_CUSTOM_USER | ||
58 | #include "rgb_matrix_user.inc" | ||
59 | #endif | ||
60 | #undef RGB_MATRIX_EFFECT | ||
61 | #undef RGB_MATRIX_CUSTOM_EFFECT_IMPLS | ||
62 | #endif | ||
63 | |||
51 | #ifndef RGB_DISABLE_AFTER_TIMEOUT | 64 | #ifndef RGB_DISABLE_AFTER_TIMEOUT |
52 | #define RGB_DISABLE_AFTER_TIMEOUT 0 | 65 | #define RGB_DISABLE_AFTER_TIMEOUT 0 |
53 | #endif | 66 | #endif |
@@ -81,6 +94,15 @@ | |||
81 | #define RGB_MATRIX_SPD_STEP 16 | 94 | #define RGB_MATRIX_SPD_STEP 16 |
82 | #endif | 95 | #endif |
83 | 96 | ||
97 | #if !defined(RGB_MATRIX_STARTUP_MODE) | ||
98 | #ifndef DISABLE_RGB_MATRIX_CYCLE_ALL | ||
99 | #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT | ||
100 | #else | ||
101 | // fallback to solid colors if RGB_MATRIX_CYCLE_LEFT_RIGHT is disabled in userspace | ||
102 | #define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR | ||
103 | #endif | ||
104 | #endif | ||
105 | |||
84 | bool g_suspend_state = false; | 106 | bool g_suspend_state = false; |
85 | 107 | ||
86 | rgb_config_t rgb_matrix_config; | 108 | rgb_config_t rgb_matrix_config; |
@@ -104,12 +126,7 @@ void eeconfig_update_rgb_matrix(uint32_t val) { | |||
104 | void eeconfig_update_rgb_matrix_default(void) { | 126 | void eeconfig_update_rgb_matrix_default(void) { |
105 | dprintf("eeconfig_update_rgb_matrix_default\n"); | 127 | dprintf("eeconfig_update_rgb_matrix_default\n"); |
106 | rgb_matrix_config.enable = 1; | 128 | rgb_matrix_config.enable = 1; |
107 | #ifndef DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT | 129 | rgb_matrix_config.mode = RGB_MATRIX_STARTUP_MODE; |
108 | rgb_matrix_config.mode = RGB_MATRIX_CYCLE_LEFT_RIGHT; | ||
109 | #else | ||
110 | // fallback to solid colors if RGB_MATRIX_CYCLE_LEFT_RIGHT is disabled in userspace | ||
111 | rgb_matrix_config.mode = RGB_MATRIX_SOLID_COLOR; | ||
112 | #endif | ||
113 | rgb_matrix_config.hue = 0; | 130 | rgb_matrix_config.hue = 0; |
114 | rgb_matrix_config.sat = UINT8_MAX; | 131 | rgb_matrix_config.sat = UINT8_MAX; |
115 | rgb_matrix_config.val = RGB_MATRIX_MAXIMUM_BRIGHTNESS; | 132 | rgb_matrix_config.val = RGB_MATRIX_MAXIMUM_BRIGHTNESS; |
@@ -435,6 +452,20 @@ static void rgb_task_render(uint8_t effect) { | |||
435 | #endif // DISABLE_RGB_MATRIX_SOLID_MULTISPLASH | 452 | #endif // DISABLE_RGB_MATRIX_SOLID_MULTISPLASH |
436 | #endif // RGB_MATRIX_KEYREACTIVE_ENABLED | 453 | #endif // RGB_MATRIX_KEYREACTIVE_ENABLED |
437 | 454 | ||
455 | #if defined(RGB_MATRIX_CUSTOM_KB) || defined(RGB_MATRIX_CUSTOM_USER) | ||
456 | #define RGB_MATRIX_EFFECT(name, ...) \ | ||
457 | case RGB_MATRIX_CUSTOM_##name: \ | ||
458 | rendering = name(&rgb_effect_params); \ | ||
459 | break; | ||
460 | #ifdef RGB_MATRIX_CUSTOM_KB | ||
461 | #include "rgb_matrix_kb.inc" | ||
462 | #endif | ||
463 | #ifdef RGB_MATRIX_CUSTOM_USER | ||
464 | #include "rgb_matrix_user.inc" | ||
465 | #endif | ||
466 | #undef RGB_MATRIX_EFFECT | ||
467 | #endif | ||
468 | |||
438 | // Factory default magic value | 469 | // Factory default magic value |
439 | case UINT8_MAX: { | 470 | case UINT8_MAX: { |
440 | rgb_matrix_test(); | 471 | rgb_matrix_test(); |