aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJoshua Diamond <josh@windowoffire.com>2020-05-09 04:38:33 -0400
committerGitHub <noreply@github.com>2020-05-09 01:38:33 -0700
commite0f548085cc9c29e85122d393e74143eb5de1d4d (patch)
tree0a881564362e8966376611da7b0db6e5bd6e597d /docs
parent94fc32f43135ac4afb14849c7fb5e99f95455078 (diff)
downloadqmk_firmware-e0f548085cc9c29e85122d393e74143eb5de1d4d.tar.gz
qmk_firmware-e0f548085cc9c29e85122d393e74143eb5de1d4d.zip
Add ability to blink lighting layer for a specified duration (#8760)
* Implement momentarily blink of lighting layers * Refactor spidey3 userspace to use rgb layer blink * Remove un-necessary line from example in documentation * Revert "Refactor spidey3 userspace to use rgb layer blink" This reverts commit 831649bb680c41c6d663ae6fa86d13f4f8bebdd8. * Adds a missing bit of documentation about lighting layer blink * Update docs/feature_rgblight.md per suggestions Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> * Update docs/feature_rgblight.md per suggestions Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> * Update docs/feature_rgblight.md per suggestions Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com> * cformat, as suggested Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Diffstat (limited to 'docs')
-rw-r--r--docs/config_options.md4
-rw-r--r--docs/feature_rgblight.md43
2 files changed, 44 insertions, 3 deletions
diff --git a/docs/config_options.md b/docs/config_options.md
index 16fea83a3..f76685702 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -191,7 +191,9 @@ If you define these options you will enable the associated feature, which may in
191* `#define RGBLIGHT_ANIMATIONS` 191* `#define RGBLIGHT_ANIMATIONS`
192 * run RGB animations 192 * run RGB animations
193* `#define RGBLIGHT_LAYERS` 193* `#define RGBLIGHT_LAYERS`
194 * Lets you define [lighting layers](feature_rgblight.md) that can be toggled on or off. Great for showing the current keyboard layer or caps lock state. 194 * Lets you define [lighting layers](feature_rgblight.md?id=lighting-layers) that can be toggled on or off. Great for showing the current keyboard layer or caps lock state.
195* `#define RGBLIGHT_LAYER_BLINK`
196 * Adds ability to [blink](feature_rgblight.md?id=lighting-layer-blink) a lighting layer for a specified number of milliseconds (e.g. to acknowledge an action).
195* `#define RGBLED_NUM 12` 197* `#define RGBLED_NUM 12`
196 * number of LEDs 198 * number of LEDs
197* `#define RGBLIGHT_SPLIT` 199* `#define RGBLIGHT_SPLIT`
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