My full designs for an ortholinear, hotswap, MX switch custom mechanical keyboard featuring an 128x32 pixel OLED display, a rotary encoder and 90 individually-addressable RGB LEDs.
I chose a XIAO RP2040 as the microcontroller, as it has a very small footprint, and adding an rp2040 directly to the PCB would have introduced too many issues with soldering; I want this board to be easy to make! Maybe I'll make a V2 someday with a chip directly on-board.
The firmware is written in C, and uses the Pico SDK, as well as my own SQUIRREL library. See slab-firmware for the downloads, and documentation.
The keyboard is controlled by OpenRGB only at the moment. Key remapping may be added into a seperate program later. I maintain my own fork of OpenRGB that has the Slab added as a device. OpenRGB can control almost every single RGB device there is, so it made sense to implement the RGB control directly into OpenRGB, for maximum compatibility. If the project gets enough attention, I might submit a merge request to OpenRGB on gitlab, so it is added to the main version as well.
I have made a custom PCB and 3D-printable case for the keyboard. Follow the links for more detail!
Firmware downloads are available in slab-firmware, 3D-print files can be found under exported-stl in slab-case, and a bill-of-materials is included in slab-pcb.
The software you will need to contribute is Nix. Nix is an advanced, reproducible, and declarative package manager. Most repos that I work in use a flake.nix
file for development, building and sometimes testing. Use nix develop
to get started contributing, then submit a pull request with your new additions.