docs(conditional-layers): Document feature
This commit is contained in:
parent
e9140b2da9
commit
cbf6e28e34
2 changed files with 57 additions and 0 deletions
56
docs/docs/features/conditional-layers.md
Normal file
56
docs/docs/features/conditional-layers.md
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
---
|
||||||
|
title: Conditional Layers
|
||||||
|
---
|
||||||
|
|
||||||
|
Conditional layers support activating a particular layer (called the `then-layer`) when all layers
|
||||||
|
in a specified set (called the `if-layers`) are active. This feature generalizes what's commonly
|
||||||
|
known as tri-layer support, allowing activation of two layers (usually called "lower" and "raise")
|
||||||
|
to trigger a third (usually called "adjust").
|
||||||
|
|
||||||
|
Another way to think of this feature is as a simple combo system for layers, just like the usual
|
||||||
|
[combos for behaviors](combos.md).
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Conditional layers are configured via a `conditional_layers` node in your `.keymap` file as follows:
|
||||||
|
|
||||||
|
```
|
||||||
|
/ {
|
||||||
|
conditional_layers {
|
||||||
|
compatible = "zmk,conditional-layers";
|
||||||
|
tri_layer {
|
||||||
|
if-layers = <1 2>;
|
||||||
|
then-layer = <3>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
Each conditional layer configuration may have whatever name you like, but it's helpful to choose
|
||||||
|
something self explanatory like `tri_layer`. The following properties are supported:
|
||||||
|
|
||||||
|
- `if-layers` specifies a set of layer numbers, all of which must be active for the conditional
|
||||||
|
layer to trigger.
|
||||||
|
- `then-layer` specifies a layer number that should be activated if and only if all the layers
|
||||||
|
specified in the `if-layers` property are active.
|
||||||
|
|
||||||
|
Therefore, in this example, layer 3 ("adjust") will be activated if and only if both layers 1
|
||||||
|
("lower") and 2 ("raise") are active.
|
||||||
|
|
||||||
|
:::tip
|
||||||
|
Since higher-numbered layers are processed first, a `then-layer` should generally have a higher
|
||||||
|
number than its associated `if-layers` so the `then-layer` can be accessed when active.
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::info
|
||||||
|
Activating a `then-layer` in one conditional layer configuration can trigger the `if-layers`
|
||||||
|
condition in another configuration, possibly repeatedly.
|
||||||
|
:::
|
||||||
|
|
||||||
|
:::caution
|
||||||
|
When configured as a `then-layer`, a layer's activation status is entirely controlled by the
|
||||||
|
conditional layers feature. Even if the layer is activated for another reason (such as a [momentary
|
||||||
|
layer](../behaviors/layers.md#momentary-layer) behavior), it will be immediately deactivated if the
|
||||||
|
associated `then-layers` configuration is not met. As such, we recommend avoiding using regular
|
||||||
|
layer behaviors for `then-layer` targets.
|
||||||
|
:::
|
|
@ -11,6 +11,7 @@ module.exports = {
|
||||||
Features: [
|
Features: [
|
||||||
"features/keymaps",
|
"features/keymaps",
|
||||||
"features/combos",
|
"features/combos",
|
||||||
|
"features/conditional-layers",
|
||||||
"features/debouncing",
|
"features/debouncing",
|
||||||
"features/displays",
|
"features/displays",
|
||||||
"features/encoders",
|
"features/encoders",
|
||||||
|
|
Loading…
Reference in a new issue