diff options
Diffstat (limited to 'quantum/rgb_matrix/rgb_matrix.c')
-rw-r--r-- | quantum/rgb_matrix/rgb_matrix.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/quantum/rgb_matrix/rgb_matrix.c b/quantum/rgb_matrix/rgb_matrix.c index 70175f9d50..47bba278e4 100644 --- a/quantum/rgb_matrix/rgb_matrix.c +++ b/quantum/rgb_matrix/rgb_matrix.c @@ -143,8 +143,17 @@ void rgb_matrix_update_pwm_buffers(void) { rgb_matrix_driver.flush(); } +__attribute__((weak)) int rgb_matrix_led_index(int index) { +#if defined(RGB_MATRIX_SPLIT) + if (!is_keyboard_left() && index >= k_rgb_matrix_split[0]) { + return index - k_rgb_matrix_split[0]; + } +#endif + return index; +} + void rgb_matrix_set_color(int index, uint8_t red, uint8_t green, uint8_t blue) { - rgb_matrix_driver.set_color(index, red, green, blue); + rgb_matrix_driver.set_color(rgb_matrix_led_index(index), red, green, blue); } void rgb_matrix_set_color_all(uint8_t red, uint8_t green, uint8_t blue) { @@ -404,7 +413,6 @@ struct rgb_matrix_limits_t rgb_matrix_get_limits(uint8_t iter) { limits.led_min_index = RGB_MATRIX_LED_PROCESS_LIMIT * (iter); limits.led_max_index = limits.led_min_index + RGB_MATRIX_LED_PROCESS_LIMIT; if (limits.led_max_index > RGB_MATRIX_LED_COUNT) limits.led_max_index = RGB_MATRIX_LED_COUNT; - uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT; if (is_keyboard_left() && (limits.led_max_index > k_rgb_matrix_split[0])) limits.led_max_index = k_rgb_matrix_split[0]; if (!(is_keyboard_left()) && (limits.led_min_index < k_rgb_matrix_split[0])) limits.led_min_index = k_rgb_matrix_split[0]; # else @@ -414,9 +422,8 @@ struct rgb_matrix_limits_t rgb_matrix_get_limits(uint8_t iter) { # endif #else # if defined(RGB_MATRIX_SPLIT) - limits.led_min_index = 0; - limits.led_max_index = RGB_MATRIX_LED_COUNT; - const uint8_t k_rgb_matrix_split[2] = RGB_MATRIX_SPLIT; + limits.led_min_index = 0; + limits.led_max_index = RGB_MATRIX_LED_COUNT; if (is_keyboard_left() && (limits.led_max_index > k_rgb_matrix_split[0])) limits.led_max_index = k_rgb_matrix_split[0]; if (!(is_keyboard_left()) && (limits.led_min_index < k_rgb_matrix_split[0])) limits.led_min_index = k_rgb_matrix_split[0]; # else |