aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/config_options.md10
-rw-r--r--docs/contributing.md2
-rw-r--r--docs/custom_quantum_functions.md6
-rw-r--r--docs/de/_summary.md2
-rw-r--r--docs/documentation_templates.md2
-rw-r--r--docs/es/_summary.md2
-rw-r--r--docs/feature_advanced_keycodes.md6
-rw-r--r--docs/feature_backlight.md2
-rw-r--r--docs/feature_bootmagic.md4
-rw-r--r--docs/feature_key_lock.md2
-rw-r--r--docs/feature_leader_key.md2
-rw-r--r--docs/feature_tap_dance.md2
-rw-r--r--docs/fr-fr/_summary.md2
-rw-r--r--docs/he-il/_summary.md2
-rw-r--r--docs/ja/_summary.md2
-rw-r--r--docs/keycodes.md8
-rw-r--r--docs/keymap.md5
-rw-r--r--docs/newbs_building_firmware.md2
-rw-r--r--docs/newbs_flashing.md2
-rw-r--r--docs/newbs_getting_started.md4
-rw-r--r--docs/newbs_git_using_your_master_branch.md2
-rw-r--r--docs/newbs_testing_debugging.md2
-rw-r--r--docs/other_eclipse.md4
-rw-r--r--docs/pt-br/_summary.md2
-rw-r--r--docs/quantum_keycodes.md2
-rw-r--r--docs/ref_functions.md2
-rw-r--r--docs/ru-ru/_summary.md2
-rw-r--r--docs/unit_testing.md2
-rw-r--r--docs/zh-cn/_summary.md2
29 files changed, 45 insertions, 44 deletions
diff --git a/docs/config_options.md b/docs/config_options.md
index df4b67dc1..ef45a51d6 100644
--- a/docs/config_options.md
+++ b/docs/config_options.md
@@ -136,22 +136,22 @@ If you define these options you will enable the associated feature, which may in
136 * enables handling for per key `TAPPING_TERM` settings 136 * enables handling for per key `TAPPING_TERM` settings
137* `#define RETRO_TAPPING` 137* `#define RETRO_TAPPING`
138 * tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release 138 * tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release
139 * See [Retro Tapping](feature_advanced_keycodes.md#retro-tapping) for details 139 * See [Retro Tapping](#retro-tapping) for details
140* `#define TAPPING_TOGGLE 2` 140* `#define TAPPING_TOGGLE 2`
141 * how many taps before triggering the toggle 141 * how many taps before triggering the toggle
142* `#define PERMISSIVE_HOLD` 142* `#define PERMISSIVE_HOLD`
143 * makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the `TAPPING_TERM` 143 * makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the `TAPPING_TERM`
144 * See [Permissive Hold](feature_advanced_keycodes.md#permissive-hold) for details 144 * See [Permissive Hold](#permissive-hold) for details
145* `#define PERMISSIVE_HOLD_PER_KEY` 145* `#define PERMISSIVE_HOLD_PER_KEY`
146 * enabled handling for per key `PERMISSIVE_HOLD` settings 146 * enabled handling for per key `PERMISSIVE_HOLD` settings
147* `#define IGNORE_MOD_TAP_INTERRUPT` 147* `#define IGNORE_MOD_TAP_INTERRUPT`
148 * makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the `TAPPING_TERM` for both keys. 148 * makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the `TAPPING_TERM` for both keys.
149 * See [Mod tap interrupt](feature_advanced_keycodes.md#ignore-mod-tap-interrupt) for details 149 * See [Mod tap interrupt](#ignore-mod-tap-interrupt) for details
150* `#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY` 150* `#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY`
151 * enables handling for per key `IGNORE_MOD_TAP_INTERRUPT` settings 151 * enables handling for per key `IGNORE_MOD_TAP_INTERRUPT` settings
152* `#define TAPPING_FORCE_HOLD` 152* `#define TAPPING_FORCE_HOLD`
153 * makes it possible to use a dual role key as modifier shortly after having been tapped 153 * makes it possible to use a dual role key as modifier shortly after having been tapped
154 * See [Hold after tap](feature_advanced_keycodes.md#tapping-force-hold) 154 * See [Hold after tap](#tapping-force-hold)
155 * Breaks any Tap Toggle functionality (`TT` or the One Shot Tap Toggle) 155 * Breaks any Tap Toggle functionality (`TT` or the One Shot Tap Toggle)
156* `#define TAPPING_FORCE_HOLD_PER_KEY` 156* `#define TAPPING_FORCE_HOLD_PER_KEY`
157 * enables handling for per key `TAPPING_FORCE_HOLD` settings 157 * enables handling for per key `TAPPING_FORCE_HOLD` settings
@@ -335,7 +335,7 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
335 * `bootloadHID` 335 * `bootloadHID`
336 * `USBasp` 336 * `USBasp`
337 337
338## Feature Options 338## Feature Options :id=feature-options
339 339
340Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU. 340Use these to enable or disable building certain features. The more you have enabled the bigger your firmware will be, and you run the risk of building a firmware too large for your MCU.
341 341
diff --git a/docs/contributing.md b/docs/contributing.md
index c4d5057a0..f325566fd 100644
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -101,7 +101,7 @@ enum my_keycodes {
101}; 101};
102``` 102```
103 103
104### Previewing the Documentation 104### Previewing the Documentation :id=previewing-the-documentation
105 105
106Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the `qmk_firmware/` folder: 106Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the `qmk_firmware/` folder:
107 107
diff --git a/docs/custom_quantum_functions.md b/docs/custom_quantum_functions.md
index 9c8f89ae1..84ae589ed 100644
--- a/docs/custom_quantum_functions.md
+++ b/docs/custom_quantum_functions.md
@@ -4,7 +4,7 @@ For a lot of people a custom keyboard is about more than sending button presses
4 4
5This page does not assume any special knowledge about QMK, but reading [Understanding QMK](understanding_qmk.md) will help you understand what is going on at a more fundamental level. 5This page does not assume any special knowledge about QMK, but reading [Understanding QMK](understanding_qmk.md) will help you understand what is going on at a more fundamental level.
6 6
7## A Word on Core vs Keyboards vs Keymap 7## A Word on Core vs Keyboards vs Keymap :id=a-word-on-core-vs-keyboards-vs-keymap
8 8
9We have structured QMK as a hierarchy: 9We have structured QMK as a hierarchy:
10 10
@@ -34,7 +34,7 @@ enum my_keycodes {
34}; 34};
35``` 35```
36 36
37## Programming the Behavior of Any Keycode 37## Programming the Behavior of Any Keycode :id=programming-the-behavior-of-any-keycode
38 38
39When you want to override the behavior of an existing key, or define the behavior for a new key, you should use the `process_record_kb()` and `process_record_user()` functions. These are called by QMK during key processing before the actual key event is handled. If these functions return `true` QMK will process the keycodes as usual. That can be handy for extending the functionality of a key rather than replacing it. If these functions return `false` QMK will skip the normal key handling, and it will be up to you to send any key up or down events that are required. 39When you want to override the behavior of an existing key, or define the behavior for a new key, you should use the `process_record_kb()` and `process_record_user()` functions. These are called by QMK during key processing before the actual key event is handled. If these functions return `true` QMK will process the keycodes as usual. That can be handy for extending the functionality of a key rather than replacing it. If these functions return `false` QMK will skip the normal key handling, and it will be up to you to send any key up or down events that are required.
40 40
@@ -313,7 +313,7 @@ void suspend_wakeup_init_user(void) {
313* Keyboard/Revision: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)` 313* Keyboard/Revision: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)`
314* Keymap: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)` 314* Keymap: `void suspend_power_down_kb(void)` and `void suspend_wakeup_init_user(void)`
315 315
316# Layer Change Code 316# Layer Change Code :id=layer-change-code
317 317
318This runs code every time that the layers get changed. This can be useful for layer indication, or custom layer handling. 318This runs code every time that the layers get changed. This can be useful for layer indication, or custom layer handling.
319 319
diff --git a/docs/de/_summary.md b/docs/de/_summary.md
index ab9b0a053..a894420a2 100644
--- a/docs/de/_summary.md
+++ b/docs/de/_summary.md
@@ -77,7 +77,7 @@
77 * [Macros](de/feature_macros.md) 77 * [Macros](de/feature_macros.md)
78 * [Mouse Keys](de/feature_mouse_keys.md) 78 * [Mouse Keys](de/feature_mouse_keys.md)
79 * [OLED Driver](de/feature_oled_driver.md) 79 * [OLED Driver](de/feature_oled_driver.md)
80 * [One Shot Keys](de/feature_advanced_keycodes.md#one-shot-keys) 80 * [One Shot Keys](de/one_shot_keys.md)
81 * [Pointing Device](de/feature_pointing_device.md) 81 * [Pointing Device](de/feature_pointing_device.md)
82 * [PS/2 Mouse](de/feature_ps2_mouse.md) 82 * [PS/2 Mouse](de/feature_ps2_mouse.md)
83 * [RGB Lighting](de/feature_rgblight.md) 83 * [RGB Lighting](de/feature_rgblight.md)
diff --git a/docs/documentation_templates.md b/docs/documentation_templates.md
index 85d3893b7..8df25590c 100644
--- a/docs/documentation_templates.md
+++ b/docs/documentation_templates.md
@@ -2,7 +2,7 @@
2 2
3This page documents the templates you should use when submitting new Keymaps and Keyboards to QMK. 3This page documents the templates you should use when submitting new Keymaps and Keyboards to QMK.
4 4
5## Keymap `readme.md` Template 5## Keymap `readme.md` Template :id=keyboard-readmemd-template
6 6
7Most keymaps have an image depicting the layout. You can use [Keyboard Layout Editor](http://keyboard-layout-editor.com) to create an image. Upload it to [Imgur](http://imgur.com) or another hosting service, please do not include images in your Pull Request. 7Most keymaps have an image depicting the layout. You can use [Keyboard Layout Editor](http://keyboard-layout-editor.com) to create an image. Upload it to [Imgur](http://imgur.com) or another hosting service, please do not include images in your Pull Request.
8 8
diff --git a/docs/es/_summary.md b/docs/es/_summary.md
index 73f4b0b18..7dffea7d2 100644
--- a/docs/es/_summary.md
+++ b/docs/es/_summary.md
@@ -77,7 +77,7 @@
77 * [Macros](es/feature_macros.md) 77 * [Macros](es/feature_macros.md)
78 * [Teclas del ratón](es/feature_mouse_keys.md) 78 * [Teclas del ratón](es/feature_mouse_keys.md)
79 * [Driver OLED](es/feature_oled_driver.md) 79 * [Driver OLED](es/feature_oled_driver.md)
80 * [Teclas One Shot](es/feature_advanced_keycodes.md#one-shot-keys) 80 * [Teclas One Shot](es/one_shot_keys.md)
81 * [Dispositivo de apuntado](es/feature_pointing_device.md) 81 * [Dispositivo de apuntado](es/feature_pointing_device.md)
82 * [Ratón PS/2](es/feature_ps2_mouse.md) 82 * [Ratón PS/2](es/feature_ps2_mouse.md)
83 * [Iluminación RGB](es/feature_rgblight.md) 83 * [Iluminación RGB](es/feature_rgblight.md)
diff --git a/docs/feature_advanced_keycodes.md b/docs/feature_advanced_keycodes.md
index fbb3de4f7..92713a0eb 100644
--- a/docs/feature_advanced_keycodes.md
+++ b/docs/feature_advanced_keycodes.md
@@ -1,4 +1,4 @@
1# Switching and Toggling Layers 1# Switching and Toggling Layers :id=switching-and-toggling-layers
2 2
3These functions allow you to activate layers in various ways. Note that layers are not generally independent layouts -- multiple layers can be activated at once, and it's typical for layers to use `KC_TRNS` to allow keypresses to pass through to lower layers. For a detailed explanation of layers, see [Keymap Overview](keymap.md#keymap-and-layers). When using momentary layer switching with MO(), LM(), TT(), or LT(), make sure to leave the key on the above layers transparent or it may not work as intended. 3These functions allow you to activate layers in various ways. Note that layers are not generally independent layouts -- multiple layers can be activated at once, and it's typical for layers to use `KC_TRNS` to allow keypresses to pass through to lower layers. For a detailed explanation of layers, see [Keymap Overview](keymap.md#keymap-and-layers). When using momentary layer switching with MO(), LM(), TT(), or LT(), make sure to leave the key on the above layers transparent or it may not work as intended.
4 4
@@ -6,7 +6,7 @@ These functions allow you to activate layers in various ways. Note that layers a
6* `MO(layer)` - momentarily activates *layer*. As soon as you let go of the key, the layer is deactivated. 6* `MO(layer)` - momentarily activates *layer*. As soon as you let go of the key, the layer is deactivated.
7* `LM(layer, mod)` - Momentarily activates *layer* (like `MO`), but with modifier(s) *mod* active. Only supports layers 0-15 and the left modifiers: `MOD_LCTL`, `MOD_LSFT`, `MOD_LALT`, `MOD_LGUI` (note the use of `MOD_` constants instead of `KC_`). These modifiers can be combined using bitwise OR, e.g. `LM(_RAISE, MOD_LCTL | MOD_LALT)`. 7* `LM(layer, mod)` - Momentarily activates *layer* (like `MO`), but with modifier(s) *mod* active. Only supports layers 0-15 and the left modifiers: `MOD_LCTL`, `MOD_LSFT`, `MOD_LALT`, `MOD_LGUI` (note the use of `MOD_` constants instead of `KC_`). These modifiers can be combined using bitwise OR, e.g. `LM(_RAISE, MOD_LCTL | MOD_LALT)`.
8* `LT(layer, kc)` - momentarily activates *layer* when held, and sends *kc* when tapped. Only supports layers 0-15. 8* `LT(layer, kc)` - momentarily activates *layer* when held, and sends *kc* when tapped. Only supports layers 0-15.
9* `OSL(layer)` - momentarily activates *layer* until the next key is pressed. See [One Shot Keys](#one-shot-keys) for details and additional functionality. 9* `OSL(layer)` - momentarily activates *layer* until the next key is pressed. See [One Shot Keys](one_shot_keys.md) for details and additional functionality.
10* `TG(layer)` - toggles *layer*, activating it if it's inactive and vice versa 10* `TG(layer)` - toggles *layer*, activating it if it's inactive and vice versa
11* `TO(layer)` - activates *layer* and de-activates all other layers (except your default layer). This function is special, because instead of just adding/removing one layer to your active layer stack, it will completely replace your current active layers, uniquely allowing you to replace higher layers with a lower one. This is activated on keydown (as soon as the key is pressed). 11* `TO(layer)` - activates *layer* and de-activates all other layers (except your default layer). This function is special, because instead of just adding/removing one layer to your active layer stack, it will completely replace your current active layers, uniquely allowing you to replace higher layers with a lower one. This is activated on keydown (as soon as the key is pressed).
12* `TT(layer)` - Layer Tap-Toggle. If you hold the key down, *layer* is activated, and then is de-activated when you let go (like `MO`). If you repeatedly tap it, the layer will be toggled on or off (like `TG`). It needs 5 taps by default, but you can change this by defining `TAPPING_TOGGLE` -- for example, `#define TAPPING_TOGGLE 2` to toggle on just two taps. 12* `TT(layer)` - Layer Tap-Toggle. If you hold the key down, *layer* is activated, and then is de-activated when you let go (like `MO`). If you repeatedly tap it, the layer will be toggled on or off (like `TG`). It needs 5 taps by default, but you can change this by defining `TAPPING_TOGGLE` -- for example, `#define TAPPING_TOGGLE 2` to toggle on just two taps.
@@ -41,7 +41,7 @@ Layers stack on top of each other in numerical order. When determining what a ke
41 41
42Sometimes, you might want to switch between layers in a macro or as part of a tap dance routine. `layer_on` activates a layer, and `layer_off` deactivates it. More layer-related functions can be found in [action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_layer.h). 42Sometimes, you might want to switch between layers in a macro or as part of a tap dance routine. `layer_on` activates a layer, and `layer_off` deactivates it. More layer-related functions can be found in [action_layer.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/action_layer.h).
43 43
44# Modifier Keys 44# Modifier Keys :id=modifier-keys
45 45
46These allow you to combine a modifier with a keycode. When pressed, the keydown event for the modifier, then `kc` will be sent. On release, the keyup event for `kc`, then the modifier will be sent. 46These allow you to combine a modifier with a keycode. When pressed, the keydown event for the modifier, then `kc` will be sent. On release, the keyup event for `kc`, then the modifier will be sent.
47 47
diff --git a/docs/feature_backlight.md b/docs/feature_backlight.md
index 7c68d74e1..5f69468c3 100644
--- a/docs/feature_backlight.md
+++ b/docs/feature_backlight.md
@@ -192,7 +192,7 @@ To change the behavior of the backlighting, `#define` these in your `config.h`:
192|`BACKLIGHT_PWM_CHANNEL` |`3` |The PWM channel to use, see ST datasheets for pin to PWM channel mapping. Unless you are designing your own keyboard, you shouldn't need to change this| 192|`BACKLIGHT_PWM_CHANNEL` |`3` |The PWM channel to use, see ST datasheets for pin to PWM channel mapping. Unless you are designing your own keyboard, you shouldn't need to change this|
193|`BACKLIGHT_PAL_MODE` |`2` |The pin alternative function to use, see ST datasheets for pin AF mapping. Unless you are designing your own keyboard, you shouldn't need to change this| 193|`BACKLIGHT_PAL_MODE` |`2` |The pin alternative function to use, see ST datasheets for pin AF mapping. Unless you are designing your own keyboard, you shouldn't need to change this|
194 194
195## Software PWM Driver 195## Software PWM Driver :id=software-pwm-driver
196 196
197Emulation of PWM while running other keyboard tasks, it offers maximum hardware compatibility without extra platform configuration. The tradeoff is the backlight might jitter when the keyboard is busy. To enable, add this to your rules.mk: 197Emulation of PWM while running other keyboard tasks, it offers maximum hardware compatibility without extra platform configuration. The tradeoff is the backlight might jitter when the keyboard is busy. To enable, add this to your rules.mk:
198```makefile 198```makefile
diff --git a/docs/feature_bootmagic.md b/docs/feature_bootmagic.md
index a19b5e548..54ebd0867 100644
--- a/docs/feature_bootmagic.md
+++ b/docs/feature_bootmagic.md
@@ -54,7 +54,7 @@ Hold down the Bootmagic key (Space by default) and the desired hotkey while plug
54|`6` |Make layer 6 the default layer | 54|`6` |Make layer 6 the default layer |
55|`7` |Make layer 7 the default layer | 55|`7` |Make layer 7 the default layer |
56 56
57## Keycodes 57## Keycodes :id=keycodes
58 58
59|Key |Aliases |Description | 59|Key |Aliases |Description |
60|----------------------------------|---------|--------------------------------------------------------------------------| 60|----------------------------------|---------|--------------------------------------------------------------------------|
@@ -121,7 +121,7 @@ If you would like to change the hotkey assignments for Bootmagic, `#define` thes
121|`BOOTMAGIC_KEY_DEFAULT_LAYER_6` |`KC_6` |Make layer 6 the default layer | 121|`BOOTMAGIC_KEY_DEFAULT_LAYER_6` |`KC_6` |Make layer 6 the default layer |
122|`BOOTMAGIC_KEY_DEFAULT_LAYER_7` |`KC_7` |Make layer 7 the default layer | 122|`BOOTMAGIC_KEY_DEFAULT_LAYER_7` |`KC_7` |Make layer 7 the default layer |
123 123
124# Bootmagic Lite 124# Bootmagic Lite :id=bootmagic-lite
125 125
126In addition to the full blown Bootmagic feature, is the Bootmagic Lite feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button but you need a way to jump into the bootloader, and don't want to deal with the headache that Bootmagic can cause. 126In addition to the full blown Bootmagic feature, is the Bootmagic Lite feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button but you need a way to jump into the bootloader, and don't want to deal with the headache that Bootmagic can cause.
127 127
diff --git a/docs/feature_key_lock.md b/docs/feature_key_lock.md
index 46935adda..8e6e29f0e 100644
--- a/docs/feature_key_lock.md
+++ b/docs/feature_key_lock.md
@@ -16,7 +16,7 @@ First, enable Key Lock by setting `KEY_LOCK_ENABLE = yes` in your `rules.mk`. Th
16 16
17## Caveats 17## Caveats
18 18
19Key Lock is only able to hold standard action keys and [One Shot modifier](feature_advanced_keycodes.md#one-shot-keys) keys (for example, if you have your Shift defined as `OSM(KC_LSFT)`). 19Key Lock is only able to hold standard action keys and [One Shot modifier](one_shot_keys.md) keys (for example, if you have your Shift defined as `OSM(KC_LSFT)`).
20This does not include any of the QMK special functions (except One Shot modifiers), or shifted versions of keys such as `KC_LPRN`. If it's in the [Basic Keycodes](keycodes_basic.md) list, it can be held. 20This does not include any of the QMK special functions (except One Shot modifiers), or shifted versions of keys such as `KC_LPRN`. If it's in the [Basic Keycodes](keycodes_basic.md) list, it can be held.
21 21
22Switching layers will not cancel the Key Lock. 22Switching layers will not cancel the Key Lock.
diff --git a/docs/feature_leader_key.md b/docs/feature_leader_key.md
index 22370bf23..1d3e2ef7f 100644
--- a/docs/feature_leader_key.md
+++ b/docs/feature_leader_key.md
@@ -74,7 +74,7 @@ SEQ_THREE_KEYS(KC_C, KC_C, KC_C) {
74 74
75## Strict Key Processing 75## Strict Key Processing
76 76
77By default, the Leader Key feature will filter the keycode out of [`Mod-Tap`](feature_advanced_keycodes.md#mod-tap) and [`Layer Tap`](feature_advanced_keycodes.md#switching-and-toggling-layers) functions when checking for the Leader sequences. That means if you're using `LT(3, KC_A)`, it will pick this up as `KC_A` for the sequence, rather than `LT(3, KC_A)`, giving a more expected behavior for newer users. 77By default, the Leader Key feature will filter the keycode out of [`Mod-Tap`](mod_tap.md) and [`Layer Tap`](feature_advanced_keycodes.md#switching-and-toggling-layers) functions when checking for the Leader sequences. That means if you're using `LT(3, KC_A)`, it will pick this up as `KC_A` for the sequence, rather than `LT(3, KC_A)`, giving a more expected behavior for newer users.
78 78
79While, this may be fine for most, if you want to specify the whole keycode (eg, `LT(3, KC_A)` from the example above) in the sequence, you can enable this by added `#define LEADER_KEY_STRICT_KEY_PROCESSING` to your `config.h` file. This well then disable the filtering, and you'll need to specify the whole keycode. 79While, this may be fine for most, if you want to specify the whole keycode (eg, `LT(3, KC_A)` from the example above) in the sequence, you can enable this by added `#define LEADER_KEY_STRICT_KEY_PROCESSING` to your `config.h` file. This well then disable the filtering, and you'll need to specify the whole keycode.
80 80
diff --git a/docs/feature_tap_dance.md b/docs/feature_tap_dance.md
index f48f11b1c..2e8ab5350 100644
--- a/docs/feature_tap_dance.md
+++ b/docs/feature_tap_dance.md
@@ -335,7 +335,7 @@ If you want to implement this in your userspace, then you may want to check out
335 335
336> In this configuration "hold" takes place **after** tap dance timeout (see `ACTION_TAP_DANCE_FN_ADVANCED_TIME`). To achieve instant hold, remove `state->interrupted` checks in conditions. As a result you may use comfortable longer tapping periods to have more time for taps and not to wait too long for holds (try starting with doubled `TAPPING_TERM`). 336> In this configuration "hold" takes place **after** tap dance timeout (see `ACTION_TAP_DANCE_FN_ADVANCED_TIME`). To achieve instant hold, remove `state->interrupted` checks in conditions. As a result you may use comfortable longer tapping periods to have more time for taps and not to wait too long for holds (try starting with doubled `TAPPING_TERM`).
337 337
338### Example 5: Using tap dance for advanced mod-tap and layer-tap keys 338### Example 5: Using tap dance for advanced mod-tap and layer-tap keys :id=example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys
339 339
340Tap dance can be used to emulate `MT()` and `LT()` behavior when the tapped code is not a basic keycode. This is useful to send tapped keycodes that normally require `Shift`, such as parentheses or curly braces—or other modified keycodes, such as `Control + X`. 340Tap dance can be used to emulate `MT()` and `LT()` behavior when the tapped code is not a basic keycode. This is useful to send tapped keycodes that normally require `Shift`, such as parentheses or curly braces—or other modified keycodes, such as `Control + X`.
341 341
diff --git a/docs/fr-fr/_summary.md b/docs/fr-fr/_summary.md
index 23be5d7a0..bb14d2f0a 100644
--- a/docs/fr-fr/_summary.md
+++ b/docs/fr-fr/_summary.md
@@ -81,7 +81,7 @@
81 * [Macros](fr-fr/feature_macros.md) 81 * [Macros](fr-fr/feature_macros.md)
82 * [Boutons de souris](fr-fr/feature_mouse_keys.md) 82 * [Boutons de souris](fr-fr/feature_mouse_keys.md)
83 * [Pilotes / Drivers OLED](fr-fr/feature_oled_driver.md) 83 * [Pilotes / Drivers OLED](fr-fr/feature_oled_driver.md)
84 * [Touche one-shot](fr-fr/feature_advanced_keycodes.md#one-shot-keys) 84 * [Touche one-shot](fr-fr/one_shot_keys.md)
85 * [Périphériques de pointage](fr-fr/feature_pointing_device.md) 85 * [Périphériques de pointage](fr-fr/feature_pointing_device.md)
86 * [Souris PS/2](fr-fr/feature_ps2_mouse.md) 86 * [Souris PS/2](fr-fr/feature_ps2_mouse.md)
87 * [Éclairage RGB](fr-fr/feature_rgblight.md) 87 * [Éclairage RGB](fr-fr/feature_rgblight.md)
diff --git a/docs/he-il/_summary.md b/docs/he-il/_summary.md
index 19a0e1a7d..21059f997 100644
--- a/docs/he-il/_summary.md
+++ b/docs/he-il/_summary.md
@@ -93,7 +93,7 @@
93 * [Macros](he-il/feature_macros.md) 93 * [Macros](he-il/feature_macros.md)
94 * [Mouse Keys](he-il/feature_mouse_keys.md) 94 * [Mouse Keys](he-il/feature_mouse_keys.md)
95 * [OLED Driver](he-il/feature_oled_driver.md) 95 * [OLED Driver](he-il/feature_oled_driver.md)
96 * [One Shot Keys](he-il/feature_advanced_keycodes.md#one-shot-keys) 96 * [One Shot Keys](he-il/one_shot_keys.md)
97 * [Pointing Device](he-il/feature_pointing_device.md) 97 * [Pointing Device](he-il/feature_pointing_device.md)
98 * [PS/2 Mouse](he-il/feature_ps2_mouse.md) 98 * [PS/2 Mouse](he-il/feature_ps2_mouse.md)
99 * [RGB Lighting](he-il/feature_rgblight.md) 99 * [RGB Lighting](he-il/feature_rgblight.md)
diff --git a/docs/ja/_summary.md b/docs/ja/_summary.md
index 6b28d97e0..8091781e8 100644
--- a/docs/ja/_summary.md
+++ b/docs/ja/_summary.md
@@ -82,7 +82,7 @@
82 * [マクロ](ja/feature_macros.md) 82 * [マクロ](ja/feature_macros.md)
83 * [マウスキー](ja/feature_mouse_keys.md) 83 * [マウスキー](ja/feature_mouse_keys.md)
84 * [OLED ドライバ](ja/feature_oled_driver.md) 84 * [OLED ドライバ](ja/feature_oled_driver.md)
85 * [One Shot Keys](ja/feature_advanced_keycodes.md#one-shot-keys) 85 * [One Shot Keys](ja/one_shot_keys.md)
86 * [ポインティング デバイス](ja/feature_pointing_device.md) 86 * [ポインティング デバイス](ja/feature_pointing_device.md)
87 * [PS/2 マウス](ja/feature_ps2_mouse.md) 87 * [PS/2 マウス](ja/feature_ps2_mouse.md)
88 * [RGB ライト](ja/feature_rgblight.md) 88 * [RGB ライト](ja/feature_rgblight.md)
diff --git a/docs/keycodes.md b/docs/keycodes.md
index 91051e716..f207c523e 100644
--- a/docs/keycodes.md
+++ b/docs/keycodes.md
@@ -312,8 +312,8 @@ This is a reference only. Each group of keys links to the page documenting their
312|----------------|----------------------------------------------------------------------------------| 312|----------------|----------------------------------------------------------------------------------|
313|`DF(layer)` |Set the base (default) layer | 313|`DF(layer)` |Set the base (default) layer |
314|`MO(layer)` |Momentarily turn on `layer` when pressed (requires `KC_TRNS` on destination layer)| 314|`MO(layer)` |Momentarily turn on `layer` when pressed (requires `KC_TRNS` on destination layer)|
315|`OSL(layer)` |Momentarily activates `layer` until a key is pressed. See [One Shot Keys](feature_advanced_keycodes#one-shot-keys) for details. | 315|`OSL(layer)` |Momentarily activates `layer` until a key is pressed. See [One Shot Keys](one_shot_keys.md) for details. |
316|`LM(layer, mod)`|Momentarily turn on `layer` (like MO) with `mod` active as well. Where `mod` is a mods_bit. Mods can be viewed [here](feature_advanced_keycodes#mod-tap). Example Implementation: `LM(LAYER_1, MOD_LALT)`| 316|`LM(layer, mod)`|Momentarily turn on `layer` (like MO) with `mod` active as well. Where `mod` is a mods_bit. Mods can be viewed [here](mod_tap.md). Example Implementation: `LM(LAYER_1, MOD_LALT)`|
317|`LT(layer, kc)` |Turn on `layer` when held, `kc` when tapped | 317|`LT(layer, kc)` |Turn on `layer` when held, `kc` when tapped |
318|`TG(layer)` |Toggle `layer` on or off | 318|`TG(layer)` |Toggle `layer` on or off |
319|`TO(layer)` |Turns on `layer` and turns off all other layers, except the default layer | 319|`TO(layer)` |Turns on `layer` and turns off all other layers, except the default layer |
@@ -366,7 +366,7 @@ This is a reference only. Each group of keys links to the page documenting their
366|`KC_MEH` | |Left Control, Shift and Alt | 366|`KC_MEH` | |Left Control, Shift and Alt |
367|`KC_HYPR` | |Left Control, Shift, Alt and GUI | 367|`KC_HYPR` | |Left Control, Shift, Alt and GUI |
368 368
369## [Mod-Tap Keys](feature_advanced_keycodes.md#mod-tap) 369## [Mod-Tap Keys](mod_tap.md)
370 370
371|Key |Aliases |Description | 371|Key |Aliases |Description |
372|-------------|-----------------------------------------------------------------|-------------------------------------------------------| 372|-------------|-----------------------------------------------------------------|-------------------------------------------------------|
@@ -459,7 +459,7 @@ This is a reference only. Each group of keys links to the page documenting their
459|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` | 459|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` |
460|`KC_QUESTION` |`KC_QUES` |`?` | 460|`KC_QUESTION` |`KC_QUES` |`?` |
461 461
462## [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys) 462## [One Shot Keys](one_shot_keys.md)
463 463
464|Key |Description | 464|Key |Description |
465|------------|----------------------------------| 465|------------|----------------------------------|
diff --git a/docs/keymap.md b/docs/keymap.md
index 457dbf67e..ba358edbe 100644
--- a/docs/keymap.md
+++ b/docs/keymap.md
@@ -3,7 +3,7 @@
3QMK keymaps are defined inside a C source file. The data structure is an array of arrays. The outer array is a list of layer arrays while the inner layer array is a list of keys. Most keyboards define a `LAYOUT()` macro to help you create this array of arrays. 3QMK keymaps are defined inside a C source file. The data structure is an array of arrays. The outer array is a list of layer arrays while the inner layer array is a list of keys. Most keyboards define a `LAYOUT()` macro to help you create this array of arrays.
4 4
5 5
6## Keymap and Layers 6## Keymap and Layers :id=keymap-and-layers
7In QMK, **`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`** holds multiple **layers** of keymap information in **16 bit** data holding the **action code**. You can define **32 layers** at most. 7In QMK, **`const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]`** holds multiple **layers** of keymap information in **16 bit** data holding the **action code**. You can define **32 layers** at most.
8 8
9For trivial key definitions, the higher 8 bits of the **action code** are all 0 and the lower 8 bits holds the USB HID usage code generated by the key as **keycode**. 9For trivial key definitions, the higher 8 bits of the **action code** are all 0 and the lower 8 bits holds the USB HID usage code generated by the key as **keycode**.
@@ -27,7 +27,8 @@ Respective layers can be validated simultaneously. Layers are indexed with 0 to
27 27
28Sometimes, the action code stored in keymap may be referred as keycode in some documents due to the TMK history. 28Sometimes, the action code stored in keymap may be referred as keycode in some documents due to the TMK history.
29 29
30### Keymap Layer Status 30### Keymap Layer Status :id=keymap-layer-status
31
31The state of the Keymap layer is determined by two 32 bit parameters: 32The state of the Keymap layer is determined by two 32 bit parameters:
32 33
33* **`default_layer_state`** indicates a base keymap layer (0-31) which is always valid and to be referred (the default layer). 34* **`default_layer_state`** indicates a base keymap layer (0-31) which is always valid and to be referred (the default layer).
diff --git a/docs/newbs_building_firmware.md b/docs/newbs_building_firmware.md
index 5c112a1ca..ed94a1460 100644
--- a/docs/newbs_building_firmware.md
+++ b/docs/newbs_building_firmware.md
@@ -39,7 +39,7 @@ How to complete this step is entirely up to you. Make the one change that's been
39 39
40?> While you get a feel for how keymaps work, keep each change small. Bigger changes make it harder to debug any problems that arise. 40?> While you get a feel for how keymaps work, keep each change small. Bigger changes make it harder to debug any problems that arise.
41 41
42## Build Your Firmware 42## Build Your Firmware :id=build-your-firmware
43 43
44When your changes to the keymap are complete you will need to build the firmware. To do so go back to your terminal window and run the compile command: 44When your changes to the keymap are complete you will need to build the firmware. To do so go back to your terminal window and run the compile command:
45 45
diff --git a/docs/newbs_flashing.md b/docs/newbs_flashing.md
index b114a6247..dc81efd21 100644
--- a/docs/newbs_flashing.md
+++ b/docs/newbs_flashing.md
@@ -6,7 +6,7 @@ Now that you've built a custom firmware file you'll want to flash your keyboard.
6 6
7The simplest way to flash your keyboard will be with the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases). 7The simplest way to flash your keyboard will be with the [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases).
8 8
9However, the QMK Toolbox is only available for Windows and macOS currently. If you're using Linux (or just wish to flash the firmware from the command line), proceed down to [Flash Your Keyboard From The Command Line](newbs_flashing.md#flash-your-keyboard-from-the-command-line). 9However, the QMK Toolbox is only available for Windows and macOS currently. If you're using Linux (or just wish to flash the firmware from the command line), proceed down to [Flash Your Keyboard From The Command Line](#flash-your-keyboard-from-the-command-line).
10 10
11### Load The File Into QMK Toolbox 11### Load The File Into QMK Toolbox
12 12
diff --git a/docs/newbs_getting_started.md b/docs/newbs_getting_started.md
index 3f0364ac4..cb8267de6 100644
--- a/docs/newbs_getting_started.md
+++ b/docs/newbs_getting_started.md
@@ -29,7 +29,7 @@ Linux and macOS come with unix shells you can execute already. You will only nee
29 29
30On Windows you will need to install MSYS2 or WSL and use those environments. Instructions for setting up MSYS2 are provided below. 30On Windows you will need to install MSYS2 or WSL and use those environments. Instructions for setting up MSYS2 are provided below.
31 31
32## 2. Prepare Your Build Environment 32## 2. Prepare Your Build Environment :id=set-up-your-environment
33 33
34We've tried to make QMK as easy to set up as possible. You only have to prepare your Linux or Unix environment, then let QMK install the rest. 34We've tried to make QMK as easy to set up as possible. You only have to prepare your Linux or Unix environment, then let QMK install the rest.
35 35
@@ -66,7 +66,7 @@ You will need to install Git and Python. It's very likely that you already have
66* Fedora / Red Hat / CentOS: `yum install git python3 && python3 -m pip install qmk` 66* Fedora / Red Hat / CentOS: `yum install git python3 && python3 -m pip install qmk`
67* Arch: `pacman -S qmk` 67* Arch: `pacman -S qmk`
68 68
69## 3. Run QMK Setup 69## 3. Run QMK Setup :id=set-up-qmk
70 70
71After installing QMK you can set it up with this command: 71After installing QMK you can set it up with this command:
72 72
diff --git a/docs/newbs_git_using_your_master_branch.md b/docs/newbs_git_using_your_master_branch.md
index 2032b83b2..c27323f55 100644
--- a/docs/newbs_git_using_your_master_branch.md
+++ b/docs/newbs_git_using_your_master_branch.md
@@ -37,7 +37,7 @@ git push origin master
37 37
38This switches you to your `master` branch, retrieves the refs from the QMK repo, downloads the current QMK `master` branch to your computer, and then uploads it to your fork. 38This switches you to your `master` branch, retrieves the refs from the QMK repo, downloads the current QMK `master` branch to your computer, and then uploads it to your fork.
39 39
40## Making Changes 40## Making Changes :id=making-changes
41 41
42To make changes, create a new branch by entering: 42To make changes, create a new branch by entering:
43 43
diff --git a/docs/newbs_testing_debugging.md b/docs/newbs_testing_debugging.md
index c6c1bd50c..181238902 100644
--- a/docs/newbs_testing_debugging.md
+++ b/docs/newbs_testing_debugging.md
@@ -6,7 +6,7 @@ Once you've flashed your keyboard with a custom firmware you're ready to test it
6 6
7Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use [QMK Configurator](https://config.qmk.fm/#/test/)'s test mode to check your keyboard, even if it doesn't run QMK. 7Testing your keyboard is usually pretty straightforward. Press every single key and make sure it sends the keys you expect. You can use [QMK Configurator](https://config.qmk.fm/#/test/)'s test mode to check your keyboard, even if it doesn't run QMK.
8 8
9## Debugging 9## Debugging :id=debugging
10 10
11Your keyboard will output debug information if you have `CONSOLE_ENABLE = yes` in your `rules.mk`. By default the output is very limited, but you can turn on debug mode to increase the amount of debug output. Use the `DEBUG` keycode in your keymap, use the [Command](feature_command.md) feature to enable debug mode, or add the following code to your keymap. 11Your keyboard will output debug information if you have `CONSOLE_ENABLE = yes` in your `rules.mk`. By default the output is very limited, but you can turn on debug mode to increase the amount of debug output. Use the `DEBUG` keycode in your keymap, use the [Command](feature_command.md) feature to enable debug mode, or add the following code to your keymap.
12 12
diff --git a/docs/other_eclipse.md b/docs/other_eclipse.md
index 2cb90647a..98b6e52e9 100644
--- a/docs/other_eclipse.md
+++ b/docs/other_eclipse.md
@@ -17,7 +17,7 @@ Note that this set-up has been tested on Ubuntu 16.04 only for the moment.
17 17
18# Prerequisites 18# Prerequisites
19## Build Environment 19## Build Environment
20Before starting, you must have followed the [Getting Started](README.md#getting-started) section corresponding to your system. In particular, you must have been able to build the firmware with [the `make` command](../#the-make-command). 20Before starting, you must have followed the [Getting Started](news_getting_started.md) section of the Tutorial. In particular, you must have been able to build the firmware with [the `qmk compile` command](news_building_firmware#build-your-firmware).
21 21
22## Java 22## Java
23Eclipse is a Java application, so you will need to install Java 8 or more recent to be able to run it. You may choose between the JRE or the JDK, the latter being useful if you intend to do Java development. 23Eclipse is a Java application, so you will need to install Java 8 or more recent to be able to run it. You may choose between the JRE or the JDK, the latter being useful if you intend to do Java development.
@@ -85,4 +85,4 @@ We will now configure a make target that cleans the project and builds the keyma
858. Double-click the build target you created to trigger a build. 858. Double-click the build target you created to trigger a build.
869. Select the <kbd>Console</kbd> view at the bottom to view the running build. 869. Select the <kbd>Console</kbd> view at the bottom to view the running build.
87 87
88 [1]: https://en.wikipedia.org/wiki/Eclipse_(software) \ No newline at end of file 88 [1]: https://en.wikipedia.org/wiki/Eclipse_(software)
diff --git a/docs/pt-br/_summary.md b/docs/pt-br/_summary.md
index 597f0f2d0..9c29c5a3a 100644
--- a/docs/pt-br/_summary.md
+++ b/docs/pt-br/_summary.md
@@ -77,7 +77,7 @@
77 * [Macros](pt-br/feature_macros.md) 77 * [Macros](pt-br/feature_macros.md)
78 * [Mouse Keys](pt-br/feature_mouse_keys.md) 78 * [Mouse Keys](pt-br/feature_mouse_keys.md)
79 * [OLED Driver](pt-br/feature_oled_driver.md) 79 * [OLED Driver](pt-br/feature_oled_driver.md)
80 * [One Shot Keys](pt-br/feature_advanced_keycodes.md#one-shot-keys) 80 * [One Shot Keys](pt-br/one_shot_keys.md)
81 * [Pointing Device](pt-br/feature_pointing_device.md) 81 * [Pointing Device](pt-br/feature_pointing_device.md)
82 * [PS/2 Mouse](pt-br/feature_ps2_mouse.md) 82 * [PS/2 Mouse](pt-br/feature_ps2_mouse.md)
83 * [RGB Lighting](pt-br/feature_rgblight.md) 83 * [RGB Lighting](pt-br/feature_rgblight.md)
diff --git a/docs/quantum_keycodes.md b/docs/quantum_keycodes.md
index 969849cda..7ebad2c1e 100644
--- a/docs/quantum_keycodes.md
+++ b/docs/quantum_keycodes.md
@@ -6,7 +6,7 @@ All keycodes within quantum are numbers between `0x0000` and `0xFFFF`. Within yo
6 6
7On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are used to implement advanced quantum features. If you define your own custom keycodes they will be put into this range as well. 7On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are used to implement advanced quantum features. If you define your own custom keycodes they will be put into this range as well.
8 8
9## QMK Keycodes 9## QMK Keycodes :id=qmk-keycodes
10 10
11|Key |Aliases |Description | 11|Key |Aliases |Description |
12|--------------|---------|-------------------------------------------------------| 12|--------------|---------|-------------------------------------------------------|
diff --git a/docs/ref_functions.md b/docs/ref_functions.md
index 1ac83cec4..708b0be28 100644
--- a/docs/ref_functions.md
+++ b/docs/ref_functions.md
@@ -2,7 +2,7 @@
2 2
3There are a lot of hidden functions in QMK that are incredible useful, or may add a bit of functionality that you've been wanting. Functions that are specific to certain features are not included here, as those will be on their respective feature page. 3There are a lot of hidden functions in QMK that are incredible useful, or may add a bit of functionality that you've been wanting. Functions that are specific to certain features are not included here, as those will be on their respective feature page.
4 4
5## (OLKB) Tri Layers 5## (OLKB) Tri Layers :id=olkb-tri-layers
6 6
7There are actually separate functions that you can use there, depending on what you're after. 7There are actually separate functions that you can use there, depending on what you're after.
8 8
diff --git a/docs/ru-ru/_summary.md b/docs/ru-ru/_summary.md
index 92b78bff1..caa7cdd56 100644
--- a/docs/ru-ru/_summary.md
+++ b/docs/ru-ru/_summary.md
@@ -78,7 +78,7 @@
78 * [Macros](ru-ru/feature_macros.md) 78 * [Macros](ru-ru/feature_macros.md)
79 * [Mouse Keys](ru-ru/feature_mouse_keys.md) 79 * [Mouse Keys](ru-ru/feature_mouse_keys.md)
80 * [OLED Driver](ru-ru/feature_oled_driver.md) 80 * [OLED Driver](ru-ru/feature_oled_driver.md)
81 * [One Shot Keys](ru-ru/feature_advanced_keycodes.md#one-shot-keys) 81 * [One Shot Keys](ru-ru/one_shot_keys.md)
82 * [Pointing Device](ru-ru/feature_pointing_device.md) 82 * [Pointing Device](ru-ru/feature_pointing_device.md)
83 * [PS/2 Mouse](ru-ru/feature_ps2_mouse.md) 83 * [PS/2 Mouse](ru-ru/feature_ps2_mouse.md)
84 * [RGB Lighting](ru-ru/feature_rgblight.md) 84 * [RGB Lighting](ru-ru/feature_rgblight.md)
diff --git a/docs/unit_testing.md b/docs/unit_testing.md
index 06d23a9cc..4de5c217e 100644
--- a/docs/unit_testing.md
+++ b/docs/unit_testing.md
@@ -48,7 +48,7 @@ It's not yet possible to do a full integration test, where you would compile the
48 48
49In that model you would emulate the input, and expect a certain output from the emulated keyboard. 49In that model you would emulate the input, and expect a certain output from the emulated keyboard.
50 50
51# Tracing Variables 51# Tracing Variables :id=tracing-variables
52 52
53Sometimes you might wonder why a variable gets changed and where, and this can be quite tricky to track down without having a debugger. It's of course possible to manually add print statements to track it, but you can also enable the variable trace feature. This works for both for variables that are changed by the code, and when the variable is changed by some memory corruption. 53Sometimes you might wonder why a variable gets changed and where, and this can be quite tricky to track down without having a debugger. It's of course possible to manually add print statements to track it, but you can also enable the variable trace feature. This works for both for variables that are changed by the code, and when the variable is changed by some memory corruption.
54 54
diff --git a/docs/zh-cn/_summary.md b/docs/zh-cn/_summary.md
index 537c3eb1f..12bd07a21 100644
--- a/docs/zh-cn/_summary.md
+++ b/docs/zh-cn/_summary.md
@@ -82,7 +82,7 @@
82 * [宏指令](zh-cn/feature_macros.md) 82 * [宏指令](zh-cn/feature_macros.md)
83 * [鼠标键](zh-cn/feature_mouse_keys.md) 83 * [鼠标键](zh-cn/feature_mouse_keys.md)
84 * [OLED驱动](zh-cn/feature_oled_driver.md) 84 * [OLED驱动](zh-cn/feature_oled_driver.md)
85 * [一键功能](zh-cn/feature_advanced_keycodes.md#one-shot-keys) 85 * [一键功能](zh-cn/one_shot_keys.md)
86 * [指针设备](zh-cn/feature_pointing_device.md) 86 * [指针设备](zh-cn/feature_pointing_device.md)
87 * [PS/2鼠标](zh-cn/feature_ps2_mouse.md) 87 * [PS/2鼠标](zh-cn/feature_ps2_mouse.md)
88 * [RGB灯光](zh-cn/feature_rgblight.md) 88 * [RGB灯光](zh-cn/feature_rgblight.md)