Internal Wire Split Keyboard

DIY Split Mechanical Keyboardwith Internal Wiring

A hand-wired keyboard build log for a thin split ergonomic keyboard using QMK firmware, Seeed XIAO RP2040, MCP23017 I/O expanders, and a 3D printed keyboard case.

Structure of the Internal Wire Split Keyboard
No dedicated PCB / Internal Wire plate Hot-swap sockets / low-profile structure

This page is a work-in-progress project log.

Design notes, wiring details, QMK setup, and testing records are being added step by step .

Story

Why I Built It

In November 2025, shortly after buying a 3D printer, I started building a split keyboard.

The first version was finished in about a month, but I was not satisfied with its appearance or feel. I decided to rebuild it without compromising the parts that bothered me.

Working around my job and other projects, and with a few pauses when the design stalled, it took about four months to finally complete this version.

Thin Profile

The case was designed to stay as thin as possible while keeping enough strength for daily use.

Durable Wiring

Wires are routed through grooves in the body so vibration is less likely to reach the internal wiring.

Maintenance

All joined parts use snap-fit structures, making the keyboard easier to take apart and assemble.

Switch Reuse

PCB sockets make it possible to reuse expensive switches, even if I rebuild it again.

No Dedicated PCB

I avoided designing a dedicated PCB and aimed to balance thinness, strength, and serviceability with hand wiring.

Production Note

This is not a quick-build method

This method is not intended for beginners or production-style builds. It has many wires, and soldering, continuity checks, and fitting everything inside the case take a lot of time.

In exchange, it focuses on long-term use by keeping the wiring contained and fixed inside the structure.

I wanted a hand-wired keyboard that could still be thin, clean, and practical as a daily split ergonomic keyboard.That led to an internal wiring keyboard structure that hides the matrix wiring inside the printed parts.

Concept

Internal wiring for a hand-wired keyboard

The wiring is hidden inside grooves in the plate instead of being exposed outside the keyboard. The goal is to reduce the unsupported wiring often seen in traditional hand-wired keyboard builds, making the keyboard thinner and less prone to wire breakage.

Comparison

How it differs from a traditional hand-wired keyboard

The difference is whether the wiring is held in place by hand during assembly, or fixed inside the structure first.

Traditional hand-wired keyboard

Traditional hand-wired keyboard wiring
  • Wires are suspended in the air
  • Soldering is more demanding
  • Appearance depends heavily on skill

Internal wiring keyboard

Internal wire keyboard wiring
  • Wires are fixed internally
  • Soldering is done in a stable state
  • Wiring does not appear on the outside

Structure

3D printed keyboard case, without a dedicated PCB

The keyboard reuses PCB hot-swap sockets without making a dedicated PCB. Combined with a 3D printed keyboard case and internal wiring routes, this makes a thinner profile possible while allowing key switches to be reused and replaced.

No dedicated PCB

The key matrix uses internal wiring, avoiding the thickness and ordering process of a dedicated PCB.

PCB socket reuse

Hot-swap sockets are reused so switches can be replaced.

Low-profile structure

Without stacking a PCB, the case and plate can stay thinner.

Process

Mechanical keyboard build log

This mechanical keyboard build log covers the layout, internal wiring, 3D printed parts, QMK firmware, Seeed XIAO RP2040 keyboard controller, and MCP23017 I/O expander setup.

01

Sketch and concept

Decide the key count, split shape, size, thinness, and overall appearance. At this stage, the goal is not precise dimensions but deciding what kind of structure you want to make. This is the most enjoyable part of the process.

Rough sketch of the keyboard exterior
Keyboard layout concept diagram

Note If the direction is vague here, later steps tend to create more rework.

02

Wiring diagram

Organize the key layout, row-column matrix, Seeed XIAO RP2040 keyboard controller, MCP23017 I/O expander, and left-right connection wiring.

Left-side wiring diagram and pinout

Note Wiring takes up more space than it first appears. Extra wires or inefficient routes can keep everything from fitting inside the case, so check the diagram repeatedly for missing paths and overlaps.

03

3D modeling

Design the top cover, switch plate, base plate, and bottom case as a 3D printed keyboard case. The wiring grooves, PCB socket positions, screw holes, and insert nut positions are also decided here. Because insert nuts can fail, the structure should allow multiple fixing points.

Another view of the keyboard structure during 3D modeling
Created in Fusion 360

Note Because the wiring route is decided here, this design step changes the difficulty of the whole build.

04

Parts list and tool preparation

Organize the required parts and tools: mechanical switches, PCB sockets, Seeed XIAO RP2040, MCP23017 I/O expanders, wire, screws, insert nuts, and soldering tools.

Note A purchasing mistake stops the work, so preparing the list matters.

05

3D printing

Print the keyboard case parts and check dimensions, strength, and fit. Printing takes time, and failed prints or unsatisfying shapes make this one of the hardest steps.

Bambu Lab A1 used for 3D printing
Used printer: Bambu Lab A1
3D printed keyboard case parts
Actual parts printed from the model data

Note Since this was my first time 3D printing, this was also the step where repeated revisions made me realize that buying something off the shelf might have been cheaper.

06

Glue PCB sockets to the base plate

Fix the PCB sockets in their intended positions with two-part epoxy. I used a 30-minute curing type. After gluing the sockets, install the switch plate and key switches, place a weight on top, and leave it for a full day.

Gluing PCB sockets to the base plate

Note When inserting and removing switches, the surface around a socket can peel up. After the epoxy cures, adding a little more adhesive around the socket with a toothpick or other fine applicator helps make it more stable.

07

Wiring and soldering

Run the wires through the grooves inside the plate, position them in place, and then solder them. By fixing the wiring routes on the structural side, this design aims to improve repeatability during assembly and reduce the risk of broken wires or shorts caused by vibration or contact.

Internal wire keyboard wiring

Note When soldering on the base plate, press the wire into the groove with a small flat-head screwdriver so it does not leave a raised bump.

Input test with temporary wiring

Connect the microcontroller and MCP23017 with temporary wiring, then check whether key input is recognized correctly. Compare the wiring, diode orientation, and QMK matrix settings one by one, and move to the next step only after confirming that there are no problems.

Testing key input with temporary wiring connected to the microcontroller and MCP23017
08

Programming

Configure the keymap, matrix, and MCP23017 I/O expander settings in QMK firmware. If the hardware layout and pin settings do not match, key input will not be recognized correctly.

Firmware design overview

This firmware is a QMK-based control program designed for the Take&Clock Works split keyboard. With an RP2040 at the center, it reads the left and right key matrices through I2C-connected MCP I/O expanders and operates as a 4-row by 14-column split keyboard. It also includes Fn layers, a symbol layer, and mirror layers for one-handed input.

Install and flash steps

Build the firmware in QMK MSYS, then copy the generated UF2 file to the XIAO RP2040.

09

Testing

Check every key input, the left-right connection, chatter, contact failure, and firmware settings. If something is wrong, correct the wiring, soldering, or QMK settings.

Keyboard testing image 1
Keyboard testing image 2
Keyboard testing image 3

Follow / Download / Buy

Build records and 3D model data

Build records are being updated, and the 3D model data is available on GitHub.

01

Follow

Build progress and update information will be shared.

02

Download

The 3D printable model data is available on GitHub. When printed, it can be used as case parts like the ones shown in the photo.

View 3D model on GitHub
3D printed keyboard case parts
Actual parts printed from the model data
03

Buy

Printed models are planned for builders who do not have a 3D printer.