I built my first custom keyboard (Katana60) back at the beginning of this year and the second one (Corne) a few months ago, but I am already designing another one. Apart from the fun I have as I build and customize those keyboards, it is about looking for a more effective keyboard layout for my daily work. This article sums up my journey which leads to the decision to design own keyboard.
Motivation
I work as a software developer so typing is a very important part of my daily work. But not just typing. There are plenty of other tasks I need to do quickly - navigating through the source code, editing, using various tools available in editor or IDE. The most effective way of achieving such a task is to use keyboard shortcuts.
A long time before I started building custom keyboards, I was already trying to find ways how to be more effective when working with my computer and more specifically with a keyboard.
- I have been using the Colemak layout for quite some time.
- I invested the time necessary to learn and practice touch-typing.
- And I had been a long-time Vim addict and I had to use Vim plug-in in every editor I had been using. That’s no longer true, but it did affect how I use a keyboard.
Vim
I am not going to dive into reasons why I no longer use Vim, but I am going to mention what I like about vim.
Vim allows you to use keys that are easy to reach to do the most useful stuff - navigation through the text and basic manipulation are done by letter keys you have just under your fingers, without any modifiers. This is achieved by using multiple modes. The default mode (called command mode) is for movement and manipulation and you need to switch to insert mode in which you type. This feels weird at the beginning but it is very addictive once you get used to it.
hjkl
HomeEndShiftAltCtrlCmd
Keyboard size
homeendpage up/down
In the world of keyboards, a per-cent notation is used to classify keyboards according to the full keyboard. A 100% keyboard is the old good big one with everything. The katana60 I use right now is a 60% keyboard. Corne, my second keyboard, is only 40% which is minimalistic.
What are my expectations?
Let’s sum up my requirements from my keyboard setup.
homeendpage uppage downF-Ctrl+Shift+aCtrlShiftA
Layers
FN
Usage of layers is very common in the custom keyboard community and firmware like QMK support layers out of the box. But you don’t need a programmable keyboard to have layers. There’s a way how to make them work on all operating systems.
There’s one very detailed and very important post about layers on the Colemak forum. This post is written by DreymarR and he explains there the concept of a layer with some handy extensions. The post influenced the original layout of the Katana60 keyboard quite bit and since my layout is heavily based on that one it affected mine too.
Katana60
I have already described my layout for my Katana60 keyboard. But I am going to revisit the important details here too.
Katana60 has 4 layers and my configuration is very close to the default one.
F1F12FNbackspaceF1F12

Moving to split
I wanted to build a split keyboard from the beginning. I chose Katana60 as the first build because it was a step in that direction and seemed to be a good place to begin experimenting with custom keyboards.
Recently I build a CRKBD (Corne keyboard). I admit the decision to build the keyboard was a little bit impulsive. I love how it looks and as soon as I learned I could have PCBs and parts for a sandwich case manufactured very cheaply I was not able to resist and placed the manufacture order. But once I built it and tried using it I quickly realized it is too minimalistic for me.
Let’s look at the default layout.

The default layout is not that interesting. Let’s focus our attention on the keys that we have available.
We sacrificed the number row (the top one) on this keyboard. We have also only 3 keys in outer columns and 3 keys in the bottom row. There are also some additional keys in the middle cluster on Katana60, but since I was barely using them I’ll ignore them.
And we need to fit somewhere:
CtrlAltCmdShiftTabEnterSpaceBackspaceEsc
That is 11 keys so it is possible to fit them into both outer columns and bottom rows (12 available keys in total).
But such a solution creates problems:
ShiftSpaceEnter
What would be possible workarounds?
SpaceEnterZCtrlXAltCCmd,./
F1F12
After some time I gave up. I just need a less minimalistic keyboard.
Lily58
Lily58 is another design very similar to (and partly based on) Corne. I haven’t built this keyboard but I was considering it could be the next step.

It is almost perfect:
F1F12
Lily58 would work nicely for me but I would have to either:
- Use workaround 1) from above. I changed my Katana60 layout and tried to use such setup for a few weeks hoping I could get used to it. But it was not getting better.
- Move layer switching to outer columns. But I like the idea of having those under my thumbs. I switch layers very often and that might put too much strain on my pinkies.
So let’s design a keyboard, why not?
Lily58 is almost perfect and also opensource with KiCad files available. So I decided to modify them and add the desired keys. I chose the Lily58 Pro version as the basis for my changes.
Originally I just forked the repository and wanted to add only the 2 keys, name the keyboard Lily60 or something like that and send the manufacture order for PCBs. But I got a bit carried away but I am going to describe that in another article. This one is about layouts, so let’s see how it would look (the whole layout can be also viewed at keyboard-layout-editor.com)

Default layer contains no surprises:
CmdCtrlAltSpaceEnterShiftTabEsc

Symbol layer is very similar to Katana60 and that’s intentional - it would be easier to get used to.
F1F11F11F12

Extend layer is also almost the same as on Katana60 since it is already in my muscle memory.
page uppage downDeleteCaps LockUndoCopyPasteCutInsPrint ScreenMenuRST
Testing the layout and building the keyboard
I am finishing the first revision of the keyboard PCB (KiCad files on github) but it will still take some time until I polish the design, order the manufacture and build the keyboard.
But I am already testing the new layout. I have modified my Katana60 layout and added two more configurations (one for Mac and one for Linux) with the layout I described above and I have been using it for a few weeks. It works quite well and I am getting used to the changes. Of course, it’s work in progress.
I am going to share more about the design of the keyboard in the next article, so if you are interested you can follow me on Twitter or use an old-school RSS feed and subscribe to updates on this blog.