Expand documentation
This commit is contained in:
parent
4432e414b9
commit
7e066a0dae
3 changed files with 99 additions and 61 deletions
|
@ -223,7 +223,7 @@ ZMK_LAYER(base,
|
|||
//├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤ ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤ ├──────┤
|
||||
X_LB &kp Z &kp X &kp C &kp D &kp V X_MB &kp K &kp H &comma_morph &dot_morph &qexcl X_RB
|
||||
//├──────┤ ╰─────────────┼─────────────┴─────────────┼─────────────┼─────────────┤ ├──────┤ ├─────────────┼─────────────┼─────────────┴───────────────────────────╯ ├──────┤
|
||||
X_LH <_spc NAV 0 < FN RET X_MH NUM_WORD &ss_cw X_RH
|
||||
X_LH <_spc NAV 0 < FN RET X_MH NUM_WORD &ss_cw X_RH
|
||||
//╰──────╯ ╰─────────────┴─────────────╯ ╰──────╯ ╰─────────────┴─────────────╯ ╰──────╯
|
||||
)
|
||||
|
||||
|
|
BIN
img/keymap.png
BIN
img/keymap.png
Binary file not shown.
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 133 KiB |
158
readme.md
158
readme.md
|
@ -4,7 +4,7 @@ This is my personal [ZMK firmware](https://github.com/zmkfirmware/zmk/) configur
|
|||
It consists of a 34-keys base layout that is re-used for various boards, including my
|
||||
Corneish Zen and an Advantage 360 pro.
|
||||
|
||||
## *Key* features
|
||||
## Highlights
|
||||
|
||||
- clean keymap + unicode setup using helper macros from
|
||||
[zmk-nodefree-config](https://github.com/urob/zmk-nodefree-config)
|
||||
|
@ -13,21 +13,14 @@ Corneish Zen and an Advantage 360 pro.
|
|||
larger boards by padding it via a modular structure of "extra keys"
|
||||
- ["timer-less" homerow mods](#timeless-homerow-mods)
|
||||
- combos replacing the symbol layer
|
||||
- a smart-layer implementation for ZMK that automatically toggles the numbers
|
||||
layer
|
||||
- long-pressing the arrow-cluster yields home, end, begin/end of document, and
|
||||
fwd/bwd-delete words
|
||||
- sticky shift on right thumb, double-tap (or shift + tap)[^1] activates
|
||||
caps-word
|
||||
- <kbd>shift</kbd> + <kbd>,</kbd> morphs into <kbd>;</kbd> and
|
||||
<kbd>shift</kbd> + <kbd>.</kbd> morphs into <kbd>;</kbd> (freeing up the
|
||||
right pinky for <kbd>? / !</kbd>)
|
||||
- <kbd>shift</kbd> + <kbd>ctrl</kbd> + <kbd>,</kbd> morphs into <kbd><</kbd>
|
||||
and <kbd>shift</kbd> + <kbd>ctrl</kbd> + <kbd>.</kbd> morphs into
|
||||
<kbd>></kbd>
|
||||
- smart numbers and smart mouse layers that automatically toggle off when done
|
||||
- sticky shift on right thumb, double-tap (or shift + tap)[^1] activates caps-word
|
||||
- arrow-cluster doubles as <kbd>home</kbd>, <kbd>end</kbd>, <kbd>begin/end of
|
||||
document</kbd> on long-press
|
||||
- more intuitive shift-actions: <kbd>, ;</kbd>, <kbd>. :</kbd> and <kbd>? !</kbd>
|
||||
- <kbd>shift</kbd> + <kbd>space</kbd> morphs into <kbd>dot</kbd> →
|
||||
<kbd>space</kbd> → <kbd>sticky-shift</kbd>
|
||||
- "Greek" layer for mathematical typesetting (activated via sticky-layer combo)
|
||||
- "Greek" layer for mathematical typesetting (activated as sticky-layer via a combo)
|
||||
- modified Github Actions workflow that recognizes git-submodules
|
||||
- automated
|
||||
[build-scripts](https://github.com/urob/zmk-config/tree/main/scripts#readme)
|
||||
|
@ -147,14 +140,19 @@ PRs, you might find this [ZMK-centric introduction to
|
|||
Git](https://gist.github.com/urob/68a1e206b2356a01b876ed02d3f542c7) helpful.
|
||||
|
||||
|
||||
## Combo setup
|
||||
## Using combos instead of a symbol layer
|
||||
|
||||
My layout makes heavy use of combos. Thanks to `global-quick-tap` for combos
|
||||
(introduced in above mentioned PR #1387), combo misfires are rare, even when
|
||||
rolling keys. Most of my combos are bind to symbols, replacing the usual
|
||||
symbols layer seen on many sub-40 keyboard layouts. The combos are designed so
|
||||
as to put the most used symbols in easy-to-access locations while also making
|
||||
them easy to remember. Specifically:
|
||||
I am a big fan of combos for all sort of things. In terms of comfort, I much prefer them
|
||||
over accessing layers that involve lateral thumb movements to be activated, especially
|
||||
when switching between different layers in rapid succession.
|
||||
|
||||
One common concern about overloading the layout with combos is that they lead to
|
||||
misfires. Fortunately, the above-mentioned PR #1387, also adds a `global-quick-tap` option
|
||||
for combos, which in my experience all but completely eliminates the problem -- even
|
||||
when rolling keys on the home row!
|
||||
|
||||
My combo layout aims place the most used symbols in easy-to-access
|
||||
locations while also making them easy to remember. Specifically:
|
||||
|
||||
- the top vertical-combo row matches the symbols on a standard numbers row
|
||||
(except `+` and `&` being swapped)
|
||||
|
@ -162,37 +160,70 @@ them easy to remember. Specifically:
|
|||
aligns with superscript `^`; minus `-` aligns with `+`; division `/` aligns
|
||||
with multiplication `*`; logical-or `|` aligns with logical-and `&`)
|
||||
- parenthesis, braces, brackets are set up symmetrically as horizontal combos
|
||||
- cut (on `X + D`), copy, and paste are on the left side for one-handed mouse
|
||||
use
|
||||
- `L + Y` activates Greek layer for the next key press, `L + U + Y` activates the shifted
|
||||
Greek layer the next key
|
||||
- `tap`, `esc`, `enter` are on horizontal combos
|
||||
- left-hand side combos for `tap`, `esc`, `enter`, `cut` (on <kbd>X</kbd> + <kbd>D</kbd>),
|
||||
`copy` and `paste` that go well with right-handed mouse usage
|
||||
- <kbd>L</kbd> + <kbd>Y</kbd> switches to the Greek layer for a single key
|
||||
press, <kbd>L</kbd> + <kbd>U</kbd> + <kbd>Y</kbd> activates one-shot shift in
|
||||
addition
|
||||
- <kbd>W</kbd> + <kbd>P</kbd> activates the smart mouse layer
|
||||
|
||||
## Experimental changes
|
||||
## Smart layers and other gimmicks
|
||||
|
||||
- I recently reduced my core layout to 34 keys. Backspace and Delete are now on
|
||||
my Navigation-layer. To make room for these keys, I have added hold-taps to
|
||||
the arrow cluster, which now double as Home/End and Beginning/End of
|
||||
document. I really like the new navigation cluster and will likely keep it in
|
||||
one way or another
|
||||
- Inspired by Jonas Hietala's
|
||||
[Numword](https://www.jonashietala.se/blog/2021/06/03/the-t-34-keyboard-layout/#where-are-the-digits)
|
||||
for QMK, I implemented my own version of [Smart-layers for
|
||||
ZMK](https://github.com/zmkfirmware/zmk/pull/1451). It is triggered via a
|
||||
single tap on my Num-key (holding the key will activate the num layer as
|
||||
usual without triggering Numword). Similar to Capsword, Numword continues
|
||||
to be activated as long as I type numbers, and deactivates automatically on
|
||||
any other keypress. I found that I use Numword for most of my numbers
|
||||
typing. For single digits, it effectively is a sticky-layer, but
|
||||
importantly I can also use it for multiple digits. The only case where it
|
||||
doesn't deactivate automatically is where immediately after a digit I would
|
||||
type any of the letters on which my numpad is located (WFPRSTXCD), which is
|
||||
rare, but does happen. For these cases I have a CANCEL key on my Nav layer
|
||||
that cancels both Numword and Capsword.
|
||||
- Since the switch to 34 keys, I freed up the tap-position on my left-most
|
||||
thumb key. For now I added a secondary Bspc, but I am still searching for a
|
||||
better use. (I tried adding Repeat here but I found that it doesn't work well
|
||||
adjacent to space, which requires to much lateral thumb-movements)
|
||||
##### Numword
|
||||
|
||||
Inspired by Jonas Hietala's
|
||||
[Numword](https://www.jonashietala.se/blog/2021/06/03/the-t-34-keyboard-layout/#where-are-the-digits)
|
||||
for QMK, I implemented my own version of [Smart-layers for
|
||||
ZMK](https://github.com/zmkfirmware/zmk/pull/1451). It is triggered via a
|
||||
single tap on "Smart-Num". Numword continues to be activated as long as I
|
||||
type numbers, and deactivates automatically on any other keypress (holding it activates
|
||||
a non-sticky num layer).
|
||||
|
||||
After using Numword for about 6 months now, I have been overall very happy with it. When
|
||||
typing single digits, it effectively is a sticky-layer but with the added advantage that
|
||||
I can also use it to type multiple digits.
|
||||
|
||||
The main downside is that if a sequence of numbers is *immediately* followed by any of the
|
||||
letters on which my numpad is located (WFPRSTXCD), then the automatic deactivation won't
|
||||
work. But this is rare -- most number sequences are terminated by `space`, `return` or some form
|
||||
of punctuation/delimination. To deal with the rare cases where they aren't, there is a
|
||||
`CANCEL` key on the navigation-layer that deactivates Numword, Capsword and Smart-mouse.
|
||||
|
||||
##### Smart-Mouse
|
||||
|
||||
Similarly to Numword, I have a smart-mouse layer (activated by comboing
|
||||
<kbd>W</kbd> + <kbd>P</kbd>), which replaces the navigation cluster with
|
||||
scroll and mouse-movements, and replaces the right thumbs with mouse buttons.
|
||||
Pressing any other key automatically deactivates the layer.
|
||||
|
||||
##### Capsword
|
||||
|
||||
My right thumb triggers three variations of shift: Tapping yields
|
||||
sticky-shift (used to capitalize alphas), holding activates a regular shift, and
|
||||
double-tapping (or equivalently shift + tap) activates ZMK's Caps-word behavior.
|
||||
|
||||
One minor technical detail: While it would be possible to implement the double-tap functionality
|
||||
as a tap-dance, this would add a delay when using single taps. To avoid the delays, I
|
||||
instead implemented the double-tap functionality as a mod-morph.
|
||||
|
||||
##### Multi-purpose Navigation cluster
|
||||
|
||||
To economize on keys, I am using hold-taps on my navigation cluster, which yield `home`, `end`,
|
||||
`begin/end of document`, and `delete word forward/backward` on long-presses.
|
||||
|
||||
##### Swapper
|
||||
|
||||
I am using [Nick Conway](https://github.com/nickconway)'s fantastic
|
||||
[tri-state](https://github.com/zmkfirmware/zmk/pull/1366) behavior for a
|
||||
one-handed Alt-Tab switcher (`PWin` and `NWin`).
|
||||
|
||||
##### Repeat
|
||||
|
||||
I recently switched to 25g-chocs on one of my keyboards. I already was a big fan of
|
||||
combos prior to that (even with heavy MX-switches). But with the light chocs, I find
|
||||
that I can now even use them for regular typing. While I haven't yet tried placing alphas
|
||||
on combos, I am currently experimenting with a `repeat` combo on my home row that I
|
||||
use to make writing double-letter words more fun.
|
||||
|
||||
## Issues and workarounds
|
||||
|
||||
|
@ -202,22 +233,29 @@ any functionality (to the contrary, I found that ZMK supports many features
|
|||
natively that would require complex user-space implementations in QMK). Below
|
||||
are a few remaining issues:
|
||||
|
||||
- ZMK does not yet support tap-only combos
|
||||
([#544](https://github.com/zmkfirmware/zmk/issues/544)). Workaround: pause
|
||||
briefly when chording multiple HRMs together on positions that otherwise would trigger
|
||||
a combo.
|
||||
- OS sleep is not yet implemented ([#1077](https://github.com/zmkfirmware/zmk/issues/1077)).
|
||||
Workaround: use sleep-macro instead.
|
||||
- `&bootloader` doesn't work with Planck_rev6
|
||||
([#1086](https://github.com/zmkfirmware/zmk/issues/1086)). Workaround: Manually press
|
||||
reset-button.
|
||||
- ZMK does not yet support "tap-only" combos
|
||||
([#544](https://github.com/zmkfirmware/zmk/issues/544)). As a workaround, one
|
||||
can pause briefly when chording multiple HRMs together on positions that
|
||||
otherwise would trigger a combo. But this is at the top of my ZMK-wishlist.
|
||||
- Another item on my wishlist are adaptive keys
|
||||
([#1624](https://github.com/zmkfirmware/zmk/issues/1624)). This would open
|
||||
the door for things like <kbd>space</kbd><kbd>space</kbd> becoming
|
||||
<kbd>.</kbd><kbd>space</kbd><kbd>sticky-shift</kbd>. (Using tap-dance isn't
|
||||
really an option here due to the delay it adds)
|
||||
- A minor thing is that ZMK doesn't yet support any keys on the
|
||||
desktop-user-page; e.g., OS sleep
|
||||
([#1077](https://github.com/zmkfirmware/zmk/issues/1077),
|
||||
[#1535](https://github.com/zmkfirmware/zmk/issues/1535))
|
||||
- Very minor: `&bootloader` doesn't work with stm32 boards like the Planck
|
||||
([#1086](https://github.com/zmkfirmware/zmk/issues/1086))
|
||||
|
||||
[^1]: Really what's happening is that `Shift` + my right home-thumb morph into
|
||||
caps-word. This gives me two separate ways of activating it: (1) Holding the
|
||||
homerow-mod shift on my left index-finger and then pressing my right home-thumb, which
|
||||
is my new preferred way. Or, (2) double-tapping the right home-thumb, which also works
|
||||
because the first tap yields sticky-shift, activating the mod-morph upon the second
|
||||
tap.
|
||||
tap. But even when only activating via double-tapping, this implementation is advantageous
|
||||
compared to using tap-dance as it does not create any delay when single-tapping the key.
|
||||
|
||||
[^2]: I call it "timer-less", because the large tapping-term makes the behavior
|
||||
insensitive to the precise timings. One may say that there is still the
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue