
PSLab
fossasia/pslab-hardware
PSLab Hardware Design and Schematics https://pslab.io

A macropad featuring a custom-built PCB, 3D-printed case, and programmed using CircuitPython.
Macropad is an open-source printed circuit board by cdalaimo, from the cdalaimo/xiao repository on GitHub. It is a 2-layer board of 100 × 95 mm with 36 parts on 38 nets, routed with 139 tracks and 0 vias.
It is built around the 1N4148W. Its parts include 12 diodes, 4 resistors, 2 capacitors, 1 IC and 1 switch. It belongs with the keyboards and input boards and the RP2040 boards of this library.
A custom 3×4 macropad with a rotary encoder, built around an RP2040 (More specifically the Seeeduino XIAO RP2040). Includes full KiCad hardware design and PlatformIO prototyping firmware.

This project was my first ever attempt at designing a PCB from scratch. After independently teaching myself some of the fundamentals of KiCAD and how to solder electronics, I already began designing a slightly more sophisticated prototype to further develop these skills. (A new repo featuring that project will be uploaded soon!).
Still prototyping a 3D printed case after a couple of iterations with fitment issues.
The firmware currently included in this repo contains the prototyping firmware. key matrix encoder and prints activity over Serial (115200 baud). This is intended to verify the board (solder joints, diode orientation, encoder wiring) before real key-mapping firmware is written.
.
├── firmware/ PlatformIO project (Arduino framework)
│ ├── src/main.cpp
│ └── platformio.ini
├── hardware/ KiCad project
│ ├── macropad.kicad_pro / .kicad_sch / .kicad_pcb
│ ├── macropad.dsn
│ └── gerbers/
└── docs/ Additional documentation / images
│ └── prototype.png Designed in KiCad. Key matrix uses one diode per switch (standard anti-ghosting matrix). GPIO Pin mapping:
| Function | GPIO |
|---|---|
| ROW1 | 7 |
| ROW2 | 6 |
| ROW3 | 29 |
| COL1 | 26 |
| COL2 | 0 |
| COL3 | 28 |
| COL4 | 27 |
| ENC_A | 3 |
| ENC_B | 4 |
| ENC_SW | 1 |
These two libraries helped tremendously in the design process:
https://github.com/ebastler/marbastlib
https://github.com/zykrah/kicad-kle-placer
I'd also like to acknowledge these projects with helped inspire my own:
| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | 1N4148W | Diode_SMD:D_SOD-123 | D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12 |
| 12 | MX_SW_solder | PCM_marbastlib-mx:SW_MX_1u | MX1, MX2, MX3, MX4, MX5, MX6, MX7, MX8, MX9, MX10, MX11, MX12 |
| 4 | 10k | Resistor_SMD:R_0805_2012Metric | R1, R2, R3, R4 |
| 2 | 0.1uF | Capacitor_SMD:C_0805_2012Metric | C13, C14 |
| 1 | RotaryEncoder_Switch | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm | SW1 |
| 1 | Seeeduino Xiao rp2040 | PCM_marbastlib-xp-promicroish:Xiao_rp2040_ACH | U2 |
The 32 most common of 36 parts.
It measures 100 × 95 mm and has 2 copper layers, 1.6 mm thick.
36 parts, built around the 1N4148W. 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 cdalaimo/xiao repository on GitHub, at the commit this page was made from: the board is hardware/macropad.kicad_pcb and its schematic hardware/macropad.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask cdalaimo before reusing the design.

fossasia/pslab-hardware
PSLab Hardware Design and Schematics https://pslab.io

pierrechevalier83/ferris
A low profile split keyboard designed to satisfy one single use case elegantly



MickiusMousius/Rolio46Keyboard
A split wireless keyboard based on the Corne and Sofle


sadekbaroudi/bgkeeb
This is a reversible 100mm x 100mm pcb with support for mx or choc switches (no hotswap), per key led, rotary encoders, and exposes the SDA/SCL/GND/VCC lines in the form of the pimoroni trackball pins (meaning you can…
