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

CobraPad is a compact 8-key macro pad built around the Seeed XIAO RP2040, with a rotary encoder, SSD1306 OLED display, addressable RGB underglow, and a custom 3D-printed case.
CobraPad is an open-source printed circuit board by SnaggingCobra, from the SnaggingCobra/hackpad repository on GitHub, published under the MIT licence. It is a 2-layer board of 99 × 99 mm with 39 parts on 34 nets, routed with 337 tracks and 17 vias.
It is built around the SK6812MINI-E. Its parts include 16 diodes, 9 switches, 8 capacitors and 2 ICs. It belongs with the lEDs and displays boards of this library.
CobraPad is a compact 8-key macro pad built around the Seeed XIAO RP2040, with a rotary encoder, SSD1306 OLED display, addressable RGB underglow, and a custom 3D-printed case. The board and case are treated as the source of truth, and the firmware is mapped directly to the actual KiCad net names and pad assignments.




| Component | Quantity | Notes |
|---|---|---|
| Seeed XIAO RP2040 | 1 | Main controller |
| Mechanical switches | 8 | Key matrix |
| Diode (1N4148 or equivalent) | 8 | One per switch |
| Rotary encoder with switch | 1 | EC11-style encoder |
| SSD1306 128x32 OLED | 1 | I2C display |
| SK6812MINI-E RGB LEDs | 8 | Addressable LED chain |
| Decoupling capacitor | 3 | Power filtering |
| Resistor | 1 | Pull-up / support |
| 3D-printed case parts | 1 set | Top and bottom shell |
| M2 hardware | 4+ | Case assembly |
The firmware in Firmware/circuitpython/code.py is mapped to the board as follows:
| Function | KiCad signal / board net | CircuitPython pin |
|---|---|---|
| Row 1 | PA02_A0_D0 | D0 |
| Row 2 | PA4_A1_D1 | D1 |
| Col 1 | PA10_A2_D2 | D2 |
| Col 2 | PA11_A3_D3 | D3 |
| Col 3 | PB08_A6_D6_TX | D6 |
| Col 4 | PB09_A7_D7_RX | D7 |
| OLED SDA | PA8_A4_D4_SDA | D4 |
| OLED SCL | PA9_A5_D5_SCL | D5 |
| Encoder A | PA7_A8_D8_SCK | D8 |
| Encoder B | PA5_A9_D9_MISO | D9 |
| LED data | PA6_A10_D10_MOSI | D10 |
The table below is the verified BOM for the current KiCad schematic and board assembly.
| Component | Quantity | Description |
|---|---|---|
| Seeed XIAO RP2040 | 1 | Main microcontroller board |
| Mechanical keyboard switch | 8 | Cherry MX-compatible switches for the key matrix |
| 1N4148 diode | 8 | One diode per switch for matrix protection and flyback suppression |
| SK6812MINI-E RGB LED | 8 | Addressable underglow/lighting LEDs |
| SSD1306 128x32 OLED module | 1 | I2C display for status and output |
| Rotary encoder with push switch | 1 | EC11-style encoder for control input |
| 100 nF decoupling capacitor | 8 | SMD power-filter capacitors used across the board (C1-C8) |
| M2 case mounting hardware | 4 | Screws/standoffs used for the enclosure assembly |
| 3D-printed top shell | 1 | Custom top enclosure cover |
| 3D-printed bottom shell | 1 | Custom bottom enclosure base |
See BOM.csv for the CSV version of the same parts list.
The final project includes fabrication and production artifacts in production:
The assembled CAD model is located in CAD/CobraPAD_All together.step. This file represents the assembled project geometry and includes the designed enclosure plus the PCB in context. The project also includes the editable FreeCAD source file in CAD/Final.FCStd.
The active firmware is written in CircuitPython and lives in Firmware/circuitpython/code.py. The companion notes are in Firmware/README.md.
This repository is prepared as a final project archive and submission bundle for the CobraPad macro pad. The current project includes the final PCB source, fabricated production outputs, custom case files, and the CircuitPython firmware.
This project is released under the MIT license. See LICENSE.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 100nf | Capacitor_SMD:C_0603_1608Metric | C1, C2, C3, C4, C5, C6, C7, C8 |
| 8 | 1N4148 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D1, D2, D3, D4, D5, D6, D7, D8 |
| 8 | SK6812MINI-E | LED_SMD:LED_SK6812MINI-E_3.2x2.8mm_P1.5mm_ReverseMount | D9, D10, D11, D12, D13, D14, D15, D16 |
| 8 | SW_Push | Button_Switch_Keyboard:SW_Cherry_MX_1.00u_Plate | SW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8 |
| 1 | ER_OLEDM0.91_1x-I2C | Display:ER_OLEDM0.91_1x-I2C | U2 |
| 1 | MOUDLE-SEEEDUINO-XIAO | footprints:XIAO-Generic-Hybrid-14P-2.54-21X17.8MM | U1 |
| 1 | RotaryEncoder_Switch | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm | SW9 |
The 35 most common of 39 parts.
It measures 99 × 99 mm and has 2 copper layers, 1.6 mm thick.
39 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 SnaggingCobra/hackpad repository on GitHub, at the commit this page was made from: the board is PCB/CobraPad/CobraPad.kicad_pcb and its schematic PCB/CobraPad/CobraPad.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.

