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.
After having used this keyboard for a while it has proven to be a very powerful tool, since typing special character is so much easier than before.
Double action switches
The most challenging part of building the keyboard was the design of the switches. There were no suitable double action switches on the market, so I had to build them myself.
I modified the Cherry MX switch so that the 'plunger' could actuate the
second button. This was achieved by removing partly the centering 'pin'
of the switch. 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.
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 could 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. They are 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 activated (in most cases) after it has been released.
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.
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 to a 9 x 14 matrix where each row is pulled down with a pull down resistor and each column can be activated separately (set high) with the controller, that allows reading the states of all switches by using 14+9 IO pins.