zmk/docs/docs/config/encoders.md
Nicolas Munnich 5f056f7199
refactor(docs): Convert the keymaps section into a base folder (#2430)
Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
2024-08-21 10:39:18 -07:00

82 lines
3.4 KiB
Markdown

---
title: Encoder Configuration
sidebar_label: Encoders
---
See the [Encoders informational page](../features/encoders.md) for more details, including instructions for adding encoder support to a board.
See [Configuration Overview](index.md) for instructions on how to change these settings.
## EC11 Encoders
### Kconfig
Definition file: [zmk/app/module/drivers/sensor/ec11/Kconfig](https://github.com/zmkfirmware/zmk/blob/main/app/module/drivers/sensor/ec11/Kconfig)
| Config | Type | Description | Default |
| ------------------------------- | ---- | -------------------------------- | ------- |
| `CONFIG_EC11` | bool | Enable EC11 encoders | n |
| `CONFIG_EC11_THREAD_PRIORITY` | int | Priority of the encoder thread | 10 |
| `CONFIG_EC11_THREAD_STACK_SIZE` | int | Stack size of the encoder thread | 1024 |
If `CONFIG_EC11` is enabled, exactly one of the following options must be set to `y`:
| Config | Type | Description |
| ----------------------------------- | ---- | ----------------------------------------------- |
| `CONFIG_EC11_TRIGGER_NONE` | bool | No trigger (encoders are disabled) |
| `CONFIG_EC11_TRIGGER_GLOBAL_THREAD` | bool | Process encoder interrupts on the global thread |
| `CONFIG_EC11_TRIGGER_OWN_THREAD` | bool | Process encoder interrupts on their own thread |
### Devicetree
#### Keymap sensor config
For shields/boards that export a `sensors` node configuration label, both global and per-sensor settings can be set by overriding the properties there.
To override the general settings, update them on the exported `sensors` node, e.g.:
```
&sensors {
triggers-per-rotation = <18>;
};
```
Per sensor overrides can be added with ordered nested nodes with the correct overrides, e.g.:
```
&sensors {
left_config {
triggers-per-rotation = <18>;
};
right_config {
triggers-per-rotation = <24>;
};
};
```
:::note
The names of the child nodes are not important, and are applied in order to the sensors listed in the `sensors` property of the sensors node.
:::
Applies to the node and child nodes of: `compatible = "zmk,keymap-sensors"`
Definition file: [zmk/app/drivers/zephyr/dts/bindings/zmk,keymap-sensors.yaml](https://github.com/zmkfirmware/zmk/blob/main/app/drivers/zephyr/dts/bindings/zmk%2Ckeymap-sensors.yaml)
| Property | Type | Description | Default |
| ----------------------- | ---- | --------------------------------------------------------------- | ------- |
| `triggers-per-rotation` | int | Number of times to trigger the bound behavior per full rotation | |
#### EC11 nodes
Applies to: `compatible = "alps,ec11"`
Definition file: [zmk/app/module/dts/bindings/sensor/alps,ec11.yaml](https://github.com/zmkfirmware/zmk/blob/main/app/module/dts/bindings/sensor/alps%2Cec11.yaml)
| Property | Type | Description | Default |
| --------- | ---------- | ---------------------------------------------- | ------- |
| `a-gpios` | GPIO array | GPIO connected to the encoder's A pin | |
| `b-gpios` | GPIO array | GPIO connected to the encoder's B pin | |
| `steps` | int | Number of encoder pulses per complete rotation | |