

Side
Modular ergonomic keyboard with touchpad and display
- Size
- 97.7 × 81.2 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 50
- Nets
- 33
- Pads
- 274
- Tracks, vias
- 617, 94
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 19 Mar 2024
- Updated
- 27 Apr 2024
Overview
Side is an open-source printed circuit board by zzeneg, from the zzeneg/trio repository on GitHub, published under the MIT licence. It is a 2-layer board of 97.7 × 81.2 mm with 50 parts on 33 nets, routed with 617 tracks and 94 vias.
Its parts include 18 diodes, 18 switches and 10 connectors. It belongs with the keyboards and input boards of this library.
README
README.mdtrio
Modular unibody keyboard with two VIK modules.
[!CAUTION] This keyboard is designed for minimal vertical spacing (19x16mm). Regular keycaps will not fit, you must print your own - for example my DES MinY.
It's created as a cheap prototype to test VIK abilities and modules - all PCBs are under 100x100mm, one-piece case <0.3kg for cheap JLCPCB shipping.
Build process requires a lot of hand-soldering with 0.5mm pitch, you need good tools and experience to do that.
I do not recommend to build it exactly like that, but to use it as inspiration for your projects. Feel free to use and improve KiCad and Fusion 360 source files.
Features
- MinY (19x16mm) spacing
- 36 KS-33 (Gateron Low Profile) keys with hotswap
- central PCB with two independent VIKs, DRV2605L haptic feedback and rotary encoder
- periferal PCBs for keys
- 3D printed case with 1.28" display, Azoteq TPS65 touchpad and 33mm encoder
Photos

Gerber files
- Main PCB
- Side PCB
- Azoteq VIK adapter
- Display VIK adapter - 1.28" round version
Case files
Firmware
Companion app for Raw HID communication. Use "productId": 2120 for that keyboard.
QMK
Please see main config.h and rules.mk for comments and available options.
Vial
Bill of materials
- PCB
- 36 KS-33 switches
- 36 hotswap sockets for KS-33 switches
- 3D printed case
- Azoteq TPS65 touchpad
- Azoteq VIK adapter
- Bare 1.28" round display - without PCB
- Display VIK adapter - 1.28" round version + adapter's BOM
- Helios-sized (26 GPIOs) RP2040 MCU
- 37 SMD SOD-123 1N4148 diodes
- Vertical and horizontal 12pin FFC/FPC connectors
- 12pin 0.5mm pitch 6cm FFC cable - both reverse and forward variants
- short EC11 rotary encoder
- 32mm encoder knob
- SMD 4x4x1.5mm push button
- 4mm M2 screws with flat head
- M2 heatset inserts - 3mm length, 3.2mm diameter for resin case or 3.5mm for Nylon/PLA
- 7x1.5 legs
- for haptic feedback:
- DRV2605L motor controller
- 2 1uF capacitors (SMD 1206 size)
- 2 4.7kOhm resistors (SMD 1206 size)
- LRA or ERM motor
Build notes
- side PCBs have two keys that have to be broken off and handwired to correct places (diodes stay on the big part)
- rotary encoder uses GPIO from VIK2, so Azoteq has to be connected to VIK2 port, and display to VIK1. Make sure to bridge solder jumpers on the back.
- cheap ERM motors may not have enough internal resistance, if you motor does not work, try to add 5-10R resistor to it
- see photos for FFC connections
Development
For proper KiCad setup install my zzkeeb library
Support
If you like my work and want to support my future designs, please consider sponsorship.
Sponsors
Thank you very much for your support!
Parts
50| Qty | Value | Footprint | References |
|---|---|---|---|
| 18 | D | zzkeeb:Diode_1N4148-SOD123-reversible-flip3d | D1, D2, D3, D4, D5, D6, D7, D10, D11, D12, D13, D14, D15, D16, D17, D18 +2 |
| 18 | Switch | zzkeeb:Switch_KS-miny-reversible-hotswap-south | SW1, SW2, SW3, SW4, SW5, SW6, SW7, SW10, SW11, SW12, SW13, SW14, SW15, SW16, SW17, SW18 +2 |
| 4 | MountingHole | zzkeeb:Hole_M2 | H1, H2, H3, H4 |
| 2 | C0 | TestPoint:TestPoint_THTPad_D1.5mm_Drill0.7mm | J2, J7 |
| 2 | C2 | TestPoint:TestPoint_THTPad_D1.5mm_Drill0.7mm | J4, J9 |
| 2 | Conn_01x12_Socket | zzkeeb:Connector_FFC-12pin-0.5mm-horizontal | J5, J6 |
| 2 | R0 | TestPoint:TestPoint_THTPad_D1.5mm_Drill0.7mm | J1, J8 |
| 2 | R3 | TestPoint:TestPoint_THTPad_D1.5mm_Drill0.7mm | J3, J10 |
Questions
How big is the Side PCB?
It measures 97.7 × 81.2 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Side use?
50 parts. 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.
Where can I download the Side KiCad files?
From the zzeneg/trio repository on GitHub, at the commit this page was made from: the board is pcb/side.kicad_pcb and its schematic pcb/main.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Side design in my own project?
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).
More from zzeneg/trio
1- 2 layers74 × 42 mm

Similar boards
- 2 layers187.2 × 26.6 mm

- 2 layers45.7 × 25.9 mm

- 2 layers21 × 31.5 mm

- 2 layers42 × 32.5 mm

Lipoboard
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
50 parts915 - 2 layers80 × 109.5 mm

NucDeck Right Controller PCB - Rev 1.2
dmcke5/NucDeck
The Open Source DIY Handheld Gaming PC!
50 parts561CERN-OHL-S-2.0 - 2 layers101 × 31.5 mm

- 2 layers123.9 × 94.4 mm

- 2 layers50 × 25 mm

Mbus master
roarfred/AmsToMqttBridge
Minimalistic system to read AMS/HAN data from electrical meter
50 parts223
