Skip to main content

Framework 16 Keyboard v1

The Framework 16 Keyboard v1 (subtitled "Poor Man's Ortho") is an ortholinear split keyboard designed to fit inside the Framework Laptop 16 in place of the stock keyboard module. Created by Per Sommer (GitHub: sommerper), it uses 40 Kailh Choc low-profile switches in a column-staggered layout and connects via USB or Bluetooth using an nRF52840 microcontroller — rather than interfacing with the Framework 16's Input Module connector1.

The 3D-printed case has a 5-degree typing angle, meaning the laptop cannot be closed while the keyboard is installed. The project was announced in February 2025 and all design files were published on GitHub in April 2025 under the MIT license12.

Design

Layout

The keyboard uses a split ortholinear layout with 40 keys total1:

  • 3 rows of 5 keys per side (30 main keys)
  • 2 keys per side on the bottom row (4 keys)
  • 3 thumb keys per side (6 keys)

The layout uses column stagger (slight ergonomic offset between columns) rather than a flat grid. The design is column-staggered rather than row-staggered like a traditional laptop keyboard.

Hardware

ComponentDetails
SwitchesKailh Choc PG1350 (low-profile), 40 hotswap positions
MCUSuperMini nRF52840 (Pro Micro compatible footprint)
Alternative MCUsnice!nano v2, generic RP2040 Pro Micro
Matrix6 columns x 8 rows, COL2ROW diode direction, 40 combo diodes
PCB270.0 x 104.2 mm, 1.6 mm thickness, 2-layer
PCB toolKiCad 9.0
Battery connectorJST-PH 2-pin (for wireless operation)
Power switchSPDT slide switch (C128955)
Reset buttonALPS SKQGABE010 tactile switch
Design tool (case)Autodesk Fusion
LicenseMIT

Connectivity

The keyboard does not connect via the Framework 16 Input Module pogo pins. It operates as a standalone keyboard, connecting via USB cable or Bluetooth (using the nRF52840's wireless capability). This simplifies the design but means it cannot use the FW16's built-in keyboard backlight control, VIA integration, or native keyboard hot-plug system1.

Case

Four STL files are provided for 3D printing1:

FilePurpose
LeftLeft half for laptop installation (tight fit between internal components)
RightRight half for laptop installation
BottomDesk case for external use (fits diagonally on a Prusa i3 MK3S build plate)
TopTravel protection cover for the Bottom case

The left and right cases are designed to slot into the physical space where the stock keyboard sits inside the laptop chassis.

Firmware

ZMK (Primary)

The ZMK configuration is the more fully developed firmware option, based on Urob's ZMK config. It includes1:

  • 12 layers: BASE (Linux Colemak-DH variant), LOWER, RAISE, BASEMAC, LOWERMAC, RAISEMAC, QWERTY, EXTRAS, NUMPAD, NUMBERS, BLUETOOTH, LANG
  • Home-row mods (HRM)
  • Combos, tri-layer, tap-dance, mod-morph
  • Macros for German characters ("qu", "qui", "sch")
  • Bluetooth profile switching and output selection (USB/BLE)
  • Sleep mode, +8dBm TX power
  • nRF internal RC oscillator

QMK (Basic)

A simple starter QMK configuration with a single QWERTY layer and basic key mapping. Uses Caterina bootloader targeting ATmega32U41.

Development History

Per Sommer designed the keyboard after transitioning to ortholinear split keyboards (including the Corne) and finding he could no longer comfortably use the Framework 16's staggered stock keyboard. A friend confirmed the FW16 could boot without the keyboard by disabling checks in BIOS, making the project feasible2.

The PCB was designed using Ergogen for initial layout generation and KiCad for schematic and routing. The 3D-printed case was designed in Autodesk Fusion2.

DateEvent
February 15, 2025Blog post announcing the project2
March 22, 2025Reddit post "Poor mans ortho" on r/framework
April 8, 2025GitHub repo created with all design files1
April 8, 2025Framework Community forum thread posted
April 9, 2025Thread renamed to "Framework 16 Keyboard v1 (Poor man's Ortho)" by moderator
September 2, 2025Additional Q&A about connectivity and daily use
March 1, 2026Forum thread auto-closed after 180 days of inactivity

No updates have been published since April 2025. The project appears to be a completed v1 release.

Installation

Prerequisites

The Framework 16 must be configured to boot without its stock keyboard by disabling keyboard checks in BIOS2.

Building the PCB

  1. Download the appropriate Gerber ZIP from the kicad/framework16v1/gerber_to_order/ directory (JLCPCB, PCBWay, Elecrow, FusionPCB, or default format)
  2. Order the PCB: 270.0 x 104.2 mm, 1.6 mm, 2-layer
  3. Solder components: SuperMini nRF52840, 40 combo diodes, SPDT switch, reset button, JST-PH connector, 40 Kailh Choc switches1

3D Printing

Print the Left and Right case halves for laptop use, or Bottom + Top for external desk use. Files are in the case/ directory1.

Flashing Firmware

ZMK: Use the shield config in zmk/boards/shields/framework_v1/ with Per's fork of Urob's ZMK (sommerper/urob_zmk)1.

QMK: qmk compile -kb framework_v1 -km default using the keyboard definition in qmk/keyboards/framework_v1/1.

Limitations

LimitationDetails
Laptop cannot close5-degree typing angle prevents lid closure
No Input Module integrationDoes not use FW16 pogo pins; no backlight, VIA, or hot-plug support
No formal build guidePCB BOM must be inferred from KiCad schematic files
Lid clearance~3.4 mm available; Kailh Choc switches may be too tall for lid closure even without the typing angle
Single revisionNo updates or revisions since April 2025

Footnotes

  1. sommerper/framework16-keyboard-v1 — GitHub (Per Sommer, April 2025) 2 3 4 5 6 7 8 9 10 11 12

  2. Framework Ortholinear Keyboard — Per Sommer's Blog (February 15, 2025) 2 3 4 5

  3. Framework 16 Keyboard v1 (Poor man's Ortho) — Framework Community (Per_Sommer, April 2025)