Weird Keyboards, Programmable Keyboards

Hi! My names Germ and I make really tiny and strange keyboards. Currently on a 36 key keyboard! How did this happen?

10 years ago, at my high school I found this behemoth of a keyboard. I didn't know anything about it all I knew is that this thing weighed about 5lbs and was louder then all hell. The worst part is that it even felt really good to use. Of course what we had dug out of the CS closet was a old dusty IBM Model M.

It got used for a few months in the lab before I lost a connector and decided to pare down my electronics before taking off to university. Somewhere in the next few years the space bar got damaged and I pitched it. For the next few years this became my weapon of choice, mostly because it was bolted to the damn laptop.

And it was good enough. OSX had a little option for swapping caps and control and that alleviated most of the issues I had. It got me through school, programming and working on various projects. It wasn't amazing or anything but with a few remaps using Karabiner (I think that's the program) and software drag scrolling with my M570 Trackball it worked. With a Autohotkey setup and Xinput/Xmodmap file for cross OS support configuration was a pain point, but manageable. That is until I met a Mainframe and ISPF.

This is the primary interface for z/OS, straight 1980s vibe right? Unsurprisingly this isn't going to play nice with a tiny laptop keyboard. Hell the interface expects PF24 in places! We needed to go bigger, and that's when I bought a old mechanical keyboard off a friend and gave it the 5 minute custom. This managed to get me through Master The Mainframe and even make a neat little react frontend for a Cobol/DB2 database with a JSON API (fun fact JSON GENERATE and JSON PARSE were added a few years ago, and there's even VSCode support for COBOL :) But the main issue was transporting this thing to work, it's not a small board by any means! But with the Windows only software you could do some neat remapping and macroing so I looked into programmable keyboards.

This is what happened. A split open source keyboard powered by this thing called QMK with blank keys to boot. This is where things started to get messy, QMK is a amazing project that lets you write custom keymaps, generate a firmware and flash it over to a supporting device. Because it's aimed at a technical crowd this is done through some C macro shenanigans (although there is a web configurator that will spit out a compiled hex for you to flash). After about a week of getting used to the default layout, I found this a layout more aimed at Linux/Vim users gave it a flash and got to work.

Here's the thing about a keyboard like this, it only takes a few minutes to modify and reflash a layout! Naturally as I found issues and moved stuff about the layout became more personal. Thumbkeys + Layers really change the manner in which a keyboard can be used allowing holding of a thumbkey to entirely change the keys that will be send (and that's only the tip of the iceberg).

But the ErgoDox suffers on massive flaw, the thumb cluster is horrible for the outer thumb keys, half the buttons on the cluster are unusable/reachable and it's got this giant top. Hell, once you get into layering there's way too many keys. Looking for a project this little guy happened.

Awesome, A smaller ErgoDox-like with a little trackball! Trimmed off the number row and useless outer keys, brought mouse controls to the front and went with a SMD focused design allowing the ErgoDoxes forehead to be removed and adding support for Kailh Chocs. Finally my bag had some space for non keyboard gear. The choice to go caseless was made for ergonomic reasons, if you look at MX Switch + ErgoDox you'll notice that you need a wrist rest to use it properly. Opting to remove tenting and moving to Low profile chocs was a compromise between ergonomics and durability. Currently it is hard to manufacture sculpted boards that are durable (Ask anyone with a Dactyl Manuform!). As before the layouts got smaller and more optimized for Programming/Vim/i3/Shelling about.


I ended up making a few different designs while using a Gergo daily, namely the Georgi (stenography writer), ButterStick (20% ortholinear), Ginni (10% Split Ergo) and BuzzSaw (60% keyboard that transforms to a proper ergo with a bunch of snapoff parts). A few of these heavily rely on a custom chording engine that lives on top of QMK, needless to say between writing that engine and trying to learn stenography I learned a bunch about the wonders of chording and how you can really push the notion of what a keyboard is with it.

Chording, for those that don't know is a fancy word for pressing multiple keys to send an action, similar to combos that we know and love. An example of a chord would be IU -> Esc, when I + U are depressed the escape code is sent by the keyboard. Due to the sheer number of combinations available on even a tiny board layouts are highly personalized. A stenographer will have a custom dictionary that is full of their own briefs/snippets that's been crafted over the years and personal. And that's in addition to the entire English language fitting onto 30 keys :)

There is a issue with chording, spring force. With chording you'll sometime push two vertical keys with the same finger (applying force along the edges). A typical key has about 60-70gf of resistance, so a vertical chord is 120-140, and a edge chord (4 keys pushed by one finger such as TSDZ on a steno board) is 240-280! Needless to say that isn't very ergonomic, comfortable or fun. The solution is very light switches. 35gf are the lightest commercial switches you can get (Gateron Clear/Kailh Choc Red Pro), but I take it even further.

12gf springs custom from Korea for Kailh Chocs. Very light typing, and only 24gf/48gf of force required in the very worst scenarios. The downside is that every other board I touch feels extremely hard.

End Intermission

Sadly, while functional those boards are just a bit too much for me. I took the lessons on chording and ran with it, including "User-Hostile Design Principles", there's a bit of a write up over here. In the interest of ergonomics the outer mod column, inner extras and outer thumb 2us were also ripped off. The idea being that you can't hurt yourself on what isn't there. To compensate dotted around the keyboard are a handful of small two-key chords powered by QMKs Combo feature. These are the game-changer for typing/vim/programming. Look at this layout, but most importantly the two finger chords. Think about how this would impact your typical workflow. If you've never seen one of these before it'll look a little dense.

Here's the layout for Gergo:

And this here is GergoPlex

A little complex eh? The symbol/Number layers are controlled by the two thumb keys where your hands naturally rest, Vim style arrow/mouse movement and all modifiers are easily withing reach. The main downside of overloading keys with modifiers is that conflicts arise (For example, Control-A. You must use the opposite control!) but the reduction in motion is worth it. When using this layout the fingers only ever travel 1u from homerow (with the exception of the inner thumb 1u).

The real fun comes with those chords, for many often used keys you never need to leave home row. Take a second and find the following combos and what keys would need to be pressed.

Alt-Tab, Control-Enter, Escape, :wq, Volume Up, Control-Shift-V, The_Quick_Brown_Fox

Now compare how you would do those on a traditional keyboard. How many times a day to you make these motions? That's why GergoPlex is designed in a user hostile way :)

It's  been a fun year over here, many new designs have been made and friends been met.  Here's hoping 2020 leads to more Input Device shenanigans

P.S. ButterKnife launched today, find it over in the store!