Skip to content

keyboard

NNB edited this page Jun 7, 2022 · 30 revisions

Keyboard design

All thought about keyboard and input device

Image from Corne-ish Zen Review by Evan

๐Ÿ’ก About

This is a quick tour on my keyboard design, pointer method and WM workflow.

๐Ÿ“ Design

My old prefer keyboard and layout

I used to think that a 4x6 Dactyl-ManuForm keyboard have the lowest keys count that I can use without sacrificing convenient. This is how I design my old keyboard layout:

Keyboard layout editor file

๐Ÿ”ก Default layer

All character and symbol keys are available on the default layer, this is important for programer who use those key frequently.
The -, = keys group are used very frequently therefore they deserve to be on the thumb cluster.

Speaking of thumb cluster:

  • All Mods key are now on the thumb cluster to avoid RSI pinky problem.
  • Two Space keys on both side to improve accessibility for drawing with tablet, gaming or for left-hand users.
  • Backspace and Delete keys are placed symmetrically on both side, make it easy to delete back and fore.
  • Escape and Enter are also here, But the Tab key is not so user could Alt + Tab without moving their hand out of the home row.

The SYS=, SYS- and SYS+ keys:

  • By default they are volume_mute, volume_up and volume_down.
  • When holding Shift, they are microphone_mute, brightness_up and brightness_down.

๐Ÿ”ฃ Function layer

The FN key behave following these rules:

  • If the user hold down it, they can access the function layer and combine it with any Mod keys they want.
  • If the user tap it, it will send a GUI tap for WM usage.

If you just using some normal desktop environment, alternatively you can set it so user can tap to enable GUI for one keypress (combinable with other Mod keys).

The function layer design are extremely simple and easy to remember:

  • F1 - F12 all lined up on the bottom row.
  • All number keys are on the left hand spread in two row instead of the 3 row numpad design so the fingers don't have to often reach to the bottom row unnaturally.
  • Arrow keys are inverted T shape + PGUP, PGDN on the right hand similar to Thinkpad's Arrow and PGUP, PGDN keys.

I like to have a tiny/<40% keyboard because I prefer my finger to stay comfy on the home row without stretching out too much. Of course this mean that some keys need to be on the new layer, but many people, even me in the past, designed the system keybind with 3 to 4 layers which make the keymap unnecessarily complicated. Therefore I will only make 2.5 layers on this design:

  • The default layer.
  • One simple function layer.
  • And a vertical combos "layer".

I also like to have my keyboard split with thumb cluster for maximal ergonomics, therefor any split 3x5+3 is good enough. After years of keyboard layout brainstorming, this is what I come up with, I call it Dead Sim layout because this layout is dead simple:

Keyboard layout editor file

On each keycap:

  • The label on top represent the keybind on the default layer.
  • The small label in the middle represent the keybind on the function layer.
  • The underlined label in the bottom represent the modifier/layer that will be activate only when the user hold that keydown, tap it will simply sent that current layer key's keybind (mod-tap).

The grey joint between two keys represent the keybind when pressing those two keys at the same time (combos).

If the user hold down the key with underlined label for 2 second with out pressing other key in that period, it will instead hold down that current layer key's keybind (this also work if you holding down other keys before hold down the key with underlined label).

๐Ÿ”ก Default layer

All Mods key are now on the thumb cluster to avoid RSI pinky problem. But I also add CTRL mod-tap to ENTER so user can perform CTRL+ALT+... shotcut without leaving the home position.

๐Ÿšซ Why I don't use home row mods

Although Home row mods is pretty convenient improvement over tradition mod key positions, I bring a lot of complexity to the user experience and even the layout it self (e.g1, 2, 3). And if you are a fast typer, you could accidentally invocation of key shortcuts.

All character, number, symbol and important function keys (SPACE, ENTER, TAB, ESC, BS) are all available on the default layer, all require only one keypress, this is important for programer who use those key frequently. But this layout only have 36 keys, how can we cramp all those keybind without adding some extra layer? That is when we use vertical combos:

๐Ÿšฆ Vertical combos

Vertical combos is combos bind to two adjacent keys on the same column, user trigger vertical combos by pressing those two keys at the same time in between those key with one finger.

๐Ÿ“” Story

When I used to think the 4x6 Dactyl-ManuForm keyboard is the smallest keyboard that I can use without making the layout nonsensically complex. I browsing through the Absolem Club's Discord and stumbled upon this comment this comment. At the first glance I thought this is just an average complicate layout, because I used to think: "those small keyboard only usable with complex layout". Then I saw the combos section, let's it sink in for a few second, I realize how brilliant it is.

โ“ Reason

Add vertical combos doesn't come with any drawback surprisingly, think about it:

  • Because on the keyboard especially ortholinear one, it's designed so each column only got assigned to one finger, even two columns got assigned to the index fingers. So user will hardly ever accidentally trigger those combos with two finger when they just want to use non combos keybind.
  • What applications/games required user to press a combos of two keys on the same column to perform an action? Non, or at least it's extremely rare! Therefore it's doesn't affect the user experience with non combos keybind on applications/games.

Compared to binding key to a separate layer which require 2-3 keypress to trigger a keybind, vertical combos only require 1 keypress. Of course vertical combos is a bit more difficult than pressing a regular key but it's still faster/easier than pressing key on other layer. And pressing vertical combos is not even that clumsy, stenography user have use this daily for decade comfortable.

Using vertical combos is like having 2 more rows on your keyboard that you can easily reach without stretching much. It's also nearly double the keybinds count.

๐Ÿ› ๏ธ Execution

Inspire from the stenography, keycaps should have vertical gap between two keys as short as possible.

Because the top vertical combos row is easier to reach than the bottom vertical combos row:

  • The numbers row will be on the bottom because according to this chart numbers is less frequently use that symbols.
  • Symbols and a few function keys will be place on the top row, those keys will be place roughly to the same chart.

๐Ÿšฅ Horizontal combos?

Why not using horizontal combos? because user can accidentally trigger the combos pretty easy, examples:

  • A combo between W and E could be accidentally trigger when type the word "we" too fast.
  • A combo between E and R could be accidentally trigger in a FPS game when player try to reload with R while move forward with E (using ESDF).

But as I previously stated:

Because on the keyboard especially ortholinear one, it's designed so each column only got assigned to one finger, even two columns got assigned to the index fingers...

So we could adding combos to the keyboard like this without accidentally trigger the combos. Though I don't do this because my current layout already have enough keys, this just add more complexity. Plus it's will be a bit more difficult to press on keyboard with column offset.

๐Ÿ”ฃ Function layer

The SYS=, SYS- and SYS+ keys:

  • By default they are volume_mute, volume_up and volume_down.
  • When holding Shift, they are microphone_mute, brightness_up and brightness_down.

On the right pad, arrow keys are inverted T shape + PGUP, PGDN on the right hand similar to Thinkpad's Arrow and PGUP, PGDN keys. INS and BREAK are include for sysadmin operation. NEXT, PREV and PLAY (play/pause) are include for basic media playback.

๐Ÿ’ป Workflow

my workflow can be summed up like this:

  • No tiling.
  • No workspace.
  • Maximize da UX.

Basically "Less is more".

I have explain why I prefer floating WM over tiling WM on WHICH so go check it out then come back. After reading that you must have notice that I alway full screen every apps, so how do I manipulate windows and navigate between them? The answer: I use menu4all (preview), a menu that:

  • Display time and battery percent.
  • List all windows and WM actions with a prefix characters.
  • Similar to link hints, if user type out that 1-2 prefix characters it will switch to that window or perform that action.

I bind to the GUI key tap, user can still hold down that key to perform other shotcut.

If user press GUI when inside the menu, it will switch to the previous focused window, this make switching back and forth between 2 windows very fast and convenient.

With this I can navigate through windows blazing fast, with just 2-3 keypress to jump to the exact window that I want. Way faster that the tradition tiling WM where you have to switch to the correct workspace, spam ALT+TAB or GUI + [Arrow keys] to the exact window that I want which requires from 2 sometime up to 7 keypress.

Because of this method plus I already full screen most of my windows, I don't find workspace (virtual desktop) to be useful to my workflow anymore, therefore I ditch it.

๐Ÿ–ฑ๏ธ Pointer device

Although I use a keyboard focus workflow, I'm not obsessed with doing everything with a keyboard. Some task like move/resize window, web browsing, graphic design... is better suited for pointer device.

I have switch from using mouse to tablet and now I'm mainly using touchpad because it's very ergonomic. Having a touchpad right under my keyboard is super convenient. No need for link hints, I can move my two thumbs on the touchpad to quickly navigate while still maintain my hands on the typing position. And it's not slow at all, I can easily navigate the web at 9/10 the speed of using mouse without moving my hand far to the right.

Current use cases:

  • Touchpad for regular uses.
  • Tablet for drawing or when in heavy uses.
  • Mouse only plugged in for gaming.

๐Ÿ’Œ Credits

Special thanks to: