Modular Keyboard

Typical keyboards are often not ergonomic and they do not optimize usable space. The goal of this project was to create a keyboard that can be used to experiment with key placement so as to find a layout that is more optimal ergonomically and maximizes usable space.

Arm Angle

Standard keyboards are laid out in such a way that the arms come in at an angle that is not optimal for natural wrist and finger position.

Finger Length

Due to the variance in finger length, the natural resting position of the fingertips is slightly arced, and not in a straight line, as is laid out in a standard keyboard.

Wasted Space

In a standard keyboard the spacebar takes up space that can be partially filled with other keys. To the left of the leftmost keys, there is also room to add some keys that an adult can easily reach with their pinky.

While there do exist some ergonomic keyboards, they often address only one or two of these issues properly, or they end up being bulky or overly complex.


Requirements:

  1. Individually positionable keys

  2. Fully functioning keyboard

    • N-key rollover

    • Minimal latency

  3. The keyboard must be the same size or smaller than a standard keyboard.

  4. Must retain good aesthetics


Goal:

Create a keyboard where the position of each key, and the number of keys, is fully customizable. Using this keyboard, experiment with key positioning to optimize ergonomics and usage of space.


Chosen Approach:

Create custom switch holders that can be connected into a keyboard matrix at any position using magnetic connectors, and with a magnetic base that can be attached to a metal baseplate. Connect the switches to an arduino microcontroller and program it to have N-key rollover and minimal latency.

Keyboard Matrix

In a keyboard one end of the switch is connected to a row bus, and the other end is connected to a column bus. For N-key rollover, each switch must also be connected to a diode. Therefore, for the switch holder to be fully functional, it must have 4 magnetic connectors (column input, column output, row input, row output), and room for a diode.

MECHANICAL DESIGN

The switches chosen for this project were Cherry MX switches.

The switch holder was designed to have a neodymium magnet press fit into the base and a hole on each wall where either the row or column connection would be connected to.

To simplify the manufacture process and not have to work inside the switch holder, a magnet holder was designed for the column and row magnets.

Once the switch and diode are soldered to the magnets, the switch and magnet holder were placed into the switch holder.

As this is not a final customer facing product but an experimental design for prototyping, the parts were manufactured using a resin 3d printer.

Electrical Design

Code Test Platform

To create and test the arduino code, a simple 4 switch keyboard was created using a breadboard, inexpensive switches that work with breadboards, and through-hole diodes.

Switch Holder Test

At this stage, the switch holders were also tested to ensure that the magnetically connected system would work.

Finalizing Connections and Studying Ergonomics

Once the arduino code was functioning as expected, with all of the bugs and electrical issues worked out, all of the switch holders were connected to it. At this stage, the positioning of the keys was experimented with by gradually positioning them for maximum comfort.

Findings

The ergonomics of a keyboard can indeed be greatly improved with better key positioning. More keys can also be placed within a slightly smaller area than a standard keyboard, thereby increasing the utility of the keyboard while decreasing the footprint.

One interesting find is that for optimal comfort, not only should the rows have a slight curve, but so should the columns. As a finger reaches to a key in either at a higher or a lower row, it does not travel in a straight line but in an curve. Another consideration for a future iterations is to make the thumb keycaps sit a little lower than the other keycaps, as the position of the thumb is naturally a little lower than the tips of the other fingers when the hand is in a typing position. This will also allow for a person to reach more keys with the thumb. While this is not useful in most typing situations, it would likely be utilized by gamers when playing video games.