diff --git a/quantum/momentum.c b/quantum/momentum.c index e0fadc991c..8b2d8dc06d 100644 --- a/quantum/momentum.c +++ b/quantum/momentum.c @@ -1,4 +1,5 @@ #include "momentum.h" +#include "timer.h" #ifndef MIN #define MIN(a,b) (((a)<(b))?(a):(b)) @@ -10,6 +11,10 @@ #define TYPING_SPEED_MAX_VALUE 200 uint8_t typing_speed = 0; +bool momentum_enabled() { + return true; +} + void momentum_accelerate() { if (typing_speed < TYPING_SPEED_MAX_VALUE) typing_speed += (TYPING_SPEED_MAX_VALUE / 100); } diff --git a/quantum/momentum.h b/quantum/momentum.h index 7acf139255..d72c043d15 100644 --- a/quantum/momentum.h +++ b/quantum/momentum.h @@ -2,8 +2,9 @@ #define MOMENTUM_H #include -#include "timer.h" +#include +bool momentum_enabled(void); void momentum_accelerate(void); void momentum_decay_task(void); uint8_t match_momentum(uint8_t minValue, uint8_t maxValue); diff --git a/quantum/quantum.c b/quantum/quantum.c index ea2300ebd0..ae308fad2d 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c @@ -194,7 +194,7 @@ bool process_record_quantum(keyrecord_t *record) { uint16_t keycode; #ifdef RGBLIGHT_ENABLE - momentum_accelerate(); + if (momentum_enabled()) momentum_accelerate(); #endif #if !defined(NO_ACTION_LAYER) && defined(PREVENT_STUCK_MODIFIERS) diff --git a/quantum/rgblight.c b/quantum/rgblight.c index 022fe21f16..2c26c807a3 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -571,7 +571,7 @@ void rgblight_task(void) { if (rgblight_timer_enabled) { - momentum_decay_task(); + if (momentum_enabled()) momentum_decay_task(); // mode = 1, static light, do nothing here if (rgblight_config.mode >= 2 && rgblight_config.mode <= 5) { @@ -605,7 +605,11 @@ void rgblight_effect_breathing(uint8_t interval) { static uint16_t last_timer = 0; float val; - if (timer_elapsed(last_timer) < match_momentum(1, 100)) { + uint8_t interval_time = momentum_enabled() + ? match_momentum(1, 100) + : pgm_read_byte(&RGBLED_RAINBOW_SWIRL_INTERVALS[interval / 2]); + + if (timer_elapsed(last_timer) < interval_time) { return; } last_timer = timer_read(); @@ -620,7 +624,11 @@ void rgblight_effect_rainbow_mood(uint8_t interval) { static uint16_t current_hue = 0; static uint16_t last_timer = 0; - if (timer_elapsed(last_timer) < match_momentum(5, 100)) { + uint8_t interval_time = momentum_enabled() + ? match_momentum(5, 100) + : pgm_read_byte(&RGBLED_RAINBOW_MOOD_INTERVALS[interval]); + + if (timer_elapsed(last_timer) < interval_time) { return; } last_timer = timer_read(); @@ -633,7 +641,11 @@ void rgblight_effect_rainbow_swirl(uint8_t interval) { uint16_t hue; uint8_t i; - if (timer_elapsed(last_timer) < match_momentum(1, 100)) { + uint8_t interval_time = momentum_enabled() + ? match_momentum(1, 100) + : pgm_read_byte(&RGBLED_RAINBOW_SWIRL_INTERVALS[interval / 2]); + + if (timer_elapsed(last_timer) < interval_time) { return; } last_timer = timer_read(); @@ -662,7 +674,12 @@ void rgblight_effect_snake(uint8_t interval) { if (interval % 2) { increment = -1; } - if (timer_elapsed(last_timer) < match_momentum(1, 200)) { + + uint8_t interval_time = momentum_enabled() + ? match_momentum(1, 200) + : pgm_read_byte(&RGBLED_SNAKE_INTERVALS[interval / 2]); + + if (timer_elapsed(last_timer) < interval_time) { return; } last_timer = timer_read(); @@ -693,7 +710,12 @@ void rgblight_effect_snake(uint8_t interval) { } void rgblight_effect_knight(uint8_t interval) { static uint16_t last_timer = 0; - if (timer_elapsed(last_timer) < match_momentum(5, 100)) { + + uint8_t interval_time = momentum_enabled() + ? match_momentum(5, 100) + : pgm_read_byte(&RGBLED_KNIGHT_INTERVALS[interval]); + + if (timer_elapsed(last_timer) < interval_time) { return; } last_timer = timer_read();