The layout and key functions of this keyboard have evolved substantially since its initial use. Since I run the QMK firmware on the Pro Micro, I have fine-grained control over the behaviour of every key. The changes I made over time, aimed to reduce finger movement and increase typing comfort – to a point where some of the keys of the board remain used altogether (those keys would be eliminated in a v2 of the Lattice keyboard). I expect more changes to the firmware to be pushed to my Github repo in the future.
The current firmware compiles with QMK v0.17.
Optimising Keyboard Layers
I went with Colemak-DH as the base layout and incorporated the NEO layer 3 for symbols, similar to what has been done by Jan Lunge. Just like him, I also added one layer for navigation and numbers. Then I made the following modifications for a more seamless interaction between the layers:
- As a user of the Vim editor, I got used to some of its convenient movement commands. In Vim, keys w and b jump forward and backward between words, which is mapped to CTRL + Arrow Left and CTRL + Arrow Right in the navigation layer. Similarly, keys ^ and $ in the symbol layer are aligned with Home and End in the navigation layer.
- In the navigation/number layer, numbers are arranged like a Numpad so they can be typed with one hand. The symbols for math operations +, -, *, / are arranged around the numbers so no layer switching is necessary when doing calculations.
- I added to the navigation layer two keys to switch Windows desktops, meaning emulating a key combination of CTRL + Win + Arrow Left or CTRL + Win + Arrow Right.
- A double tap on the q key exchanges Colemak with the QWERTY layout. This is implemented with a QMK Tap Dance function.
Reducing Finger Movement
QMK gives many options to reduce the travel distance of the fingers. The keys I found most straining were the far-away ones which I had to reach with my right pinkie. Here are my attempts to keep by fingers as close to their natural position as possible:
- Use Home Row Modifiers which essentially move modifier keys onto the centre row of the keyboard where the fingers naturally rest. They will act as a modifier key when held and used in combination with another key, and act as a normal key when tapped and released. They come in three following flavours, which resulted in the following home row:
TD(navnum), LT(symbol, r), MT(Shift, s), MT(CTRL, t), g, m, MT(CTRL, n), MT(Shift, e), LT(symbol, i), LT(navnum, o)- Mod Tap keys implement common system keys like CTRL, Shift or Alt.
- Layer toggle functions switches to a specified layer when held, so that any key pressed simultaneously with it accesses that layer's corresponding key code.
- Tap Dance can configure the behaviour after any number of key taps/holds. In my case, single tap yields a, single hold switches to navigation/number temporarily (like the layer toggle above). Double tap locks the navigation/number layer.
- Backspace is probably the key furthest away, even more so with the ortholinear layout. I moved Backspace to the position of Caps Lock. The Del key is accessible through Shift + Backspace.
- Caps Lock can be activated by double tapping Left Shift using a Tap Dance implementation. But in the future, I might use that key for Caps Lock only because Shift is already on the home row.
- Enter key is another hard-to-reach key for my pinkie. It took the place of the Right Shift key, since that is also found on the home how.
- A separate layer with numbers arranged like a Numpad helps to avoid using the upper number row of the keyboard.
Tuning QMK Parameters
The behaviour and timing of QMK keystrokes has been adjusted precisely. A caveat of overloading keys with so many functions is that an unintended action might be triggered. The following adjustments reduce the chance of that happening:
- Reducing the DEBOUNCE parameter seemed to decrease the lag between a keystroke and the character appearing on screen (but the effect is admittedly minimal).
- The TAPPING_TERM decides how long key needs to be pressed in order to count as a hold, not a tap. I reduced this value from 200 to 175 ms.
- PERMISSIVE_HOLD makes the hold action more dominant, as it does need to wait for TAPPING_TERM, but instead counts as a hold if the whole key combination is completed within the tapping term. A Github post elaborates how to get a similar behaviour for Tap Dances.
- IGNORE_MOD_TAP_INTERRUPT applies PERMISSIVE_HOLD to Mod Tap keys, which would else be treated as special cases and strongly prefer the hold action. That eliminated unintended holds.
- TAPPING_FORCE_HOLD (recently changed to QUICK_TAP_TERM) enables the hold action if a key is tapped and held in quick succession. By default, that would trigger two successive taps.
QMK offers a function get_tapping_term() that allows the user to specify tapping terms for individual keys. It can also be applied to Tap Dances. I increased the tapping term for Caps Lock, because my left pinkie sometimes wasn't fast enough to double tap within 175 ms.
Learning How to Type with a New Layout
Rewriting the muscle memory for Colemak and the new key positions took quite a bit of time. Even doing minor changes to the layers, like the ones mentioned above, needed at least 1 to 2 weeks to be fully incorporated into my typing habits. I wouldn't recommend making drastic changes too often.
I started learning Colemak using keybr.com. Instead of real words, you are asked to type common letter combination in the English language. They start off with only a few fingers and add more one by one. Then I moved on to monkeytype for the following progression:
- Typing of lists of words, with all lower-case letters to reinforce the letter combinations.
- Adding capitalisation and punctuation.
But I felt that, after a while, the word lists are quite repetitive and and didn't help to improve my day-to-day typing. - Using extra long (called thicc) quotes to diversify the vocabulary and also practice endurance.
But after a few months I got bored of typing the same quotes over and over again. - Saving chapters of books, which I wanted to read anyways, as custom Long Text (Book Mode). This mode allows you to interrupt the typing (and generate a result) even before the text is completely finished. I usually upload one chapter as a single Long Text and break after each section, which give me continuous typing sessions of 20 to 30 minutes.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.