No description
Find a file
urob 0b6979f97e Move combos/unicode to nodefree repo (squashed)
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
2022-07-14 17:16:44 -04:00
.github/workflows Initial User Config. 2022-06-08 17:25:34 -04:00
config Move combos/unicode to nodefree repo (squashed) 2022-07-14 17:16:44 -04:00
img Update keymap layout image 2022-06-29 21:31:03 -04:00
zmk-nodefree-config Move combos/unicode to nodefree repo (squashed) 2022-07-14 17:16:44 -04:00
.gitattributes Syntax highlighting 2022-07-13 15:00:02 -04:00
build.yaml Initial User Config. 2022-06-08 17:25:34 -04:00
readme.md Point out zmk-nodefree-config 2022-07-13 20:58:26 -04:00

zmk-config

This is my personal ZMK firmware configuration. It is ported from my QMK configuration, which in turn is heavily inspired by Manna Harbour's Miryoku layout.

Key features

  • clean keymap config using zmk-nodefree-config1
  • simple macro-implementation of combos and keymap to fit different physical keyboards2
  • home-row mods on base layer, sticky mods on Nav and Num layers
  • most symbols can be accessed from the base layer via combos
  • sticky shift on right thumb, double-tap activates caps-word
  • backspace morphs into delete when shifted
  • full numpad-layer with arithmetic operators (= via combo) and Esc, Enter, Tab on left hand (can be numlocked via W + P combo, ideal for data entry and right-handed mouse)
  • unicode-layer with Greek letters for mathematical typesetting (implemented via preprocessor macros3)

A few thoughts on the combo setup

The combo layout is guided by two goals: (1) put all combos in easy-to-access locations, and (2) make them easy to remember. Specifically:

  • the top vertical-combo row is almost equivalent to the symbols on standard number rows, making them easy to remember
  • the bottom vertical-combo row is set up symmetrically to facilitate memorization (subscript _ aligns with superscript ^; minus - aligns with +; division / aligns with multiplication *; logical-or | aligns with logical-and &; backslash \ aligns horizontally with forward slash /)
  • parenthesis, braces and brackets in symmetric positions
  • ! and ? are on home-row position for prime access
  • a numlock shortcut (on W + P) for one-handed data entry
  • shortcuts for cut (on X + D), copy, and paste on the left-hand side for right-handed mouse usage

  1. I am using git-subtree for the dependency management here as Github actions don't recognize git-submodules. ↩︎

  2. I use a 36-key layout per default. Additional thumb keys can be configured with the EXTRA_BOT_L and EXTRA_BOT_R macros. Additional "middle-keys" can be configured with the EXTRA_MID macro (see planck_rev6.keymap for an example).

    In order to consitently configure combos and positional hold-taps across keyboards with different physical key specifications, I use a set of "virtual location" macros which map key-positions in the layout to physical locations on the shield. These macros follow a common naming convention, starting with LT0 for the first key on the Left Top-row and ranging to RB4 for the last key on the Right Bottom-row. They need to be defined in the shield-specific keymap-file before sourcing the common base.keymap. ↩︎

  3. This is my attempt at a simple user-space solution until unicode is natively supported. Check out unicode.dtsi for details and read my write up here for a few more pointers and some caveats. ↩︎