From 4887f03dbd0b5aa3f804309a7293d2c7e632c1a7 Mon Sep 17 00:00:00 2001 From: Jasmin <98263758+chloe-the-catgirl@users.noreply.github.com> Date: Sun, 30 Apr 2023 03:57:30 +0200 Subject: [PATCH] typing_heatmap: Add macro to configure increase steps (#20300) Co-authored-by: Joel Challis --- docs/feature_rgb_matrix.md | 8 ++++++++ quantum/rgb_matrix/animations/typing_heatmap_anim.h | 7 +++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/feature_rgb_matrix.md b/docs/feature_rgb_matrix.md index 96c1928abd..11e34209bf 100644 --- a/docs/feature_rgb_matrix.md +++ b/docs/feature_rgb_matrix.md @@ -690,6 +690,14 @@ Remove the spread effect entirely. #define RGB_MATRIX_TYPING_HEATMAP_SLIM ``` +It's also possible to adjust the tempo of *heating up*. It's defined as the number of shades that are +increased on the [HSV scale](https://en.wikipedia.org/wiki/HSL_and_HSV). Decreasing this value increases +the number of keystrokes needed to fully heat up the key. + +```c +#define RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP 32 +``` + ### RGB Matrix Effect Solid Reactive :id=rgb-matrix-effect-solid-reactive Solid reactive effects will pulse RGB light on key presses with user configurable hues. To enable gradient mode that will automatically change reactive color, add the following define: diff --git a/quantum/rgb_matrix/animations/typing_heatmap_anim.h b/quantum/rgb_matrix/animations/typing_heatmap_anim.h index 00d137f1a6..d09bdc4631 100644 --- a/quantum/rgb_matrix/animations/typing_heatmap_anim.h +++ b/quantum/rgb_matrix/animations/typing_heatmap_anim.h @@ -1,6 +1,9 @@ #if defined(RGB_MATRIX_FRAMEBUFFER_EFFECTS) && defined(ENABLE_RGB_MATRIX_TYPING_HEATMAP) RGB_MATRIX_EFFECT(TYPING_HEATMAP) # ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS +# ifndef RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP +# define RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP 32 +# endif # ifndef RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS # define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 25 @@ -16,7 +19,7 @@ RGB_MATRIX_EFFECT(TYPING_HEATMAP) void process_rgb_matrix_typing_heatmap(uint8_t row, uint8_t col) { # ifdef RGB_MATRIX_TYPING_HEATMAP_SLIM // Limit effect to pressed keys - g_rgb_frame_buffer[row][col] = qadd8(g_rgb_frame_buffer[row][col], 32); + g_rgb_frame_buffer[row][col] = qadd8(g_rgb_frame_buffer[row][col], RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP); # else if (g_led_config.matrix_co[row][col] == NO_LED) { // skip as pressed key doesn't have an led position return; @@ -27,7 +30,7 @@ void process_rgb_matrix_typing_heatmap(uint8_t row, uint8_t col) { continue; } if (i_row == row && i_col == col) { - g_rgb_frame_buffer[row][col] = qadd8(g_rgb_frame_buffer[row][col], 32); + g_rgb_frame_buffer[row][col] = qadd8(g_rgb_frame_buffer[row][col], RGB_MATRIX_TYPING_HEATMAP_INCREASE_STEP); } else { # define LED_DISTANCE(led_a, led_b) sqrt16(((int16_t)(led_a.x - led_b.x) * (int16_t)(led_a.x - led_b.x)) + ((int16_t)(led_a.y - led_b.y) * (int16_t)(led_a.y - led_b.y))) uint8_t distance = LED_DISTANCE(g_led_config.point[g_led_config.matrix_co[row][col]], g_led_config.point[g_led_config.matrix_co[i_row][i_col]]);