Close
0%
0%

Double Action Keyboard

A keyboard with double action functionality, designed to make typing easy and comfortable.

Similar projects worth following
This project contains information about the development of a double action keyboard. The goal of the double action keyboard is to make typing easier and more comfortable than on a typical keyboard. This is achieved by using double action switches and an optimized keyboard layout.

The double action switches allow two independent actions to be triggered from a single key without any modifiers. This feature can be utilized specially to make special characters easily accessible, which is particularly helpful with keyboards that have more characters than a typical English keyboard.

What is a double action keyboard?

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

After having used this keyboard for a while, it has proven to be very useful. Typing of special characters is significantly easier than before and the layout makes the overall usage more comfortable.

Double action switches

The double action switches are an essential part of the double action keyboard. Currently there are no suitable ready-made double action switches available, thus, they had to be constructed out of modified MX switches and tactile switches.

The MX switches are modified so that the 'plunger' can actuate a tactile switch. This is achieved by removing the cap of the centering 'pin' of the switch. The MX switches have an actuating force of 0.5 N and the tactile switches which have an actuating force of 1.3 N. The value of the tactile switch was chosen so that the force difference between the first and second position is significant but not too large.

The construction of a double action switch is visualized in the following picture. As can be seen, the tactile switches are soldered upside down on the PCB below the Cherry switches, to allow the plunger of the Cherry switch to actuate the tactile switch.

Firmware

Because of the unusual operation principle of the double action keyboard, a custom firmware was developed for the double action keyboard. The firmware is written in Arduino and targeted for Teensy microcontrollers.

The double action keys have two different functions, so there are some challenges how the functions are triggered. The keyboard firmware works in the following way: if a key is pressed two steps down the secondary function is triggered immediately, however, if the key is pressed only one step, the keyboard must not send the key press immediately since the user might still press also 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. This is solved by triggering the first action only when the key is pressed one step down and then released or when the first step is held down for the duration of a delay time.

Thus, to 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 many characters are desired). To trigger the second action, the key just needs to be pressed down faster than the delay time.

Also, modifier keys need special treatment. As mentioned, when typing a “first action” character, the character is typically sent when the key is released (i.e. falling edge). This causes problem for key combinations, this is because for normal key combinations to work “normally”, the modifier needs to be held down longer than the normal key. To solve this, the modifier keys are programmed so that they lock down when a non-modifier key is pressed while a modifier is held down and they are released after the non-modifier key is released. This makes key combinations work as with normal keyboards.

The firmware can be found on GitHub: DAK-FW

Layout

A typical keyboard has about 104 keys. The double action keyboard has only 66 physical keys, all of which are double action, and a 5-directional joystick. This means that the keyboard has 66*2+5=137 individual switches, which is more than what a typical keyboard has while taking less physical space making the keyboard more compact and 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 of the keyboard so they can be operated with both hands easily. The numbers are arranged to...

Read more »

  • 1 × Teensy LC Micro controller
  • 66 × Gateron MX Keyboard switch
  • 2 × 324 OHM 1/4W resistors for the LEDs
  • 1 × XM7D-0512 USB connector mini B
  • 66 × PTS645SL50-2 LFS Tactile switch 1.3 N

View all 12 components

  • DAK V1.1

    Jaakob Lidauer08/09/2020 at 11:15 0 comments

    Here are some pictures of the latest double action keyboard V1.1. This keyboard is electrically almost identical to the V1.0, however, the mechanical design has been updated significantly. The case is manufactured out of sheet metal parts and the keyboard is wider and it has a fixed wrist rest. The wrist rest has a foam core to make it softer and more comfortable compared to the wooden wrist rest of the V1.0. Also, the joystick is mounted slightly higher than in the previous versions. The LEDs (for caps lock and FN-layer) have been positioned to the middle for better visibility. This keyboard has also an USB type-C connector.

  • PCB files added to GitHub

    Jaakob Lidauer03/08/2018 at 20:37 0 comments

    The files can be found in the PCB directory.

  • Keyboard finished

    Jaakob Lidauer08/06/2017 at 16:42 0 comments

    Here are some pictures of the new keyboard.

    The larger joystick is much better to use than the old one.  Also the feel of the keys is much more rigid. The keyboard weighs almost 1.2 kg. The wooden parts are made out of oak.

    The wrist rest is attached to the keyboard with magnets. There are two magnets in the keyboard and in the wrist rest. This works quite well.

    After all I'm quite pleased how it turned out.
     

  • Case finished

    Jaakob Lidauer07/29/2017 at 17:17 0 comments

    This is the case for the new keyboard.

  • Case

    Jaakob Lidauer07/23/2017 at 16:12 0 comments

    The case of the Double Action Keyboard V 1.0 is going to be made out of two 1.5 mm stainless steel plates. One will be on the bottom and the other on the top of the keyboard. The edges and the wrist rest will be made out of wood.

    The steel plates will be laser-cut, but I haven't got them yet

    Top plate

  • Layout

    Jaakob Lidauer07/23/2017 at 09:08 0 comments

    This is how the new layout is going to look like. There are 1.25u wide keycaps on the edges and two 2u keycaps in the middle. Obviously the functions of each key can be modified, so the second picture is just an example how the functions could be configured. 

  • Keycaps and switches

    Jaakob Lidauer07/23/2017 at 07:50 0 comments

    I decided to use DSA keycaps for the keyboard, because they have a flat profile and therefore suit well to the unusual layout of the keyboard.  The switches are Gateron browns.

  • Double Action Keyboard 1.0

    Jaakob Lidauer06/14/2017 at 14:36 0 comments

    I started building a second version of the double action keyboard, it is based on a Teensy-LC and the case will have a removable wrist rest. The layout will be slightly different and the navigation button is going to be bigger and more comfortable to use. Otherwise the keyboard is going to be quite similar as the first one.

    This time I ordered the PCBs. Here are some pictures:

View all 8 project logs

Enjoy this project?

Share

Discussions

Kosma wrote 03/19/2020 at 18:23 point

Is possible put place for tensy or arduino? for change firmware and device? Or meybe add raspberry pi zero?

  Are you sure? yes | no

Jim Thompson wrote 03/29/2019 at 18:40 point

Apple has a "double-action" touchpad on some of their MacBook products.  Drives me crazy, doing things I don't intend.

  Are you sure? yes | no

Matthias_H wrote 03/26/2019 at 21:02 point

Cool! But you MUST equip this with a velocity-sensitive mode, like a MIDI keyboard. With a bit of practice, 3 or 4 velocity levels should be absolutely doable by the user. You could thus reduce a QWERTY keyboard to one line of keys. Or add more umlaut/accent stuff the angrier the user types ;)

  Are you sure? yes | no

Matthias_H wrote 03/26/2019 at 21:02 point

Master mode: All of ASCII within 127 velocity levels on a single key.

  Are you sure? yes | no

tavian wrote 11/27/2018 at 14:43 point

This looks super awesome! How much would it cost for you to make a couple of these for me?

  Are you sure? yes | no

Evan Rowley wrote 02/01/2018 at 21:20 point

Any possibility of kits or PCBs being made available? This looks like an awesome keeb to build.

  Are you sure? yes | no

Jaakob Lidauer wrote 03/03/2018 at 10:14 point

I have a few extra PCBs, so if you are interested let me know.

  Are you sure? yes | no

Redgeneral wrote 10/18/2017 at 21:44 point

Impressive project - just two questions (1) where did you get the steel laser cut? (2) where were the pcbs made?

  Are you sure? yes | no

Jaakob Lidauer wrote 10/21/2017 at 19:18 point

The PCBs are from EasyEDA and the laser cut parts are from a local company.

  Are you sure? yes | no

Redgeneral wrote 10/21/2017 at 22:40 point

Thank you

  Are you sure? yes | no

deʃhipu wrote 06/14/2017 at 18:14 point

How do you handle ignoring of the first keypress in the case of a "strong" keypress? Did you add a delay and wait for the second keypress before the first one actually registers? If so, doesn't that add a lot of annoying latency?

  Are you sure? yes | no

Jaakob Lidauer wrote 06/15/2017 at 13:54 point

This is explained in more detail in the Firmware section. The idea is that when a key is pressed one step down it will be registered when it is released. If the key is kept pressed at its first position for 400 ms it will be also registered, this makes possible to keep the key pressed (for writing many characters at once).

This might sound complicated, but it works well.

  Are you sure? yes | no

deʃhipu wrote 06/15/2017 at 14:04 point

Sorry, I didn't see the firmware section.

  Are you sure? yes | no

Blecky wrote 04/29/2017 at 14:57 point

Have you thought about how mechanical stresses on those SMD buttons will work since they are mounted on the underside? 
Time, or one swift rage smash to the keyboard would probably see them tear off the pads.

  Are you sure? yes | no

Jaakob Lidauer wrote 04/29/2017 at 16:16 point

I thought about that, but so far I haven't had such problems.

I actually build the back plate of the case so that it supports the tactile switches from below, that should reduce the stress.

  Are you sure? yes | no

tyler wrote 04/29/2017 at 04:42 point

a "disable" feature would be really helpful for the heavy fingered, or the angry typist.

  Are you sure? yes | no

Clara Hobbs wrote 06/14/2017 at 15:02 point

Making it hard to type whilst angry might actually be a good thing though.  It could cut down on the number and severity of Internet fights.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates