ENDe - my final keyboard layout, why and how :-)

Background
I am using the UHK now for a year and very quickly got to a nice configuration. But over the last year my configuration has changed significantly. I think I am now to a large degree arrived at my final configuration. It still gets updated a bit from time to time, but those are very minor changes and the concept as such seems to work very well.

My design is implemented on the UHK, but I took great care that it does translate to column-staggered keyboards as well and that I can use the same configuration on a laptop keyboard, by using software (Kanata) to provide the same fancy functions.

I went the full route and even created a custom keyboard layout, optimized for English, German and Dutch, but you do not have to go the full way and can just pick any of the ideas and most of them can be applied to qwerty, Colemak or whatever layout you are using.

My design principles

  1. Everything is optimized for touch typing with 10 fingers – home row rules.

  2. Differentiates between different “modes”:

  • Text input → first priority, needs to be comfortable and not slow down typing in any way. Therefore there are no held layers and no features like AutoShift. All characters need to be easy accessible. Special, seldom used characters and symbols, like Greek do not get a premium position.
  • Navigation and Editing → super important mode, which needs to be fully available from the home-row position and does not require long finger stretches (better position for Backspace, Enter, ESC,…)
  • Computer use functions (e.g. searching, window management, Alt-Tab, Clipboard manager…) → get super comfortable shortcuts for most used ones
  • Media consumption, web-browsing → shortcuts for often used functions like new tab, or volume. Should (mostly) work one-handed, so that one hand can stay on the mouse.
  • Input of special chars, foreign characters of languages not actively used and seldom used symbols, → can be accessed easily, but do not need to be available at 50 wpm or higher speed. Easy to remember, but slower input is fine.
  1. Compatible with most keyboards (ANSI, ISO layout, 6-row columnar stagger…)

  2. Others do not need to be able to use my keyboard and I do not care really if I can use others keyboards (fast), because I almost exclusively use my own personal computers (incl. my work laptop). So all the cool stuff has to work on my machines. For using other persons computers I either live with the slow(er) standard keyboard or run my config via the Kanata software (no admin rights needed).

Implementation

My design suggestions are – in order of importance and most “gain” you get. The first two being most important:

  1. A navigation and shortcut layer is realized with the held space-key. In contrast to typing holding down space-key is fine, because one does not navigate in the speed of 50 wpm or higher. Also the thumb lends itself much better than any other finger to be used with the rest of the hand. In general all layers are activated with the opposite hand, but for the thumb it can be o.k. to use the keys on the same hand. I sometimes make use of that while using the mouse with my other hand. For example for copy and paste or Alt-Tab.

  2. a symbol layer for additional characters and symbols is realized with the CapsLock and the Quote-key (qwerty position) as modifier keys (can be adjusted for your layout if wanted)

I designed my layout around to have CapsLock and the Quote-key (US layout) free as a modifier key. But even when you are using standard qwerty I think it can be a good idea to copy that approach putting the symbol layer on those two keys. You will only loose one character key which is not too important and you can easily place it on the many free places you win on the new (extra) symbol layer.

Note: AltGr is often used for extra symbols. I think this is a bad solution, because AltGr is at different locations on different standard keyboards (laptop!), is not available on both hands and is not easy to reach from the home-row position anyways. It is not existent on most columnar-staggered keyboards as well. Finally AltGr sometimes gets mixed up in some applications and does not function as expected. So IMO a very bad “solution” to create an extra layer.


  1. Shift is (almost) in the standard position. Left Shift is the standard position (on ANSI) and on the right side I use the key which is mirrored to the left side and much easier to reach than the standard right Shift key. On an ISO keyboard I would use the relevant easy to reach key on the left side as well and not use the standard left Shift, because it is hard to reach.

  2. no keys are held to type characters – one-shot helps to get a better flow, that means both the Shift and Symbol layer are accessed via one-shot keys. Optionally the layer-keys (like Shift) can be held down, for example when typing a few characters on the same layer.

  3. Thumb keys are not used for mission critical stuff, but just for nice-to-have functions (mouse mode for example), because on a laptop keyboard the important things need to function in the same way and there are no thumb keys on a laptop or standard keyboard. I also think that it is better not to overload the thumb. Two main functions for the thumb (Space tapped and Navigation layer while held) is enough. The wide space key of the UHK or a standard keyboard is good IMO, because it allows comfortable positioning for different hand sizes, but also for different angles at which the keyboard is used and how one prefers to hold the thumb. Everything is possible, in contrast to 1u-key small thumb keys which force a specific hand position.

  4. The modifiers Ctrl, Win and Alt are realized as “home row mods” – they are only needed for columnar keyboards with fewer keys, but are an additional option on standard keyboard layouts as well. That could be done on the home-row, but I use the bottom row, because due my layout this means that no frequent used keys are there and I never have problems with false triggers – also when typing fast. It also has the advantage that the Shift-key is on the same row, which is not realized as a “home row mod”, because that would mean you would need to keep the key held – disturbing the typing flow a bit!

  5. Greek letters and other stuff one only needs occasionally does not need to be put into the main keyboard layout IMO, but can be realized with software hotstrings, like Autohotkey or Espanso (e.g. typing .alpha could print out α) or via a clip manager.

  6. I use my own custom character layout. This is by far the least important part in the puzzle. I even would not recommend to learn something else than qwerty in general. At least not when you are already a fast touch typist with qwerty. But it can be an option if one really wants to. The gain is mostly comfort and to be able to get potentially easier faster – still with lots of practice. One needs to be willing to deal with the learning efforts and incompatibility although. For me it was an experiment, which I did, because I wanted to type with less jumping around, but also wanted to try out how I can learn new stuff. It takes serious efforts! My goal is to apply the learning experience, about how to learn something new, to learning other things like playing an instrument and so on.

The game changer is the extra symbol and navigation layer. The rest is nice-to-have.

My current setup:

I use Windows with ‘US international’ keyboard as a basis, but change that via the UHK (or other software, like Kanata) to my custom character layout, which I call ENDe. It is my own variation of the AdNW/ KOY layout and optimized for English, German and Dutch. I will explain the layout on my upcoming YouTube-Channel.

Base layer

Most should be self-explaining. Note that I use the the “angle-mod” fingering, which mirrors the right hand as good as possible. Here the left hand uses:
Shift-key: pinky
Z-key: ring finger
X-key (Q in my layout): middle finger
C-key (.-key in my layout): index finger
V-key (X-key in my layout: index finger

What the B-key is in qwerty is not used at all in my layout, because it is hard to reach and not existing on a columnar-stagger layout. You can use it for functions you need often. I put PrintScreen there. When you use qwerty or Colemak or the like I still strongly suggest to use the alternative angle-mod fingering as well.

Important is that both space-keys indeed trigger space, when tapped and switch to the Navigation layer (MOD-layer in the UHK) when held. This makes sure it also works an a standard keyboard with only one large space-key!

The mouse-layer key (left of the left space key) can be reasonably easy used with the left thumb and is there for the rare occasions I do not use the external mouse or UHK-trackpoint. The mouse-layer can be used held, but also functions as a toggle to the mouse-layer when held.

The right bottom keys are extra arrow-keys, which I like to have in addition to the arrow keys on the navigation layer, which I use mostly. But sometimes it is more convenient to be able to just press a single key. The same is true for the Backspace and Delete and Enter-key, which are (mostly) in the standard position. I do not use them while typing, but while browsing one-handed that is an additional option, which I sometimes use.

The mouse module (trackpoint for me) of the UHK is nice. For drag’n drop operations I have the left-click on the left case-button. On the trackpoint module I have left-click on both keys, because depending on where you are with the index finger, after using the trackpoint, sometimes it is more convinient to press the left or the right button. The middle and right click are realized by longer-held clicks on the two module mouse buttons. That is fine, because in 99 % I need the left click only.

Navigation (MOD) layer

Also mostly self-explaining.

The most used shortcuts (copy, paste…, Alt-Tab, new tab, previous window/ tab, next window/ tab, Ctrl-W and a few others) get a prime position. Arrows are Vim-style like, which I prefer. Enter and Delete are easy to reach and I use those in 99%. Because the layer-switch with the thumb is so comfortable, it is no problem to have to press two keys – hands are in the home-row position anyways. So no extra effort. Backspace is in prime position on the home-row as well. One key to the right is Ctrl-Backspace to delete whole words. Similar Ctrl-arrow (left and right) to jump whole words. The key for paste functions normal when tapped. If held a bit longer it will open my clipboard manager (ClipAngel).

The combination of helding down shift and using the arrow-keys or Ctrl-Arrow keys works fine as well.

One key is dedicated to open my search program (Everything).

An IMO clever place for ESC is using the thumb keys. Regardless which thumb I am using for getting into the navigation layer – pressing the other thumb in addition will trigger ESC. This is a tiny incompatibility with a standard keyboard with only one space-bar. For that reason there is an extra ESC option (top right), when I am using my laptop keyboard and want ESC in easy reach.

Symbol layer (Fn2 in my UHK layout)

Nothing special here. It holds the characters I do not have in the other layers, or want an easier to reach position. At the moment I still have the symbols on my number-keys in the standard position, but mostly use the alternatives in the symbol layer.

BTW, I type numbers in the standard position. Have done that blind for years and do not really need or want a separate number layer. I have experimented a bit with it (Fn3-layer), but have not really used it so far.

Noteworthy is that my symbol layer includes the German umlauts äöü and Dutch trema ëï, which I do not have on my base layer. That works fine. They sit on the place where the relevant characters aeiou are in my base layout.

Mouse-layer

I do not use the layer much, therefore not fully optimized yet. Idea is to have mouse and media functions (while browsing) there available. I will get to further optimize that, when I see that need or expect a real benefit. I sometimes use basic mouse cursor, when I just have the UHK, but the trackpoint module disconnected, when in a hotel bed for example.

Fn-layer

Just has some UHK related keys (switching keymaps, LED control…)

Macros
Some relevant macros, which might be helpful (let me know if more detailed explanation is needed or the screenshots of the layer are clear enough):


// base mouse layer on
// toggle to mouse layer (with one click), hold works as well and does not toggle then.
holdLayer mouse
ifInterrupted break
ifPlaytime 250 break
toggleLayer mouse


// mouse - untoggle
holdLayer mouse
unToggleLayer


// base - one-shot shift
set backlight.constantRgb.rgb 0 255 0
oneShot holdKey iS-
set backlight.strategy functional


// base - space mod
// tap: space, hold: mod 
set secondaryRole.advanced.timeout 200
// set secondaryRole.advanced.timeoutAction secondary
// set secondaryRole.advanced.triggerByRelease true
ifSecondary advancedStrategy goTo secondaryaction
primaryaction: final tapKey space
secondaryaction: final holdLayer mod

ENDe layout - sneak preview

Here a graphic which shows how my custom layout is setup. It favors hand alterations, but also has many nice (inward) rolls. The graphic shows the remaining finger movements of both hands and also shows from which key to which key most movements are. The graphic shows a combination of English, German and Dutch – each a third.


For comparison the qwertz-layout (German qwerty variant)

In case you wonder, Colemak is surely better than qwerty, but IMO does not gain enough to warrant learning a new layout. Left hand side is fine, but right hand side is way too busy, which does not feel good IMO.

6 Likes