
commit 5a54a139fb69b48c16f02d93f1fe5825b7e37580 Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 17:10:12 2022 -0400 Move keypos def to nodefree repo commit 0913280899dc3723eb8878267555a51ad0b7fed5 Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 17:08:04 2022 -0400 Key position maps commit cc5a2c7f2d840944d97e7c1b70d00675b20811e7 Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 14:58:41 2022 -0400 Move international chars to nodefree repo commit 26d4b90cc24862ce8a8fcea866e34c6f1f942db8 Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 14:58:11 2022 -0400 Add international character codes commit c21b0828da1036fb4e1e70663fef18b3297bfaeb Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 13:32:36 2022 -0400 Move keypos def to separate file commit 814682560eb59c2980cc37af84ba2d8cc0ddafe8 Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 13:23:14 2022 -0400 Rename helper.dtsi to helper.h in zmk-config commit a71187ab35db86fa8f8be320ff1f0f1a8997f68e Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 13:21:59 2022 -0400 Rename helper.dtsi to helper.h commit 9226fcb12959fde87855cea78e9e396935c2d55c Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 12:54:32 2022 -0400 Mirror left/right keypos def commit 1a4e680a55ecca650649ec0586392eb0c89d643a Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 11:43:38 2022 -0400 Add prefix to unicode macro commit 0e4cb3093e114d9060cd41ad191ff65802999d21 Merge: 41ec2cd 04a7df6 Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 11:38:07 2022 -0400 Merge commit '04a7df637c524525f2964c0a35a3e187760dc79a' as 'zmk-nodefree-config' commit 04a7df637c524525f2964c0a35a3e187760dc79a Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 11:38:07 2022 -0400 Squashed 'zmk-nodefree-config/' content from commit 0841d09 git-subtree-dir: zmk-nodefree-config git-subtree-split: 0841d0948ac7389a86d15dd42baf03e2832a1b00 commit 41ec2cdb032cd605b65024e8d8fa8ea7578ed85e Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 11:37:58 2022 -0400 Remove old subtree commit ac2a6c4000d480b78769e1c3f585322b724b0325 Merge: 7599487 188e189 Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 11:32:33 2022 -0400 Merge commit '188e1891582712e06130eb794aeee34b47e2241b' as 'zmk-nodefree-config' commit 188e1891582712e06130eb794aeee34b47e2241b Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 11:32:33 2022 -0400 Squashed 'zmk-nodefree-config/' content from commit bd714d8 git-subtree-dir: zmk-nodefree-config git-subtree-split: bd714d81d177a5a4ac231b40a041c9f50c713cc5 commit 7599487fd27a382b7380ef9c37c5a6899d393fff Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 11:32:21 2022 -0400 Remove old subtree commit 97b0bf3d84910f68e01f9c671e690c9f25cc7e17 Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 11:30:23 2022 -0400 Move combo and unicode macros to helper.dtsi commit 10703c087dbee780857182840749e5f1f0db25fb Author: urob <978080+urob@users.noreply.github.com> Date: Thu Jul 14 10:28:24 2022 -0400 Testing combo macros
110 lines
6.1 KiB
Markdown
110 lines
6.1 KiB
Markdown
# zmk-nodefree-config
|
|
|
|
ZMK lets user customize their keyboard layout by providing a Devicetree file
|
|
(`.keymap`). The specific syntax requirements of the Devicetree file format can,
|
|
however, make this process a bit daunting for new users.
|
|
|
|
This repository provides simple convenience macros that simplify the configuration for
|
|
many common use cases. It results in a "node-free" user configuration with a more
|
|
streamlined syntax. Check out [example.keymap](example.keymap) to see it in action.
|
|
|
|
## Usage overview
|
|
|
|
1. Copy the file `helper.h` from this repository into the "config" folder of your
|
|
private zmk-config repository
|
|
2. Source `helper.h` near the top of your `.keymap` file:
|
|
```C++
|
|
#include "helper.h"
|
|
```
|
|
3. Customize your keyboard's `.keymap` file. See [example.keymap](example.keymap) or [my
|
|
personal zmk-config](https://github.com/urob/zmk-config/blob/main/config/base.keymap)
|
|
for a complete configuration, and read the documentation below for details.
|
|
|
|
## Usage details
|
|
|
|
`helper.h` provides two convenience macros. `ZMK_BEHAVIOR` creates new behaviors, and
|
|
`ZMK_LAYER` adds new layers to your keymap.
|
|
|
|
### ZMK\_BEHAVIOR
|
|
|
|
The macro is invoked by calling `ZMK_BEHAVIOR(name, type, specification)`, expecting
|
|
3 arguments:
|
|
* `name` is a unique string chosen by the user (e.g., `my_behavior`). It can later be
|
|
used to reference the new behavior by preceding it by "&" (e.g., `&my_behavior`)
|
|
* `type` selects the behavior that is created. It must be one of the following:
|
|
`caps_word`, `hold_tap`, `key_repeat`, `macro`, `mod_morph`, `sticky_key` or
|
|
`tap_dance`. Note that two-word types use underscores ("\_") to separate words.
|
|
* `specification` contains the code customizing the new behavior. It should contain the
|
|
body of the corresponding [ZMK behavior configuration](https://zmk.dev/docs/config/behaviors)
|
|
without the `label`, `#binding-cells` and `compatible` properties and without the
|
|
surrounding node-specification.
|
|
|
|
#### Example 1: Creating a custom "homerow mod" tap-hold behavior
|
|
|
|
```C++
|
|
ZMK_BEHAVIOR(hrm, hold_tap,
|
|
flavor = "balanced";
|
|
tapping-term-ms = <280>;
|
|
quick-tap-ms = <125>;
|
|
global-quick-tap;
|
|
bindings = <&kp>, <&kp>;
|
|
)
|
|
```
|
|
|
|
The new behavior can be added to the keymap-layout using `&hrm` (e.g., `&hrm LSHIFT T`
|
|
creates a key that yields `T` on tap and `LSHIFT` on hold, using the custom
|
|
configuration above).
|
|
|
|
#### Example 2: Creating a custom tap-dance key
|
|
|
|
```C++
|
|
ZMK_BEHAVIOR(ss_cw, tap_dance,
|
|
tapping-term-ms = <200>;
|
|
bindings = <&sk LSHFT>, <&caps_word>;
|
|
)
|
|
```
|
|
|
|
The new behavior can be added to the keymap-layout using `&ss_cw`. The key yields
|
|
sticky-shift on tap and caps-word on double tap;
|
|
|
|
#### Example 3: Creating a custom "win-sleep" macro
|
|
|
|
```C++
|
|
ZMK_BEHAVIOR(win_sleep, macro,
|
|
wait-ms = <100>;
|
|
tap-ms = <5>;
|
|
bindings = <&kp LG(X) &kp U &kp S>;
|
|
)
|
|
```
|
|
|
|
This creates a "Windows sleep key" that can be added to the keymap-layout using
|
|
`&win_sleep`.
|
|
|
|
### ZMK\_LAYER
|
|
|
|
The function is invoked by calling `ZMK_LAYER(name, layout)`, expecting
|
|
2 arguments:
|
|
* `name` is a unique identifier string chosen by the user (it isn't used elsewhere)
|
|
* `layout` provides the layout specification using the same syntax as the `bindings`
|
|
property of the [ZMK keymap configuration](https://zmk.dev/docs/config/keymap)
|
|
|
|
Multiple layers can be defined with repeated calls of `ZMK_LAYER`. They will be ordered
|
|
in the same order in which they are created, with the first-specified layer being
|
|
the "lowest" one ([see here for details](https://zmk.dev/docs/features/keymaps#layers)).
|
|
|
|
#### Example usage
|
|
```C++
|
|
ZMK_KEYMAP(default_layer,
|
|
// ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮ ╭─────────────┬─────────────┬─────────────┬─────────────┬─────────────╮
|
|
&kp Q &kp W &kp F &kp P &kp B &kp J &kp L &kp U &kp Y &kp SQT
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&hrm LGUI A &hrm LALT R &hrm LCTRL S &hrm LSHFT T &kp G &kp M &hrm RSHFT N &hrm LCTRL E &hrm LALT I &hrm LGUI O
|
|
// ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&kp Z &kp X &kp C &kp D &kp V &kp K &kp H &kp COMMA &kp DOT &kp SEMI
|
|
// ╰─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
|
|
&kp ESC < NAV SPACE &kp TAB &kp RET &ss_cw &bs_del_num
|
|
// ╰─────────────┴──── ────────┴─────────────╯ ╰─────────────┴─────────────┴─────────────╯
|
|
)
|
|
|
|
```
|
|
|