

Dabao
Unibody? Split? Why not both!
- Size
- 127.3 × 114.6 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 76
- Nets
- 73
- Pads
- 466
- Tracks, vias
- 1,098, 161
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 8 Oct 2025
- Updated
- 17 Oct 2026
Overview
Dabao is an open-source printed circuit board by justinmklam, from the justinmklam/dabao repository on GitHub, published under the MIT licence. It is a 2-layer board of 127.3 × 114.6 mm with 76 parts on 73 nets, routed with 1,098 tracks and 161 vias.
Its parts include 20 switches, 18 diodes, 7 connectors, 6 resistors and 2 ICs. It belongs with the keyboards and input boards and the nRF52 and nRF5x boards of this library.
README
README.mddabao
打包 (dǎ bāo or daa2 baau1), which means to take out (food) in Chinese, is a wireless, portable 36-key keyboard with a thumb trackpoint, designed for maximum flexibility and convenience.
Keyboard can be used as a unibody...
... or as a split!
Design Rationale
I found that split keyboards can be cumbersome when I’m not working at a desk. Managing a laptop plus two independent keyboard halves while moving between coworking spaces, cafés, or even working from the couch quickly becomes unwieldy, and thus began the journey to create a keyboard for this specific need...
This project explores a keyboard that can seamlessly switch between a unibody form factor (easy to pick up and carry) and a fully split configuration when there's space for a full ergonomic setup. An integrated pointing device is included to reduce the need for external peripherals, making it truly portable.
Albeit unconventional, the trackpoint is positioned under the thumb to:
- Enable the use of hotswap sockets while keeping the overall keyboard height low
- Eliminate the need to modify keycaps for trackpoint clearance
- Allow the fingers to remain on the home row during pointing tasks
In practice, using the thumb instead of the index finger feels functionally similar. After a short adjustment period, I personally haven't experienced a meaningful loss in accuracy or precision.
Features
- Unibody or Split: Unique magnetic 4-pin connector allows the keyboard to be used as a single unibody or split into two halves via a USB-C cable. Use unibody mode on the go, and split mode at your desk!
- Single Microcontroller: Uses one microcontroller and a GPIO expander, eliminating the need for two controllers or batteries to simplify charging and reduce costs.
- Integrated Trackpoint: For convenient and precise cursor control.
- Reversible PCB: Keeps ordering PCBs affordable.
- Wireless via Bluetooth: Wireless operation (between the host computer) for portability.
- Hotswap Switches: Supports Choc V1 or V2 switches. Can also be soldered directly if desired.
- Thin: The case measures a mere 8mm from top to bottom (excluding switches and keycaps), making it very portable.
Case
The case was designed to be 3D printed with FDM in PLA or similar material, making it easy to print at home with consumer grade printers. Multi-material would be useful for cleaner removal of supports, but is not necessary. The case as shown was printed in Charcoal Black Matte PLA on a BambuLab P1S (no AMS).
See here for CAD files, and printing instructions here.



Build Guide
[!WARNING] This project is provided for educational and experimental purposes only. It is shared "as-is," without any warranty of any kind, express or implied, including but not limited to the warranties of merchantability or fitness for a particular purpose. By using these files, you acknowledge that you are assuming all risks associated with the assembly, use, and operation of the hardware. The author shall not be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the project or the use of these files.
See Build Guide for instructions on how to build one for yourself!
Firmware
See zmk-config.
Acknowledgements
This design was inspired by the following keyboards:
Helpful trackpoint resources:
- infused-kim's Trackpoint Driver - outdated for the recent versions of zmk, but still a treasure trove of information
- Jorne Trackpoint Wiki
- TheMK Wiki - TrackPoint Overview
- KBD News - Trackpoint Integration Guide
- r/Trackpoint_Builders
- Trackpoint Builders Discord
Support
Thank you to my sponsors for making this project possible!
The PCBs for this project were manufactured by PCBWay. The boards came out clean with good tolerances and had a fast turnaround, especially considering it came from the other side of the world. Recommended if you're looking to prototype or build your own keyboard!
Parts
76| Qty | Value | Footprint | References |
|---|---|---|---|
| 18 | 1N4148 | Library:D_SOD-323_HandSoldering_Reversable | D1, D2, D3, D4, D5, D6, D7, D10, D11, D12, D13, D14, D15, D16, D17, D18 +2 |
| 18 | choc_v1_SW_HS | Library:Kailh_socket_PG1350_optional_reversible.kicad_mod | S1, S2, S3, S4, S5, S6, S7, S10, S11, S12, S13, S14, S15, S16, S17, S18 +2 |
| 12 | SolderJumper_2_Open | Jumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mm | JP1, JP2, JP3, JP4, JP5, JP6, JP7, JP8, JP9, JP10, JP11, JP12 |
| 4 | 4.7k | Resistor_SMD:R_0805_2012Metric | R2, R3, R4, R5 |
| 2 | Conn_01x04 | Library:TPSensorModule_Connector | J3, J7 |
| 1 | 100k | Resistor_SMD:R_0805_2012Metric | R8 |
| 1 | 10k | Resistor_SMD:R_0805_2012Metric | R1 |
| 1 | 2.2uF | Capacitor_SMD:C_0805_2012Metric | C1 |
| 1 | Conn_01x05 | Library:TPModule | J1 |
| 1 | Conn_Battery | Connector_JST:JST_PH_S2B-PH-K_1x02_P2.00mm_Horizontal | J5 |
| 1 | Display | Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical | J8 |
| 1 | LOGO | Library:takeout-logo | G*** |
| 1 | LOGO | Library:takeout-text | G*** |
| 1 | MCP23017_SP | Package_SO:SOIC-28W_7.5x17.9mm_P1.27mm | U2 |
| 1 | MagConn_01x04_Pin | Library:PinMagnetic_1x04_P2.54mm | J4 |
| 1 | SW_POWER | PCM_marbastlib-various:SW_MSK12C02-HB | SW2 |
| 1 | SW_RESET | Button_Switch_SMD:SW_Push_SPST_NO_Alps_SKRK | SW1 |
| 1 | SolderJumper_2_Bridged | Jumper:SolderJumper-2_P1.3mm_Bridged_Pad1.0x1.5mm | JP13 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_GCT_USB4085 | J2 |
| 1 | nice_nano | PCM_marbastlib-xp-promicroish:nice_nano_AH_USBup | U1 |
The 69 most common of 76 parts.
Questions
How big is the Dabao PCB?
It measures 127.3 × 114.6 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Dabao use?
76 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 Dabao KiCad files?
From the justinmklam/dabao repository on GitHub, at the commit this page was made from: the board is pcb/dabao/dabao.kicad_pcb and its schematic pcb/dabao/dabao.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Dabao 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).
Similar boards
- 2 layers48 × 107 mm

- 2 layers85 × 115 mm

OSO BOOK B1
joeycastillo/The-Open-Book
For details on how to build, test and use Open Book, I've made documentation available here.
76 parts8.1kCC-BY-SA-4.0 - 2 layers77 × 97 mm

Rgb to hdmi
hoglet67/RGBtoHDMI
Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI
76 parts1kGPL-3.0 - 2 layers137.9 × 92.7 mm

ErgoTravel
jpconstantineau/ErgoTravel
A Portable Ergonomic Split Keyboard inspired from the ErgoDox, Let's Split and Minidox
76 parts284MIT - 2 layers60.6 × 24.1 mm

Blep audio
CRImier/MyKiCad
My KiCad boards. Can't be bothered uploading individually anymore, so here you go.
76 parts253GPL-3.0 - 2 layers49 × 49 mm

OSBMS Balancer Rev 0.9
Teslafly/Dead-OpenBMS-dead
A scalable, open source battery management system
76 parts248 - 2 layers79 × 75 mm

PortableTerminal
profdc9/RFBitBanger
A QRP digital transceiver created from readily available parts for off-the-grid maintenance
76 parts222 - 2 layers35.1 × 36.6 mm

BinNanoFOC
katbinaris/nanofoc_devkit
Compact All-In-One BLDC Controler featuiring ESP32-S3, TMC6300 and Magalpha sensors. Small 35x35mm footprint.
76 parts146
Keyboard can be used as a unibody...
... or as a split!
