Commit | Line | Data |
---|---|---|
85688e5b JH |
1 | # Encoders |
2 | ||
3 | Basic encoders are supported by adding this to your `rules.mk`: | |
4 | ||
5 | ENCODER_ENABLE = yes | |
6 | ||
7 | and this to your `config.h`: | |
8 | ||
9 | #define NUMBER_OF_ENCODERS 1 | |
10 | #define ENCODERS_PAD_A { B12 } | |
11 | #define ENCODERS_PAD_B { B13 } | |
12 | ||
13 | Each PAD_A/B variable defines an array so multiple encoders can be defined, e.g.: | |
14 | ||
15 | #define ENCODERS_PAD_A { encoder1a, encoder2a } | |
16 | #define ENCODERS_PAD_B { encoder1a, encoder2b } | |
17 | ||
18 | If your encoder's clockwise directions are incorrect, you can swap the A & B pad definitions. | |
19 | ||
20 | Additionally, the resolution can be specified in the same file (the default & suggested is 4): | |
21 | ||
22 | #define ENCODER_RESOLUTION 4 | |
23 | ||
24 | ## Callbacks | |
25 | ||
26 | The callback functions can be inserted into your `<keyboard>.c`: | |
27 | ||
28 | void encoder_update_kb(uint8_t index, bool clockwise) { | |
29 | encoder_update_user(index, clockwise); | |
30 | } | |
31 | ||
32 | or `keymap.c`: | |
33 | ||
34 | void encoder_update_user(uint8_t index, bool clockwise) { | |
24b3556e JH |
35 | if (index == 0) { |
36 | if (clockwise) { | |
37 | register_code(KC_PGDN); | |
38 | unregister_code(KC_PGDN); | |
39 | } else { | |
40 | register_code(KC_PGUP); | |
41 | unregister_code(KC_PGUP); | |
42 | } | |
43 | } | |
85688e5b JH |
44 | } |
45 | ||
85688e5b JH |
46 | ## Hardware |
47 | ||
48 | 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. |