This project started as an iteration of my first keyboard, applying what I learned creating that and at my new job (software and electronics prototype developer). The goal was a fully open-source, easy to build and repairable, modular keyboard.

All files can be found on my Github. The PCB is available on Crowd Supply.

Destiguishing Features

The first improvement to the original keyboard was making it more streamlined and removing rarely used features like the screens and encoders. Adding hot-swap switch sockets and the option of different joysticks converted the original to a gaming keyboard, and since it's a split design, one of the very few examples usable by left handed gamers (using the mouse with their left hand).

To elaborate on the joysticks, both options are connected using ribbon cables, making replacement very easy and somewhat customizable. An additional GPIO header breaking out the joysticks connector pins allows for custom solutions.

The connectors a specifically aligned in a way that allows for both types of joystick to be in the exact same location. Which in turn allows for the use of inserts (or adapters) in the keyboards case.

The Case

Speaking of the case, the keyboard is designed as a "gasket-mount" which enables the best noise reduction. This is further improved by additional felt damping sheets.

To highlight one special design principle: The case was designed with CNC manufacturability in mind. Meaning no sharp inside corners, only simple chamfers to round over outside corners, and tight tolerances. The last one requires a very dialed-in 3D printer, though.

Firmware and additional Features

The keyboards main switches are supplemented by secondary buttons. By default they are media keys, but can be (like all the other buttons, and joystick) remapped using either QMK or VIAL firmwares. VIAL allows for remapping using a website, no flashing or other software required.

All switches and buttons are individually RGB backlit and have configurable animations, color, brightness. Of course they can be turned off.

The Joysticks

The two connectors mentioned earlier are for these joysticks. On the left the newest version of Alps Alpine used in Gaming Handhelds and VR controllers. On the right is mostly know from the PSP (3000 version).

I personally prefer the left one (easier to control, has an integrated button), but I like to provide options to potential users.

The custom firmware allows to change the operating mode of these joysticks. The modes consist of analog (regular joystick, detected as gamepad), digital (simulates regular buttons), mouse (full mouse pointer with left and right click support (not available on the PSP joystick)).

Special Order Keycaps

The only real issue this design has is finding keycaps, since its a backlit, ergo design, that uses 1u sized caps, only. I found few low profile sets, but the breakthrough came with finding a manufacturer selling custom keys, with optional backlighting support.

PCB Design Desicitions

Going into detail about the PCBs design: The goal was to have minimal case borders, which the gasket-mount style of this keyboard does not really promote. So complact placment of all components was critical in my desicition making.

I started with the RP2040 for my MCU (as seen in these older images). After multiple protypes and testing revealed that the keyboard does not initialize (at all or fast enough) on a computers first boot to enter BIOS/UEFI, I switched to the STM32F401 MCU, which solved these problems.

The AUX (TRS) connector is not for headphones, but for connecting two halves. Only one half needs to be connected to a computer.

ESD, EMI, and backfeeding protection components complete the design.

Starting a Crowd Supply Campaign

After everything was working as desired, I built a few examples for friends and myself. Using the keyboard for few months, there were no issues or complaints, only positive feedback.

This led me to Crowd...

Read more »