Design

1 June 2017

We start at Keyboard Layout Editor (KLE) of course. I initially set out to design an optimal layout for programmers, which was rather ambitious. The problem is that different programming environments have different needs. People using EMACS have different needs to people using Vim, who have different needs to people using a full-blown GUI for coding. So one-size-fits-all will not work.

But I didn't know that when I started....
What I ended up with, after a long process which is detailed on my blog, is the Programmers Keyboard which is currently a pre-defined template in KLE.
Programmers Keyboard initial release

I then developed it further and added bells and whistles, ending up with V2 which is what I thought I would build.

Programmers Keyboard final release

The Alpha key layout is a slightly modified version of Workman-P, meant to be programmer-friendly. I did what I thought was clever, and put the brackets down the middle, had all sorts of possibly-useful currency, Greek and punctuation symbols, one-touch copy/paste/cut/undo/redo/select-all, provision for dozenal/duodecimal support, Pomodoro timer, dual Nav clusters (idea being that lefties could swap them around), and a cool wooden case. In that respect I was aiming for something like what keyboard.io is doing.

And then Xah Lee came along to my blog and suggested, amongst other things, that maybe Workman wasn't the best layout....

Since Xah knows much more than me, that took me to the next phase of this voyage... looking for the best layout for English and programming. I restarted what I had been doing previously (searching for best layout, which led to Workman-P), and found various people had tackled the problem in a more scientific way. I eventually ended up at Patrick's Keyboard Layout Analyzer (KLA), where I spent many hours testing and improving layouts.

Somewhere along the way I met Den and we started trading notes on layouts. This lead via Arensito and ideas from Schizo to the ErgoLinear layout form factor, shown below, which produced the best scores in KLA. We had to modify KLA to accommodate this. In fact there are now three variants of this (one from me and two from Den). After playing some more, I eventually got to a layout which got the best scores on English and programming, and which I could not beat.

ErgoLinear X6.4

There are several unusual things about this layout:

Comparison of layouts vs X6.4

These are the scores as per Den's scoring on KLE. Den's scoring differs from the original in that vertical distance is also counted, as opposed to only horizontal. So it's more accurate. These scores are from the tests I used to compare layouts. Apart from the very technical digit and dates tests, this layout is far above others. Note: lower score is better, we are measuring Effort.

RankLayoutStyleAllEnglishProgOtherTech
1X6.4H ErgolinearErgo116.291.1113.4148
2X6 ErgolinearErgo11798113.7141.5
3BEAKL 4 Mod Ian AltGr 3ANSI123.7100.5118.3156.8
4MTGap TS ErgoLinear 2Ergo124.8104.2122.1151.2
5Maltron ErgolinearErgo126.398.4129160.3
6RSTHD ErgoLinear 2Ergo126.497.2124.8162.9
7Colemak TS ErgoLinear 2Ergo126.7101.3119.5160.1
8Arensito ErgolinearErgo127.7110.8119151.1
9Nawfal ErgolinearErgo129.5109.4121.4156.6
10Dvorak ErgolinearErgo130.6111128.4155.5
11BEAKL5 ErgoLinearErgo131.4109.1126.4160.4
12schizoKBD-shifted ANSI133.9101.4120.8181.8
13Plum ErgolinearErgo137.1118.4131.9161.8
14Arensito ANSI137.4117.2127.1167.7
15Arensito Kinesis Ergo139.7111.3132.3177.1
16Ergodox MTGAP ThumbshiftErgo159.2105.1141.4231.2
17Ian M3 ANSI159.8101.6140.5244.2
18-+T+- HT02a Ergo162.591.8137.2257.2
19Ergodox Colemak ThumbshiftErgo163.4104.1141.1243.3
20Ian R2 pANSI163.8101.8136.3255.9
21Kinesis Advantage Svorak-r Ergo172.2114.8156.2247.8
22Maltron 90 ErgodoxErgo175.5101.3180.9265.9
23AOEYK ANSI177.8112.2179.5265.7
24Kinesis Advantage Colemak Ergo182.5108.5183.4274.1
25Right Pinky's FriendANSI187.2119.2198.7275.4
26Ergodox Norman Ergo194.9122.3190.8286
27Ergodox QWERTY ThumbshiftErgo197.8152.2172.6261.4
28Dvorak Simplified (ie Standard)ANSI198.9124.2211.1295.8
29Aus der Neo-Welt ANSI199.3116.2186.6315.1
30Ian S2 ANSI199.4112203.8315.9
31Halmak 1ANSI199.9116.2202.9311.8
32dangvu ANSI200.3109.1199.2323.5
33Vu Keys ANSI200.3109199.8323.6
34MTGAP ANSI200.8117.2206.3311.9
35SorenK ANSI200.9117.1199.2314.4
36Balance Twelve ANSI202.9112.9188.8328.6
37QGMLWY ANSI203.7115.4202.6323
38Burroughs Bower (typewriter)ANSI203.8118.8200.8319.3
39Colemak ANSI204.2115.9200.9324.1
40Klausler ANSI204.3114.5207.4324.5
41Seruxie ANSI205.7119.2202.8323.1
42HIEAMTSRN ANSI205.9114.5204.4329.5
43DreymaR ANSI206.4122.1208.3319.4
44Kinesis Advantage Qwerty Ergo207.5154.4207.2273.4
45Workman ANSI207.6121.5206.1324.1
46BLOU ANSI208.1121.5209.4324.4
47Capewell ANSI210.4123.8205.4328.7
48Yak ANSI210.5126.3206.4325.1
49Minimak 12-keyANSI210.5126.7207.6324.5
50EAton ANSI210.6116204.2340
51Norman ANSI210.8126.7207.9325.1
52Ergodox QWERTY Ergo213.3157.4207.1284.3
53QWERTY ANSI229.8161.3224.6323.7
54XPeRT ANSI233.1159.3226.7334.5
55BvoFRak EN V0.5ANSI234.7111.7185.3415.4
56Dvorak ProgrammerANSI238.3124.5196.6404.4
57TNWMLC (Worst CarpalX)ANSI247.1191238.7325.2
58Colemak ProgrammerANSI251.9116.6202.6449.3
59Workman ProgrammersANSI255.7122.1210.1449.8
60QWERTY ProgrammerANSI274.3162.3230.2438.6

Note: you can find and play with these layouts on my fork of Den's fork of Patrick's KLA here: http://kla.keyboard-design.com
Or you can compare results here: keyboard-design.com/best-layouts.html.

For the purposes of actually making the keyboard, I added back the numpad and navigation, giving us this final mockup. (click to enlarge)

ErgoLinear X6.5

The modifier keys use symbols rather than words. The design is borrowed from and inspired by (for the new keys) Mito's Bauhaus Icons design. I don't know the copyright status on those ideas.

This is actually the 6.5 variant not the 6.4... only difference is the : and ; are swapped around. I ordered the keycaps while I was still testing, and it looked like 6.5 would beat 6.4. Turns out it didn't.

The numpad layout is also unconventional, based on most frequently used digits. It also has other commonly-needed punctuation and Tab keys in the cluster. In truth I still want to optimize the numpad layout, so the final version might differ.

Fonts

If, like me, you're doing something non-standard, you'll need a way of printing the keycaps, which we'll get to in the next section. But part of the design is picking the font to be used.

The starting point is usually Signature Plastic's famous Gorton Modified, which looks like this:


Gorton Modified

Gorton Modified (Carbon colour scheme)

However SP insists that it does not exist in an electronic form, so we look for alternatives... In general, we want a sans serif font, because keys are not generally flat and/or smooth, and the printing processes have limitations, which means they can't do the fine serifs so well.

The key (pardon the pun) points (ditto) of Gorton Modified are:

For KLE, Ian Prest actually bought Engravers Gothic font, which is similar to Gorton Modified but not identical. It has small caps rather than lower case, and looks like this:

Engravers Gothic

The Reddit/MechanicalKeyboards wiki has a list of fonts used on commercial keyboards.

For this keyboard, it was actually more difficult than expected to find a replacement font, mainly because I have marked the keys with the lower case letters as well as capitals. I found lots of fonts, but the similarity between I (upper-i) and l (lower-L) was too much. In general, I was looking for:

So I stared at a lot of fonts. Went through the entire sans serif selection on Google Fonts, as well as whatever I had on my system, as well as programming fonts and other places with free and not free fonts to download.

One suggested replacement is the commercial font Gotham Rounded medium, which looks like this: (click image for larger view)

Gotham Rounded medium

There is a font which goes by the name Armani, which is available to install on Android phones via the iFont package. However I was unable to track it down online, either by name or characteristics search or even image search. So I don't know what it actually is... the metadata in the file have names from well-known foundries but I can't find it on their sites. It looks like this, which is very close to Gorton apart from the upper-i which has a top and bottom: (click image for larger view)


"Armani" (?)

Which brings us to the free options. One possibility is Source Sans Pro (available for example from Google Fonts), and which looks like this:


Source Sans Pro

It does differentiate between upper-i and lower-L, but the tilde is a little flat, and it lacks some of the punctuation and Greek glyhs, which means I ended up with Hack.

Hack is an open source typeface designed for programmers. It looks like this:


Hack font

All the possibly-confusing characters are clearly distinguished. The ,.;: are good sizes. Apart from those characters, Hack has good coverage of the other glyphs I need. Yes the zero is controversial, and the typographic quotes could be prettier, but all things considered, I think it looks okay. It's not Gorton Modified but it will do.

Other options to consider, if you only need conventional characters:

I put together a comparative view of the most similar fonts to Gorton Modified that I could find, and scored them by subtracting the "not very similar" glyphs. The glyphs highlighted are because:

So the top fonts after that exercise are

For your viewing pleasure, here are ANSI104 mockups. Click image for widescreen view.

Gotham Rounded

Metropolis

Zona Pro

Proxima Soft

Armani

Ricardo

Arial

But wait! There's more....

If you want something like Gorton Modified, but perhaps a bit more modern and/or stylish, take a look at Quicksand (free) or Atami (free)

Quicksand Medium

Atami

Or how about something more modern with a techy feel? Use Prime (free)

Prime

Next: Components and tools.