---
-### WS2812 (AVR only)
+### WS2812
There is basic support for addressable RGB matrix lighting with a WS2811/WS2812{a,b,c} addressable LED strand. To enable it, add this to your `rules.mk`:
All RGB keycodes are currently shared with the RGBLIGHT system:
-* `RGB_TOG` - toggle
-* `RGB_MOD` - cycle through modes
-* `RGB_HUI` - increase hue
-* `RGB_HUD` - decrease hue
-* `RGB_SAI` - increase saturation
-* `RGB_SAD` - decrease saturation
-* `RGB_VAI` - increase value
-* `RGB_VAD` - decrease value
-* `RGB_SPI` - increase speed effect (no EEPROM support)
-* `RGB_SPD` - decrease speed effect (no EEPROM support)
+|Key |Aliases |Description |
+|-------------------|----------|--------------------------------------------------------------------------------------|
+|`RGB_TOG` | |Toggle RGB lighting on or off |
+|`RGB_MODE_FORWARD` |`RGB_MOD` |Cycle through modes, reverse direction when Shift is held |
+|`RGB_MODE_REVERSE` |`RGB_RMOD`|Cycle through modes in reverse, forward direction when Shift is held |
+|`RGB_HUI` | |Increase hue, decrease hue when Shift is held |
+|`RGB_HUD` | |Decrease hue, increase hue when Shift is held |
+|`RGB_SAI` | |Increase saturation, decrease saturation when Shift is held |
+|`RGB_SAD` | |Decrease saturation, increase saturation when Shift is held |
+|`RGB_VAI` | |Increase value (brightness), decrease value when Shift is held |
+|`RGB_VAD` | |Decrease value (brightness), increase value when Shift is held |
+|`RGB_SPI` | |Increase effect speed (does not support eeprom yet), decrease speed when Shift is held|
+|`RGB_SPD` | |Decrease effect speed (does not support eeprom yet), increase speed when Shift is held|
+
* `RGB_MODE_*` keycodes will generally work, but are not currently mapped to the correct effects for the RGB Matrix system
## RGB Matrix Effects
## Custom RGB Matrix Effects
-By setting `RGB_MATRIX_CUSTOM_USER` (and/or `RGB_MATRIX_CUSTOM_KB`) in `rule.mk`, new effects can be defined directly from userspace, without having to edit any QMK core files.
+By setting `RGB_MATRIX_CUSTOM_USER` (and/or `RGB_MATRIX_CUSTOM_KB`) in `rules.mk`, new effects can be defined directly from userspace, without having to edit any QMK core files.
To declare new effects, create a new `rgb_matrix_user/kb.inc` that looks something like this:
#define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
#define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 // limits maximum brightness of LEDs to 200 out of 255. If not defined maximum brightness is set to 255
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT // Sets the default mode, if none has been set
```
## EEPROM storage