A one-handed ergonomic keyboard

I have a person in my life who has limited mobility in one hand. Often times, existing market solutions are outdated, ineffective, or poorly suited to one’s physical ability. This one-handed keyboard is designed with this person in mind, and I am open sourcing the design files so that this project can help more people.
One-Hand can be built for as little as $65.

The Case

The form of this case is designed to be 3D-printable on most standard 3D-printers. The case shown left is printed using Nylon 12, though this keyboard is suitable to be printed in most common materials.

It is comprised of two parts, a main case and a bottom plate. The plate is designed to use 4 M3 threaded inserts, which can be purchased here.


The one-handed keyboard uses an ergonomic design with a 5-key thumb cluster and optional joystick. As users of this keyboard likely will be used to typing one-handed on a standard keyboard, typical row-stagger is utilized for familiarity. The open-sourced files are designed to be used for the right hand, but can be easily flipped to work with the left hand.

The keyboard is fully programmable, but as a suggested layout, you can first try using the one shown right.

This layout is designed for people who type one-handed on a standard keyboard, and balances a faster learning curve with typing efficiency (the most commonly used keys are most easily accessible). Layers are shown in their respective colors.

Additional layers can be added through Vial or any other keyboard software you choose to use. The optional joystick can be configured to work differently based on which layer is selected, and can act as either analog input or discrete keypresses (arrow keys would be a common use).

STEP 02 (Optional)

To install the joystick, a hole has been implemented in the design files at the center of where the joystick should go. Given your intended joystick, mounting mechanism may change, and therefore you should modify the files to fit your part or modify your 3D print to accommodate it.

In my case I used this joystick, and drilled two 2mm holes to screw the joystick to the case.

Here I used some fairly standard M2 torx screws, but this may vary based on your joystick of choice.



First, install your mechanical switch of choice. The provided design files are intended for use with MX switches, but can be modified to fit other switch types such as Alps or Choc switches.

The large button on the thumb-cluster should be oriented to match the keycap you intend to use.


It’s now time to begin soldering. Because of the ergonomic nature of this keyboard, hand-wiring is the best option. A good guide to follow is this one, which details how diodes should be bent, and best practices for soldering using this method. I first soldered the columns using diodes.

You should solder using the shown columns (red), and rows (blue) for the switch matrix.

Now would also be a good time to solder four wires for your joystick.

Next, you should solder the rows using standard wire. Here I used 30AWG wire, but something somewhat thicker would also work.

It’s important to ensure that no rows or columns are shorting together at this point, and you should use electrical tape or an equivalent to prevent this.


Next up is soldering the microcontroller. I used an Elite-C for this build because of its support for joystick using its analog pins.

I used some jumper cables for convenience, though you can also solder using standard wires. Ensure to reserve your analog pins, in this case F0 and F1 for the analog data of your joystick if you choose to use one.

The micro controller fits nicely under the thumb-cluster. Lastly, you can glue a short usb-c jumper cable to the included port and connect it to your microcontroller. It may be necessary to use additional electrical tape to prevent shorting between the controller and other components in the case.

Matrix LineR0R1R2R3R4R5R6R7C0C1C2C3C4
Pin on Elite-CF4F5F6F7B1B3B2B6B5B4E6D7C6
Table of rows/columns and their respective pins on the Elite-C for use with included firmware.


Place the bottom plate against the bottom of the base, and ensure that no wires or other electronics are pushing against it with excessive force.

Screw the case together with 4 M3x0.5 4mm screws.

You’re all done!

For flashing firmware, refer to your respective keyboard microcontroller for instructions. The included firmware is intended for use with the Elite-C and Vial.

Parts List

Threaded Inserts4
Elite-C Controller1
USB-C Extension Cable1
(Optional) Joystick1
*I would recommend purchasing more than 36 diodes.

If you have any questions or feedback, you can get in touch via the contact page, or through the Quadrum Labs discord server.