m60 Split (5×12 Split)

5×12 Split 60 (2×30) Keys Dual STM32F401 / F411 QMK
All Keyboards

m60 Split — 5×12 Split LEGO Keyboard

Status: Tested & Verified 5×12 Split (2× 5×6) 2× STM32F401 / F411 BlackPill Dual Encoders + RGB Underglow QMK

M60 split 5x12 M60 split 5x12 with LEDs

An ergonomic 5×12 split ortholinear keyboard mounted on two 16×16 LEGO baseplates, featuring dual rotary encoders (one per half) and addressable RGB underglow.

Status: Tested All OK

* [x] Gerbers designed
* [x] Firmware
* [x] Breadboard tested
* [x] Gerbers printed
* [x] Board tested

Features

  • Layout: 5×12 split (two 5×6 halves, 60 keys total)
  • Controllers: 2× WeAct STM32F401 (Rev 1) or STM32F411 (Rev 2) BlackPill
  • Peripherals: 1× rotary encoder per half, RGB underglow strip, 4× status LEDs
  • Interconnect: Direct 3-wire serial cable via angled 3-pin JST XH 2.54 mm connectors
  • Firmware: QMK with TinyUF2 bootloader support

Renders & PCBs

Left & Right Printed PCBs

M60 split 5x12 left/right PCB

KiCad Left & Right Layout

M60 split left PCB M60 split right PCB

3D Render (Left Half)

M60 split 3D render

BOM

  • 2× WeAct STM32F401 (or STM32F411) BlackPill boards with headers
  • 2× 40-pin DIL/DIP sockets
  • 60× 1N4148 signal diodes (DO-35 through-hole)
  • 60× 5-pin Cherry MX–compatible switches
  • 2× EC11 rotary encoders
  • Resistors:
    • 3× 4.7 kΩ (R1 and R2 on left half; R1 on right half)
    • 2× 100 kΩ (R5 on left half; R4 on right half)
    • 4× 220 Ω LED resistors (R3, R4 on left half; R2, R3 on right half — adjust to match LED color/brightness)
  • 4× status indicator LEDs
  • 2× angled 3-pin JST XH 2.54 mm connectors (plus matching direct, non-crossed interconnect cable)
  • Optional: 2× additional 3-pin JST connectors and 3-pin addressable LED strips
  • 2× LEGO 16×16 baseplates and perimeter plates/bricks

Case & Assembly

Gerbers & KiCad

Production-ready Gerbers for JLCPCB:

Full KiCad project files are available in m-lego/m60_split on GitLab (shared footprints in m-lego/m65).

Firmware

Ensure both BlackPill boards are flashed with the TinyUF2 bootloader.

Rev 1 (`STM32F401`)

Download prebuilt UF2: mlego_m60_split_rev1_default.uf2

git clone --recurse-submodules -b mlego https://github.com/qmk/qmk_firmware.git qmk-alin
cd qmk-alin
qmk compile -kb mlego/m60_split/rev1 -km default
Rev 2 (`STM32F411`)

Download prebuilt UF2: mlego_m60_split_rev2_default.uf2

git clone --recurse-submodules -b mlego https://github.com/qmk/qmk_firmware.git qmk-alin
cd qmk-alin
qmk compile -kb mlego/m60_split/rev2 -km default

Pinout Reference

  • Left Half:
    • Columns: B14, A10, A15, B3, B4, B5
    • Rows: B0, A6, A7, B1, A5
  • Right Half:
    • Columns: B0, A3, A2, A1, B7, B5
    • Rows: B1, A4, A5, A6, A7
  • Encoders: Pad_A = A0, Pad_B = A8
  • Split Communication: SPLIT_HAND_PIN = B9, SERIAL_USART_TX_PIN = B6
Indicator / RGB Pin
NUM_LOCK B12
CAPS_LOCK C13
SCROLL_LOCK B13
RGB_DI B15

Community Builds

Builds by Seth (u/modularsynth123456):

M60 split by Seth 4 M60 split by Seth 3 M60 split by Seth 1 M60 split by Seth 2

m60 Split (5×12 Split)

Quick Specs

  • Layout: 5×12 Split
  • Keys: 60 (2×30)
  • MCU: Dual STM32F401 / F411
  • Firmware: QMK

Ergonomic split ortholinear keyboard mounted on twin 16×16 LEGO plates with dual encoders and RGB underglow.