Clem Mayer's Custom Bluetooth Keyboard Has a Unique Ortholinear Layout

This unique design from element14 Presents host Clem Mayer combines English and German into a single ortholinear-aligned BLE keyboard.

The idea

As a part of his ongoing effort to build an open source version of everything, Clem Mayer sought to create a wireless keyboard that not only communicates with a host device over Bluetooth Low Energy, but also features clicky mechanical switches and has an unusual layout. The ortholinear, or grid, layout was due to Mayer needing a way to easily combine the English Qwerty layout with the German Qwertz one since he works in both languages frequently.

Designing a PCB

After experimenting with an array of switches, Mayer went with a set of low-profile Gateron Blues due to their feel and compactness. Furthermore, the solderless variant can be mounted into friction-fit sockets so that they can be replaced and/or upgraded in the future without needing to break out the soldering kit.

On the microcontroller side, the ESP32-S3 was selected since it supports both Wi-Fi and BLE in a small footprint. This component, in turn, is connected to the multiplexed array of tactile switches, with each having an LED between one leg of the switch and the column line. One potential issue Mayer foresaw was that aligning a PCB perfectly within the enclosure could become a challenge, so he included a ribbon connector on both the main keyboard PCB and the smaller LiPo charging PCB to allow for some slack.

Circuit assembly and shell

Assembly started by placing the ESP32-S3, voltage regulation circuit, and USB-C connector onto the main PCB with solder paste and then reflowing it. After this step, Mayer hand-soldered each switch socket to the board's underside before putting together the LiPo charging daughterboard.

Since the electronics were now completed, the next steps involved attaching the array of 60 keycaps and creating some kind of enclosure to protect the internals. Unfortunately for Mayer, the blank keycaps he purchased did not fit his layout and, due to them not having any text, were hard to use. To solve this, every cap was modeled and 3D printed to have translucent numbers, letters, and punctuation marks that could be colored over without worrying about the text coming off after heavy usage.

Creating custom firmware

Although not 100% "from scratch" as Mayer originally intended, the core logic around sending keypresses to the host based on modifier keys was implemented from the ground-up. In essence, the keyboard is defined as having multiple "layers" wherein a single layer can be active when a modifier key such as function, alt, or shift is pressed. After using the Adafruit_Keypad library to scan the key matrix for a press and determining the key, the code can switch to the new layer if necessary and then sends the key press/release event over BLE to the host.

Using the keyboard

When Mayer went to press a key, he noticed that is was not being registered correctly, and this was due to the design choice of using LEDs as the diodes instead of signaling diodes which have a much lower voltage drop. But once the the resistors and diodes had been replaced, it was time to use the keyboard. His personal computer and phone were able to successfully connect while the light at the top would simultaneously indicate the current layer of the board. To see more about this interesting project, you can watch Mayer's video here on the element14 Presents YouTube channel.

Evan Rust
IoT, web, and embedded systems enthusiast. Contact me for product reviews or custom project requests.
Latest articles
Sponsored articles
Related articles
Latest articles
Read more
Related articles