diff --git a/quantum/rgblight.c b/quantum/rgblight.c index 52e0be8ba01..66de5381560 100644 --- a/quantum/rgblight.c +++ b/quantum/rgblight.c @@ -51,6 +51,10 @@ static inline int is_static_effect(uint8_t mode) { #define MIN(a,b) (((a)<(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b)) +#ifdef RGBLIGHT_LED_MAP +uint8_t led_map[] = RGBLIGHT_LED_MAP; +#endif + #ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT __attribute__ ((weak)) const uint16_t RGBLED_GRADIENT_RANGES[] PROGMEM = {360, 240, 180, 120, 90}; @@ -662,10 +666,20 @@ void rgblight_sethsv_slave(uint16_t hue, uint8_t sat, uint8_t val) { #ifndef RGBLIGHT_CUSTOM_DRIVER void rgblight_set(void) { if (rgblight_config.enable) { - #ifdef RGBW - ws2812_setleds_rgbw(led, RGBLED_NUM); + LED_TYPE *ledp; + #ifdef RGBLIGHT_LED_MAP + LED_TYPE led0[RGBLED_NUM]; + for(uint8_t i = 0; i < RGBLED_NUM; i++) { + led0[i] = led[led_map[i]]; + } + ledp = led0; #else - ws2812_setleds(led, RGBLED_NUM); + ledp = led; + #endif + #ifdef RGBW + ws2812_setleds_rgbw(ledp, RGBLED_NUM); + #else + ws2812_setleds(ledp, RGBLED_NUM); #endif } else { for (uint8_t i = 0; i < RGBLED_NUM; i++) {