Mechanical keyboards are almost a necessity for anyone who spends a lot of time typing. Not only are they far more pleasant and satisfying to use, they can also improve typing performance and even reduce repetitive stress injuries. There is a thriving community of enthusiasts who build these keyboards and NoSegfault joined in on the fun with their own custom build. This Raspberry Pi Pico-based mechanical keyboard features a built-in joystick and the ability to switch between configurable layers without any host software.
Layers are alternate key mappings that users can switch to in order to change multiple key functions at once. The most obvious example for standard keyboards is the shift mapping, which switches characters to uppercase, numbers to punctuation, and so on. Another example is the function layer. Users can also create their own custom layers that contain whatever key maps they require. One could, for instance, create a layer for working in CAD that turns every key into a shortcut for a specific tool. NoSegfault’s keyboard lets users switch between those custom layers on the fly with an interface consisting of a small OLED screen, a joystick, and a pair of dedicated keys.
This keyboard’s hardware and firmware are both custom. In addition to the aforementioned layer interface, the hardware consists of a 3D-printed case, custom PCB, LED case lighting, a rotary control knob, Akko Blue key switches, Akko clear translucent blue key caps, and a Raspberry Pi Pico development board. NoSegfault programmed their own firmware to run on the Pico so that they could integrate the layer system. That required some programming hacks to utilize both of the Pico’s processor cores to store configurations in flash memory. NoSegfault configured the Pico to appear as a standard USB HID keyboard when plugged into a keyboard, so it will work with any operating system without any special software.
The Pico-Keyboard is an open source project and NoSegfault published all of the files on their GitHub page if you want to build your own keyboard.