~ruther/qmk_firmware

067d94f0b6c957c4e1c0ae1d680b420651fb3766 — Albert Y 3 years ago dad7424
Add layer condition example to encoder callback function (#15490)

Co-authored-by: filterpaper <filterpaper@localhost>
1 files changed, 37 insertions(+), 0 deletions(-)

M docs/feature_encoders.md
M docs/feature_encoders.md => docs/feature_encoders.md +37 -0
@@ 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.