summaryrefslogtreecommitdiffstats
path: root/docs/feature_encoders.md
diff options
context:
space:
mode:
authorAlbert Y <76888457+filterpaper@users.noreply.github.com>2021-12-27 18:16:19 +0800
committerGitHub <noreply@github.com>2021-12-27 21:16:19 +1100
commit067d94f0b6c957c4e1c0ae1d680b420651fb3766 (patch)
tree60f26de5f3ffe6c66c99ff9ccc872711da293513 /docs/feature_encoders.md
parentdad7424becdb10d1dc3ad70a456fc40513255e71 (diff)
Add layer condition example to encoder callback function (#15490)
Co-authored-by: filterpaper <filterpaper@localhost>
Diffstat (limited to 'docs/feature_encoders.md')
-rw-r--r--docs/feature_encoders.md37
1 files changed, 37 insertions, 0 deletions
diff --git a/docs/feature_encoders.md b/docs/feature_encoders.md
index 8e854c1e58..8ab5ca9c46 100644
--- a/docs/feature_encoders.md
+++ b/docs/feature_encoders.md
@@ -87,6 +87,43 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
!> If you return `true`, this will allow the keyboard level code to run, as well. Returning `false` will override the keyboard level code. Depending on how the keyboard level function is set up.
+Layer conditions can also be used with the callback function like the following:
+
+```c
+bool encoder_update_user(uint8_t index, bool clockwise) {
+ if (get_highest_layer(layer_state|default_layer_state) > 0) {
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_WH_D);
+ } else {
+ tap_code(KC_WH_U);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_VOLU);
+ } else {
+ tap_code(KC_VOLD);
+ }
+ }
+ } else { /* Layer 0 */
+ if (index == 0) {
+ if (clockwise) {
+ tap_code(KC_PGDN);
+ } else {
+ tap_code(KC_PGUP);
+ }
+ } else if (index == 1) {
+ if (clockwise) {
+ tap_code(KC_DOWN);
+ } else {
+ tap_code(KC_UP);
+ }
+ }
+ }
+ return false;
+}
+```
+
## Hardware
The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground.