aboutsummaryrefslogtreecommitdiff
path: root/docs/feature_rgblight.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/feature_rgblight.md')
-rw-r--r--docs/feature_rgblight.md43
1 files changed, 41 insertions, 2 deletions
diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md
index 219cd8317..de19b7419 100644
--- a/docs/feature_rgblight.md
+++ b/docs/feature_rgblight.md
@@ -177,6 +177,8 @@ const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};
177By including `#define RGBLIGHT_LAYERS` in your `config.h` file you can enable lighting layers. These make 177By including `#define RGBLIGHT_LAYERS` in your `config.h` file you can enable lighting layers. These make
178it easy to use your underglow LEDs as status indicators to show which keyboard layer is currently active, or the state of caps lock, all without disrupting any animations. [Here's a video](https://youtu.be/uLGE1epbmdY) showing an example of what you can do. 178it easy to use your underglow LEDs as status indicators to show which keyboard layer is currently active, or the state of caps lock, all without disrupting any animations. [Here's a video](https://youtu.be/uLGE1epbmdY) showing an example of what you can do.
179 179
180### Defining Lighting Layers :id=defining-lighting-layers
181
180To define a layer, we modify `keymap.c` to list out LED ranges and the colors we want to overlay on them using an array of `rgblight_segment_t` using the `RGBLIGHT_LAYER_SEGMENTS` macro. We can define multiple layers and enable/disable them independently: 182To define a layer, we modify `keymap.c` to list out LED ranges and the colors we want to overlay on them using an array of `rgblight_segment_t` using the `RGBLIGHT_LAYER_SEGMENTS` macro. We can define multiple layers and enable/disable them independently:
181 183
182```c 184```c
@@ -211,8 +213,12 @@ void keyboard_post_init_user(void) {
211 rgblight_layers = my_rgb_layers; 213 rgblight_layers = my_rgb_layers;
212} 214}
213``` 215```
216Note: For split keyboards with two controllers, both sides need to be flashed when updating the contents of rgblight_layers.
214 217
215Finally, we enable and disable the lighting layers whenever the state of the keyboard changes: 218### Enabling and disabling lighting layers :id=enabling-lighting-layers
219
220Everything above just configured the definition of each lighting layer.
221We can now enable and disable the lighting layers whenever the state of the keyboard changes:
216 222
217```c 223```c
218layer_state_t layer_state_set_user(layer_state_t state) { 224layer_state_t layer_state_set_user(layer_state_t state) {
@@ -228,7 +234,40 @@ bool led_update_user(led_t led_state) {
228} 234}
229``` 235```
230 236
231Note: For split keyboards with two controllers, both sides need to be flashed when updating the contents of rgblight_layers. 237### Lighting layer blink :id=lighting-layer-blink
238
239By including `#define RGBLIGHT_LAYER_BLINK` in your `config.h` file you can turn a lighting
240layer on for a specified duration. Once the specified number of milliseconds has elapsed
241the layer will be turned off. This is useful, e.g., if you want to acknowledge some
242action (e.g. toggling some setting):
243
244```c
245const rgblight_segment_t PROGMEM _yes_layer[] = RGBLIGHT_LAYER_SEGMENTS( {9, 6, HSV_GREEN} );
246const rgblight_segment_t PROGMEM _no_layer[] = RGBLIGHT_LAYER_SEGMENTS( {9, 6, HSV_RED} );
247
248const rgblight_segment_t* const PROGMEM _rgb_layers[] =
249 RGBLIGHT_LAYERS_LIST( _yes_layer, _no_layer );
250
251void keyboard_post_init_user(void) {
252 rgblight_layers = _rgb_layers;
253}
254
255// Note we user post_process_record_user because we want the state
256// after the flag has been flipped...
257void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
258 switch (keycode) {
259 case DEBUG:
260 rgblight_blink_layer(debug_enable ? 0 : 1, 500);
261 break;
262
263 case NK_TOGG:
264 case NK_ON:
265 case NK_OFF:
266 rgblight_blink_layer(keymap_config.nkro ? 0 : 1, 500);
267 break;
268 }
269}
270```
232 271
233## Functions 272## Functions
234 273