
Main panel
google/mozc-devices
Circuit diagrams and firmware source code for Gboard DIY keyboards

A Low Profile 60% Keyboard with an OLED Display and Rotary Encoder. This is the first iteration of the FREEBOARD, I will make one that has space for a SoM carrier board to be placed inside the case, similar to a Raspberry Pi 500 where the entire computer is encapsulated in a keyboard body.
FREEBOARD is an open-source printed circuit board by Ningheim, from the Ningheim/FREEBOARD repository on GitHub, published under the MIT licence. It is a 2-layer board of 314.3 × 161.9 mm with 370 parts on 228 nets, routed with 3,055 tracks and 437 vias.
It is built around the SK6812MINI-E. Its parts include 172 diodes, 95 capacitors, 86 switches, 4 resistors and 1 IC. It belongs with the computers and single-board computers and lEDs and displays boards and the RP2040 boards of this library.
A 60% RGB Backlit Keyboard with a OLED display, rotary encoder, and adjustable inclination stands.
This keyboard is powered by an Orpheus/Raspberry Pi Pico and an additional MCP23017 for extra GPIO pins. The firmware is entirely coded in QMK and the case is a little wider than a Framework 13 for reference, at about 320x165mm it's made to be compact and accessible to be used alongside a laptop. I made this because I wanted to fix a lot of things with the layout of other wormier and logitech keyboards where the keys weren't as inline as I'd hoped whilst still including function keys and appealing RGB factors.
You can use adhesive for some of the parts but it isn't required as they should sit flush without any glue, you can also sand things down to fit flush if your 3d printed had a printing issue. All of the parts I'm naming in this section have corresponding names in the onshape document.
Plastic Spacer in first, then the Plastic Window into the slot on the inside of the Base Case, The window is meant to be made out of clear material like transparent plastic or something so you can see the Silkscreen design on the bottom side of the board.Base CasePlate ontop of it. Now we have the Top Cover and Translucent Emblem left, so put the Translucent Emblem into the matching cutout on the Top Cover, and insert those joined pieces into the top of the case, to keep everything pressed down. Lastly, add the encoder knob and you're done!Freeboard uses QMK Firmware running on a Raspberry Pi Pico. The firmware source is available in firmware/freeboard.
The firmware supports: An 81-key matrix 91 SK6812MINI-E RGB LEDs An I2C OLED display A rotary encoder connected through an MCP23017 GPIO expander Media and RGB controls through a function layer
To start building the firmware, install and configure the QMK development environment, then copy the Freeboard firmware into your QMK installation:
cp -a firmware/freeboard ~/qmk_firmware/keyboards/ cd ~/qmk_firmware qmk clean qmk compile -kb freeboard -km default
After a successful build, the flashable firmware will be located at:
~/qmk_firmware/freeboard_default.uf2
Unplug Freeboard from the computer. Hold the BOOTSEL button on the Raspberry Pi Pico. While continuing to hold BOOTSEL, connect the keyboard to the computer using USB. Release BOOTSEL when a removable drive named RPI-RP2 appears. Copy freeboard_default.uf2 onto the RPI-RP2 drive. The drive will disconnect automatically and the keyboard will restart with the new firmware. Flashing future updates
Hold Fn and press Esc to enter the RP2040 bootloader. When the RPI-RP2 drive appears, copy the newly compiled freeboard_default.uf2 onto it.
The Fn key is located between Right Alt and Left Arrow.
Input Action Rotate encoder Adjust volume Press encoder Mute or unmute Fn + Esc Enter the bootloader Fn + Home Toggle RGB lighting Fn + Page Up Select the next RGB effect Fn + Page Down Select the previous RGB effect Fn + Up Increase RGB brightness Fn + Down Decrease RGB brightness Fn + Left Decrease RGB hue Fn + Right Increase RGB hue Fn + End Increase RGB animation speed RGB brightness is limited in firmware because all 91 LEDs are powered from USB VBUS. Increasing the limit could exceed the available USB current.
| Item | Cost | Link |
|---|---|---|
| PCB | $37.84 | JLCPCB |
| Switches | $40 | Aliexpress |
| Keycaps | $10 | Aliexpress |
| Encoder | $1 | Aliexpress |
| OLED Display | $2 | Aliexpress |
| Plastic Case | $38.36 | JLC3DP |
| Electronic Components | $22.18 | LCSC |
| Display Connector | $7.00 | Adafruit |
| Buffer for shipping and fees | $5.00 | N/A |
| Total | ~$155 |
Notes:
The BOM file itself is in ~\FREEPCB\PRODUCTION, and the keycaps, switches, stabilizers, and encoder all probably have to be bought from an external retailer. So prices may vary. And there are screw holes for M3 screw inserts if needed. All of the parts will be friction fitted and pressed down flush but if they do come apart unexpectedly glue is always an answer since almost all of the parts need to stay in static positions anyways.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 91 | 100nF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25 +75 |
| 91 | SK6812MINI-E | footprints:SK6812MINI-E_fixed | D100, D101, D102, D103, D104, D105, D106, D107, D108, D109, D110, D111, D112, D113, D114, D115 +75 |
| 81 | 1N4148 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +65 |
| 81 | SW_Push_45deg | PCM_marbastlib-mx:SW_MX_1u | SW1, SW2, SW10, SW11, SW12, SW13, SW14, SW15, SW16, SW17, SW18, SW19, SW20, SW21, SW22, SW23 +65 |
| 8 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4, H5, H6, H7, H8 |
| 2 | 0.1uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C1, C2 |
| 2 | 4.7k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R2, R3 |
| 2 | LOGO | LOGO | G***, G*** |
| 2 | MX_stab | PCM_marbastlib-mx:STAB_MX_2.25u | S2, S3 |
| 1 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1 |
| 1 | 10uF | Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder | C3 |
| 1 | 350 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R4 |
| 1 | 470uF | Capacitor_Tantalum_SMD:CP_EIA-7343-31_Kemet-D_HandSolder | C5 |
| 1 | MCP23017x-x-SP | Package_DIP:DIP-28_W7.62mm | U1 |
| 1 | MX_stab | PCM_marbastlib-mx:STAB_MX_6.25u | S4 |
| 1 | MX_stab | PCM_marbastlib-mx:STAB_MX_2u | S1 |
| 1 | OLED_DISPLAY | Connector_JST:JST_SH_BM04B-SRSS-TB_1x04-1MP_P1.00mm_Vertical | J1 |
| 1 | RaspberryPi_Pico | Module:RaspberryPi_Pico_Common_THT | A1 |
| 1 | RotaryEncoder_Switch | PCM_marbastlib-various:ROT_Alps_EC11E-Switch | SW82 |
It measures 314.3 × 161.9 mm and has 2 copper layers, 1.6 mm thick.
370 parts, built around the SK6812MINI-E. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the Ningheim/FREEBOARD repository on GitHub, at the commit this page was made from: the board is FREEPCB/FREEBOARD.kicad_pcb and its schematic FREEPCB/FREEBOARD.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

google/mozc-devices
Circuit diagrams and firmware source code for Gboard DIY keyboards

Bastardkb/Dilemma
The Dilemma is a vertical stagger low-profile keyboard with mods.

Pwnsat/FlatSat
Flatsat v1.0 is a hardware based platform for aerospace cybersecurity research

adamws/kicad-kbplacer
KiCad plugin for automatic keyboard's key placement and routing

imchipwood/dumbpad
Simple 4x4 numpad with rotary encoder. Powered by QMK via ATmega32u4 Pro Micro

makerforgetech/modular-biped
An open source framework for creating a bipedal modular companion robot.

