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 | |
| 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')
| -rw-r--r-- | quantum/rgb_matrix.c | 43 | ||||
| -rw-r--r-- | quantum/rgb_matrix.h | 12 |
2 files changed, 49 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(); |
diff --git a/quantum/rgb_matrix.h b/quantum/rgb_matrix.h index 5fdc854f0..775cbeac0 100644 --- a/quantum/rgb_matrix.h +++ b/quantum/rgb_matrix.h | |||
| @@ -142,6 +142,18 @@ enum rgb_matrix_effects { | |||
| 142 | RGB_MATRIX_SOLID_MULTISPLASH, | 142 | RGB_MATRIX_SOLID_MULTISPLASH, |
| 143 | #endif // DISABLE_RGB_MATRIX_SOLID_MULTISPLASH | 143 | #endif // DISABLE_RGB_MATRIX_SOLID_MULTISPLASH |
| 144 | #endif // RGB_MATRIX_KEYREACTIVE_ENABLED | 144 | #endif // RGB_MATRIX_KEYREACTIVE_ENABLED |
| 145 | |||
| 146 | #if defined(RGB_MATRIX_CUSTOM_KB) || defined(RGB_MATRIX_CUSTOM_USER) | ||
| 147 | #define RGB_MATRIX_EFFECT(name, ...) RGB_MATRIX_CUSTOM_##name, | ||
| 148 | #ifdef RGB_MATRIX_CUSTOM_KB | ||
| 149 | #include "rgb_matrix_kb.inc" | ||
| 150 | #endif | ||
| 151 | #ifdef RGB_MATRIX_CUSTOM_USER | ||
| 152 | #include "rgb_matrix_user.inc" | ||
| 153 | #endif | ||
| 154 | #undef RGB_MATRIX_EFFECT | ||
| 155 | #endif | ||
| 156 | |||
| 145 | RGB_MATRIX_EFFECT_MAX | 157 | RGB_MATRIX_EFFECT_MAX |
| 146 | }; | 158 | }; |
| 147 | 159 | ||
