

Trio
Modular ergonomic keyboard with touchpad and display
- Size
- 74 × 42 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 28
- Nets
- 50
- Pads
- 169
- Tracks, vias
- 611, 67
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 8.0 (file 20240108)
- Created
- 19 Mar 2024
- Updated
- 27 Apr 2024
Overview
Trio 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 74 × 42 mm with 28 parts on 50 nets, routed with 611 tracks and 67 vias.
It is built around the RP2040 and DRV2605LDGS. Its parts include 5 connectors, 2 capacitors, 2 resistors, 1 IC and 1 diode. It belongs with the keyboards and input boards and the RP2040 boards of this library.
Main components
2README
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
28| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 5V | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP1, JP2, JP4, JP5 |
| 4 | MountingHole | zzkeeb:Hole_M2 | H1, H2, H3, H4 |
| 2 | 1u | Capacitor_SMD:C_1206_3216Metric | C2, C3 |
| 2 | 4.7k | Resistor_SMD:R_1206_3216Metric | R1, R2 |
| 2 | Conn_01x12_Socket | zzkeeb:Connector_FFC-12pin-0.5mm-horizontal | J4, J5 |
| 2 | Connector_VIK-keyboard | zzkeeb:Connector_VIK-horizontal-keyboard | VIK_K1, VIK_K2 |
| 2 | Connector_VIK-keyboard | zzkeeb:Connector_VIK-vertical-keyboard | VIK_K3, VIK_K4 |
| 2 | SolderJumper_3_Open | Jumper:SolderJumper-3_P1.3mm_Open_Pad1.0x1.5mm | JP6, JP7 |
| 1 | D | zzkeeb:Diode_1N4148-SOD123 | D1 |
| 1 | DRV2605LDGS | Package_SO:VSSOP-10_3x3mm_P0.5mm | U1 |
| 1 | RP2040 | zzkeeb:MCU_rp2040-helios | J3 |
| 1 | RotaryEncoder_Switch | zzkeeb:RotaryEncoder_EC11 | RE1 |
| 1 | SW_Push | zzkeeb:Button_SW_SPST_SKQG_WithoutStem | RST1 |
| 1 | VCC | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP3 |
| 1 | out+ | TestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mm | J1 |
| 1 | out- | TestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mm | J2 |
Questions
How big is the Trio PCB?
It measures 74 × 42 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Trio use?
28 parts, built around the RP2040 and DRV2605LDGS. 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 Trio KiCad files?
From the zzeneg/trio repository on GitHub, at the commit this page was made from: the board is pcb/main.kicad_pcb and its schematic pcb/main.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Trio 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 layers97.7 × 81.2 mm

Similar boards
- 4 layers25 × 50 mm

Print and Place PCB
ollyoid/Printegrated-Circuits
GCode post-processor for integrating PCBs into 3D prints
49 parts5 - 2 layers138.8 × 96.4 mm

- 2 layers287.8 × 126.7 mm

- 6 layers50.2 × 77.2 mm

Meko
KOEGlike/meko
A linux music player with ddr3, a 70hz e-paper display and a haptic touchpad
274 parts90GPL-3.0 - 2 layers71.1 × 24.1 mm

Dactyl manuform gimbal
sffubs/dactyl_manuform_gimbal
Instrutions and designs for building the dactyl-manuform-gimbal keyboard
20 parts57 - 4 layers82.8 × 33 mm

E ink watch
sandgum/Triangulate-ES_01-Watch
A 5mm thick smartwatch which uses an E-ink display and two OLEDs to display information while consuming very little power
162 parts22 - 2 layers55.6 × 71.2 mm

- 4 layers72 × 75 mm

Nrf52480 Dev board
brendena/Nordic_Pebble_Steel
The goal of this project is to replace the main motherboard in the pebble steel with newer parts. Specifically the cpu will be a Nordic NRF52840.
75 parts9
