What is a double action keyboard?

A double action keyboard has double action switches that have two independent functions that can be used without pressing any modifier keys. The first action can be accessed by pressing the switch one step down and the other two steps down.

The keyboard that I build has a rather unusual layout, the arrow keys are replaced with a 5-dir navigation button. The fifth action of the navigation button is 'delete'. I also moved backspace, enter and shift to the middle of the keyboard to make their usage easier.

After having used this keyboard for a while it has proven to be a quite powerful tool, since typing special character is so much easier than before.

Double action switches

The hardest part of building this keyboard was the design of the switches, since there were no suitable double action switches on the market.

I used brow Cherry switches which have an actuating force of 0.5 N and tactile push buttons which have an actuating force of 1.6 N, so the difference between the first and second state is significant. I modified the Cherry MX switch so that the 'plunger' could actuate the second button. This was achieved by removing partly the centring 'pin' of the switch.

The tactile switches are simply soldered upside down on the PCB.


The double action keys have two different functions, so there are some challenges how the functions are triggered. The program works the following way: if a key is pressed two steps down the secondary function is triggered immediately, however the first action is a bit more tricky. If the key is pressed only one step the keyboard can't send the key press immediately since it might be that the user is still going to press the second step, this would lead to a situation where both actions are triggered instead of only the one that was intended to be triggered. The solution is to make it so that the first action is triggered when the key is pressed one step and then released or when the first step is hold down for a longer period of time than defined in the program.

To recap if you want type the first action you have to press the key one step down and release it (this gives one character) or keep it pressed longer than the delay time (if you need many characters), if you want to type the second action you need to press the key two steps down faster than the delay time.

The modifier keys are programmed so that they lock down when a 'normal' key is pressed while a modifier is hold down and released after the normal key is released. This makes short-cuts easier to press. If the modifiers would not lock down the modifiers would have to be kept pressed longer than the normal keys, because the normal key is sent after it has been released.

The firmware can be found on GitHub: DAK Firmware


A normal keyboard has up to 105 keys. I reduced the amount of keys to 66 physical keys, some of which are double action. When counting double action keys and the normal keys the total is 66 + 34 = 100 plus a 5-direction joystick, this equals to a traditional keyboard. Because it has fewer physical keys, the keyboard is smaller and more comfortable to use.

The arrangement of the keys is also very unusual. As shown in the picture enter, backspace, shift, delete and the arrow keys are all in the middle so they can be operated with both hands easily. I included a number pad as second action keys to the keyboard. Keys in black are primary keys, keys in gray are secondary keys and keys in red are FN-keys that can be accessed by pressing the key and the FN-key simultaneously. In addition, the rows of the keyboard are not staggered, which makes typing easier.

Building process

I designed the PCB for the keyboard with Kicad and milled it with my CNC milling machine. As a controller I used a Teensy 3.2 since it had enough IO pins and it can be used as a USB keyboard controller easily.

The switches are connected...

Read more »