readme.md (3381B)
1 # Planck 2 3 A compact 40% (12x4) ortholinear keyboard kit designed by OLKB and sold by Drop. A complete hardware rework of the rev6 Planck PCB, with support for up to 8 rotary encoders. [More info on qmk.fm](http://qmk.fm/planck/) 4 5 * Keyboard Maintainer: [Jack Humbert](https://github.com/jackhumbert) 6 * Hardware Supported: Planck PCB rev7 7 * Hardware Availability: [Drop](https://drop.com/buy/planck-mechanical-keyboard?mode=guest_open) 8 9 Make example for this keyboard (after setting up your build environment): 10 11 make planck/rev7:default 12 13 See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). 14 15 ## Encoders 16 17 Encoders must have matching pulse & detent resolutions (e.g. 24/24) for the scanning to work properly. Multiple encoders can be used at the same time. 18 If an encoder has a switch built-in, it's connected to the key at that location with index number: 19 20 ``` 21 ,-----------------------------------------------------------------------------------. 22 | 0 | | | | | | | | | | | 4 | 23 |------+------+------+------+------+------+------+------+------+------+------+------| 24 | 1 | | | | | | | | | | | 5 | 25 |------+------+------+------+------+------+------+------+------+------+------+------| 26 | 2 | | | | | | | | | | | 6 | 27 |------+------+------+------+------+------+------+------+------+------+------+------| 28 | 3 | | | | | | | | | | 7 | 29 `-----------------------------------------------------------------------------------' 30 ``` 31 32 Planck rev7 supports `ENCODER_ENABLE` and `ENCODER_MAP_ENABLE`. If both `ENCODER_MAP_ENABLE` and `ENCODER_ENABLE` are defined, `ENCODER_MAP_ENABLE` takes precedence. On the default keymap, each encoder will play its own rising/falling tone sequence when rotated, and will reset the pitch after one second of inactivity. 33 34 ### With ENCODER_ENABLE 35 36 Define it as follows in `rules.mk`: 37 38 ``` 39 ENCODER_ENABLE = yes 40 ``` 41 42 Zero-indexed (compared to being one-indexed on the PCB's silkscreen) in the `encoder_update_user(uint8_t index, bool clockwise)` function. 43 44 ### With ENCODER_MAP_ENABLE 45 46 Define it as follows in `rules.mk`: 47 48 ``` 49 ENCODER_ENABLE = yes 50 ENCODER_MAP_ENABLE = yes 51 ``` 52 53 If you enable `ENCODER_MAP_ENABLE`, define `const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS]` and configure your keycodes. If you enable `ENCODER_MAP_ENABLE`, `encoder_update_user` is not used directly. 54 55 Additionally, you can use the following `config.h` options: 56 57 ```c 58 #define ENCODER_MAP_KEY_DELAY 10 59 #define ENCODER_RESOLUTION 4 60 ``` 61 62 ## Some Planck-specific config.h options: 63 64 ```c 65 // sets the length (in seconds) of the watchdog timer, which will reset the keyboard due to hang/crash in the code 66 #define PLANCK_WATCHDOG_TIMEOUT 1.0 67 // disables the watchdog timer - you may want to disable the watchdog timer if you use longer macros 68 #define PLANCK_WATCHDOG_DISABLE 69 // Sets the time to wait for the rotary encoder pin state to stabilize while scanning (Default is 20(us)) 70 #define PLANCK_ENCODER_SETTLE_PIN_STATE_DELAY 20 71 ```