Back to projects
4 min read

FortySix KB

Custom three-piece split keyboard: PCB design, sandwich-construction case, and QMK firmware configuration.

FortySix KB assembled

The Brief

Commercial ergonomic keyboards in 2018 were either expensive, compromised on layout, or unavailable in the specific column-stagger geometry desired. The goal was a column-staggered split keyboard built to a fixed layout preference — 23 keys per hand — at the same or reduced cost of available alternatives, and with the added flexibility of being able to use each section independently.

System Architecture

The FortySix is a three-piece system: a left half, a right half, and an optional centre console. Each piece runs its own Arduino Micro (SparkFun Pro Micro) and connects independently via USB — there is no inter-board communication protocol. This was a deliberate architectural choice: any single piece can be plugged in and used in isolation, whether as a standalone numpad, a gaming macro pad, or a one-handed input device.

Left and right halves each carry 23 keys on a 5×8 matrix — a 4×5 main grid plus a 3-key thumb cluster. Both halves use an identical PCB.

The console is a 38-key numpad and navigation cluster on an 8×5 matrix, providing a full numpad, F-key row, navigation cluster, and media controls.

PCB Design

PCBs were designed in DipTrace. The half boards share a single design — the same PCB serves both left and right, with the keymap in firmware handling orientation differences. Key decisions:

  • ROW2COL diode orientation across all three boards for consistent matrix scanning.
  • RGB underglow via an 8-LED WS2812 strip per half (2 LEDs on the console), wired to a dedicated data pin on the microcontroller.
  • Debounce and anti-ghosting configured in firmware rather than requiring additional hardware.

Mechanical Design

The case was designed in SolidWorks as a sandwich construction: two-tone laser-cut acrylic for the upper and lower plates, with a 3D printed core. The printed core joins the main body to the thumb cluster and incorporates embedded magnets and plastic locating features, allowing the three sections to be easily separated or snapped together and used or repositioned as a single cohesive unit. The acrylic plates provide the visual finish and rigidity; the printed core handles the joinery and alignment geometry that sheet material cannot.

FortySix KB detail

Firmware Configuration

QMK was used as the firmware base. Each board has a custom keyboard definition, matrix pin mapping, and keymap configured within the QMK framework.

Half boards run two layers, switched via tap-dance on the thumb cluster:

  • QWERTY layer — standard alphanumeric layout for the relevant hand, with enter, space, and alt on the thumb cluster.
  • RGB layer — full RGB underglow control (hue, saturation, brightness, mode). Double-tapping the tap-dance key transitions to this layer; the lighting shifts to dim white as a visual confirmation. A third tap or any unexpected input returns to QWERTY.

Console runs two layers switched via a dedicated function key:

  • Default layer — numpad, navigation cluster (arrows, home, end, page up/down), print screen, pause, delete, and symbol row.
  • Function layer — F1–F12, full RGB control, and media transport controls (play/pause, stop, previous, next, mute). Windows lock on the function layer key position.

Layer-aware RGB: each board changes underglow colour on layer transition, providing immediate visual feedback without requiring a status LED or display.

Outcomes

The independent-USB architecture proved its value in practice — the console in particular was regularly used detached from the halves as a standalone numpad. The identical-PCB approach for the two halves reduced design and fabrication cost without limiting functionality, since firmware handles the left/right difference entirely.