The evolution of the Programmer’s KeyBoard design

My ageing Microsoft Natural Keyboard (original design) was not happy after I spilt some water on it. It insisted on typing unexpected letters, so I swapped it out for the 4000 version, which I don’t particularly like.

I then commenced a search for a replacement keyboard, and looked at every model available on-line. I learnt two things: all the current designs suck, and I really should switch to a mechanical keyboard. My thumbs have been hurting for years, and I found posts on-line blaming the space-bar on MS Naturals for causing that.

So given that there was nothing suitable available, I decided to make my own, having stumbled across people who do that as a hobby etc. Much Googling later, I discovered Keyboard Layout Editor and set to work on my own layout, the Programmer’s KeyBoard, aka PKB.

I had a few ideas which I had gathered over the years, and well as some dislikes about current keyboards, and decided to address them. I have also experimented with various keymap layouts (mainly the fully optimised one from CarpalX) but there were some things about it that I didn’t like.

Here’s the layout:

Fully optimised CarpalX layout

Then I discovered the Workman layout, in particular the Workman-P layout for programmers:

Workman-P (Programmer’s) layout

The main difference between the -P variant and normal Workman is that the numerals and the symbols are switched, because we tend to need those symbols more than the digits. The Workman layout puts the most common letters in English in easily-accessible places for the fingers.

I also liked an idea that Maltron had, of putting the number block (aka TenKeys) in the middle. Also the idea of using the thumb more. Several other designs have copied this.

Maltron 3D ergonomic layout (British)

This idea also surfaced in Xah’s layout, v5. He also included dedicated cut/copy/paste buttons which I thought was a good idea.

Xah layout v5

As a programmer, we use the brackets a lot, as well as : and ;. I also tend to hit the , when I mean the . and vice versa. I needed to fix that.

So I started in the Keyboard Layout editor with the default ErgoDox layout, because I wanted the angled letters. Added in the TenKeys, and brackets, and 6-key block.

PKB v1 by Ian Douglas

PKB v1 by Ian Douglas

Add some colour and legacy 3-key block.

PKB v1.02 by Ian Douglas

PKB v1.02 by Ian Douglas

Tilt the letter blocks. Must aim for ergonomics :-). Also add left-hand Nav keys.

PKB v1.03 by Ian Douglas

PKB v1.03 by Ian Douglas

Move Space and Enter, switch left-hand Nav keys to Top/Bottom/Start/End. These keys and the right-hand nav keys could be switched by the user. Move legacy 3-key back to traditional place. Moved the I key down a row to move the ;, : and ?. This is the only major change from Workman-P as far as the letters go. Re-arranged math keys under TenKeys. Discovered I had forgotten the ‘ ” key so added it.

PKB v1.2 by Ian Douglas

PKB v1.2 by Ian Douglas

Didn’t like the staggered letter keys, so normalised them.

PKB v1.22 by Ian Douglas

PKB v1.22 by Ian Douglas

Wasn’t happy with the Space/Enter layout so re-arranged it.

PKB v1.3 by Ian Douglas

PKB v1.3 by Ian Douglas

Move the ‘ ” keys down to a prettier, easier-to-access spot. This also makes the alpha layout easier to redo in standard QWERTY or others of your choice.

PKB v1.41 by Ian Douglas

PKB v1.41 by Ian Douglas

Discovered that Signature Plastics does not have 3-space blank keys, so resized the space bars to 2.75. It possibly looks better. Decided there were too many words on the keys and started replacing them with symbols. I chose the yin-yang as a neutral OS key.

PKB v1.42 by Ian Douglas

PKB v1.42 by Ian Douglas

Replaced most of the other text labels with symbols. Several are from the FontAwesome collection.The lock symbol should be closed but that character refuses to copy on my PC.

PKB v1.44 by Ian Douglas

PKB v1.44 by Ian Douglas

So this is where I am now. Trying to source switches, looking for Cherry MX brown but can’t find any. Also trying Kailh. I’ll get the keycaps from Signature Plastics. Since this is my first keyboard, I’m going with the DSA generic profile rather than the row-specific DCS keys. Unfortunately they don’t have all the colours in the above design so I’m going to have to switch a few colours.

In the next post I’ll point out what I think the advantages of this layout are, compared to other layouts. It’s not a one-size-fits-all design, and gamers will probably hate it, but I’m not a gamer, I’m a programmer … 🙂

Part 2

6 thoughts on “The evolution of the Programmer’s KeyBoard design

    • Thanks. Still long way to go. Do you perhaps know anything about this company?: … am considering buying the Cherry MX browns from them since Cherry has not responded to me and the other vendor I found in the UK is wanting GBP 0.95 each which is very expensive. Just worried that they may be clones rather than genuine, although judging by the rest of his site he seems on the level.

      • no i don’t know that site.
        I heard that Cherry MX supply doesn’t meet demand, so a lot companies are switching to Chinese made equivalents in recent couple of years. in particular, the Kailh switch. It’s cheaper and boasts lasting more keystrokes.

        • Um, aren’t they both rated at 50 million keystrokes? Cherry uses gold contacts while as far as I know the clones do not … they use some aluminium alloy instead. I’ve also read various reviews that state that Gateron switches are better than Kailh. Regarding Gon, he did surface and posted me my keys, although he is a bit behind in shipping his orders.

  1. Hi. First I have to say, I really like what you designed there, and maybe I’ll one day switch to a non-Qwerty keyboard, in which case my choice would have to be between the NEO layout, yours and Xah’s. 🙂

    As a German native speaker, I’d recommend you think about how to put in special characters on your keyboard, like the ones we use in German: Ä, Ö, Ü, ß. At least in my opinion, it is very convenient to have these characters directly on your keyboard (without modifiers and through direct input – shifted and un-shifted), but I wouldn’t generally disagree with a Alt Gr key, Compose key or dead key to put in the accented characters, as long as it is efficient and makes sense.

    Have a nice day, and good luck with creating (and hopefully selling) your keyboard! 🙂

    • Thanks for your kind words.

      I have thought about the German/French/etc letters… problem is that there are so many combinations, lower case and upper case, and even more if you include the Spanish/Portuguese ones. We use a good few of them in Afrikaans here in South Africa so I am familiar with them and the problems entering them.

      Part of the work I did on Keyboard Layout Editor was making facilities for those letters and their modifiers.

      I think I have decided that for MY purposes at least, entering them via the Compose key (I’m on Linux, so that’s built in, and I think it is a far superior solution than trying to remember that alt+136 on the numeric keyboard will give you ĂȘ (or was it Ă«? Long time since used Windows).

      However I am mindful of the problem. The current version (not yet published) does include a lot of Greek letters, typically those used in Maths and Science. Programmers also need to write documentation :-). These are accessible via alt-gr.

      Cheers, Ian

Leave a Reply

Your email address will not be published. Required fields are marked *