Building a corne keyboard (crkbd)

Keyboard journey

Recently, I got sick of my Anne Pro 2 keyboard, which is a 60% keyboard I’ve owned since the end of 2020. Previously I was using the Logitech G810, an all around horrible keyboard (as expected from Logitech products).1

Logitech G810

The Logitech G810 was my first mechanical keyboard after a few cheap membrane ones I found lying around. It was a truly horrible introduction to mechanical keyboards, but I still enjoyed it in the beginning because it was new.

This keyboard has custom key switches that seem to horribly try to emulate the sound and feel of Cherry MX Brown’s, and due to the custom switches, have a custom mounting mechanism for the keycaps. The keycaps are mounted via 4 little tiny plastic legs that break off very easily. They break off so easy that I wasn’t able to clean the keyboard as much as I wanted to, since the keycaps cost quite a bit of money. In fact, buying the “Ctrl” key as well as a few other modifier keys would have cost me around 20€, and it just so happened that I had to replace exactly that key.
Alas, I never did, so I was stuck with a keyboard that had a Ctrl key missing for about 2 years, if not longer.

The feel of the keyboard was also very… off. It didn’t feel nice, it didn’t sound nice, but luckily I only noticed how bad it actually was after switching to good switches.

Anne Pro 2

The Anne Pro 2 is the second mechanical keyboard I’ve owned, and the first one with “proper” switches. After talking to a few friends about what type of switch I should get, preferences and everything considered, I decided to buy it with Gateron Brown’s, and I don’t regret my decision. All in all, the Anne Pro 2 is an okay keyboard, although it has a few big shortcomings I’ll touch on in a bit.

It was also my first 60% keyboard, having owned only 100% keyboards before. I was afraid that this change might be a little too much, seeing as literally 40% of my keyboard would be gone, but it was definitely the right choice. Gaining the desk space from removing this many keys is welcome and improved my position while gaming in particular, as my left hand now doesn’t have to be so far away from my body in order to reach the WASD keys.
Thanks to the 60% keyboard I was also introduced to layers, even if they are fairly primitive on the Anne Pro 2. This taught me that you don’t have to have all your keys that you might use occasionally on your keyboard at all times, but that it’s perfectly fine to put these on a different layer so that they’re still there should you need them.

Now for the problems this keyboard has, and I’ll start with the biggest one: Double Inputs. This keyboard is notorious for having double inputs, and they drove me crazy. Not as crazy as it did a friend2, but they were still annoying. I don’t think I would mind them as much now since I’m not playing osu! anymore, but they would still be annoying.
The other big problem, although not impacting me a lot as I didn’t use it much, is the wireless feature. The double inputs at least tripled in frequency and some inputs weren’t registered at all.

Finally I decided I’ve had enough with the double inputs and I decided to look for a new keyboard.

Corne keyboard (crkbd)

After a while of looking at other pre-built keyboards, none of which I really liked, I decided to buy a split keyboard instead of a single unit. At first I had the ZSA Moonlander in sight, but I ultimately decided it was not what I wanted.
This got me to finally look into building a keyboard myself, something I tried to do before I got my Anne Pro 2 but gave up on since I wasn’t able to find something that I liked and wasn’t $100 dollars in shipping (literally). Stumbling upon the Corne keyboard, abbreviated as crkbd, I instantly knew that this is the keyboard I wanted.

The crkbd is actually just an open-source PCB, found here. After ordering this, either from a reputable keyboard site or having it produced by a PCB manufacturer, you also need:

  • MX hotswap sockets
  • key switches
  • key caps
  • microcontrollers

Optionally, you can also get backlight and underglow LEDs3, as well as LCD panels.

There are a few configurations you can have, but ultimately the LEDs are, as far as I know, not interchangeable with other models, and neither are the LCDs.

My configuration ended up looking like this:

  • Black MX CRKBD PCB
  • Kailh Hotswap Sockets
  • SK6812 Mini-E Switch LEDs
  • SK6812 Mini Underglow LEDs4
  • Elite-C Microcontrollers
  • SSD1306 OLED Display
  • Corne Cherry Acrylic Plate Case (Clear)
  • ErgoDox DSA Blank Keycaps
  • Gateron Browns

Assembled, the keyboard looks like this:

After assembling it in November of 2021 and using it for a few months, I can comfortably say this is by far the best keyboard I’ve owned. The split nature of the keyboard was a little difficult to adjust to for me, taking about 2 weeks to get fully used to it, but it is very easy on the shoulders and on the wrists.
The PCB is designed to not be row staggered, like the normal keyboards we use, but instead column staggered, keeping the keys in straight columns because your fingers move up and down, not sideways.
Not that it really matters, but I increased in typing speed by 20 WPM5, increasing my 120 WPM to 140 WPM just by switching to the corne.

One of the big changes this keyboard has introduced is the insanely small keyboard size. You might have noticed that, compared to the 60% Anne Pro 2, the number row is now also gone. A few other keys have also vanished, which means you’ll be force to use layers to access those keys.
As with switching to the Anne Pro 2, I was scared of this being too much, but again, it was the right decision. It’s designed to have every key on the keyboard be in reach of the fingers when on the home row so they only ever have to move 1 key over.
Another new addition is the thumb cluster. Even though the corne has a small thumb cluster of only 3 keys per half, it’s incredibly useful and feels intuitive after a very short time. You can put often used keys here, like Space and Shift, but also layer keys for easy access to another layer.


If you are thinking about buying a new keyboard, think about getting a split, column staggered keyboard, especially if you type on a keyboard a lot. We are using an old and outdated keyboard design, stuck in the times of typewriters being the only keyboards we know. They couldn’t be column staggered as the hammers would be in front of each other, blocking each other from hitting the paper, and they couldn’t be split, ruining the hands of every typist using them.

As far as my journey in keyboards goes, I’ll probably look into learning the Colemak DH keyboard layout next, further leaving the deprecated ways of typewriters behind.

  1. I’ve owned (and still own some) Logitech products in the past, to be precise: G810, G502, Z313, Z625, and G432. I passionately hate all of them. ↩︎

  2. The cool lad from ↩︎

  3. NOTE: you’ll have to buy and solder both the backlight and underglow LEDs in order to have RGB work. Buying just the backlight LEDs, for instance, will not work as the backlight and underglow LEDs are in series, meaning if one type is missing the circuit won’t be complete. ↩︎

  4. At the time of writing the underglow LEDs are not soldered to the PCB because I messed up the order, so now I don’t have any LEDs working. This is fine, though, as I had guessed incorrectly that I would be looking more at the keys. Now that there are no labels on the keycaps anyways, the LEDs don’t matter anymore. ↩︎

  5. “WPM” stands for “Words Per Minute” ↩︎

Do you have a comment on one of my posts? Feel free to send me an E-Mail:
To participate in a public discussion, use my public inbox: ~witcher/
Please review the mail etiquette.

Posted on: January 12, 2022

Articles from blogs I read

OpenSSH introduces options to penalize undesirable behavior

In a recent commit, Damien Miller (djm@) introduced the new sshd(8) configurations options, PerSourcePenalties and PerSourcePenaltyExemptList, to provide a built in facility in sshd(8) itself to penalize undesirable behavior, and to shield specific client…

via OpenBSD Journal June 7, 2024

Your Node is Leaking Memory? setTimeout Could be the Reason

This is mostly an FYI for node developers. The issue being discussed in this post has caused us quite a bit of pain. It has to do with how node deals with timeouts. In short: you can very easily create memory leaks [1] with the setTimeout API in node. You…

via Armin Ronacher's Thoughts and Writings June 5, 2024

The state of SourceHut and our plans for the future

Good morning! It’s been a tough year for SourceHut and I know many of our users are waiting to hear from us. Our last update was the post-mortem following the DDoS attack we sustained in January, and we have some additional news following this update as well…

via Blogs on Sourcehut June 4, 2024

Generated by openring