Skip to the content
PCBKitNew board
2 layers228.6 × 114.3 mmKrteq, the printed circuit board in 3D

Low profile ortholinear keyboard

Size
228.6 × 114.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
201
Nets
131
Pads
870
Tracks, vias
2,983, 459
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
10 Jan 2026
Updated
7 Nov 2026

Overview

Krteq is an open-source printed circuit board by swift502, from the swift502/Krteq repository on GitHub, published under the CC0-1.0 licence. It is a 2-layer board of 228.6 × 114.3 mm with 201 parts on 131 nets, routed with 2,983 tracks and 459 vias.

It is built around the IS31FL3733B-QFLS4-TR, KS-2P02B01-02 and 23-23B/R6GHBHC-A30/2A, with the 1N4148W and T520A226M010ATE080 among its other parts. Its parts include 122 diodes, 61 switches, 8 capacitors, 5 resistors and 3 connectors. It belongs with the keyboards and input boards and the RP2040 boards of this library.

Main components

5

README

README.md

Krteq

An extended 5x12 keyboard with 2 extra keys. Intended for ortho layouts with a shifted number row, allowing for the placement of the delete and tilde keys above their usual spots.

Krteq is a successor to Krtkus, learning from its lessons to make a design that's better encapsulated and much more complete.

Features

  • Low profile
  • Hotswap
  • RGB backlight
  • QMK/VIA compatible
  • 3D printed case with a 7 degree tilt
  • Tray mount
  • 233mm × 121mm × 30mm

Connecting the keyboard to usevia.app requires manually uploading the design file in the design tab.

Build guide

Parts

  • PCB
  • Case
  • Keycaps
  • 61x Gateron KS-33 switch
  • Gateron 2u low profile plate-mounted stabilizer
  • Raspberry Pi Pico
  • USB-C breakout board
  • OLED display module
  • 11x connecting wire
  • 8x 2,2x8mm thread-forming screws for plastic
  • Rubber feet

Breakout boards

The USB-C breakout board is expected to match the specs of the Adafruit USB-C breakout board with two M2.5 screw holes 15.24mm apart, 2.54mm from the front edge, and built-in resistors for the CC lines.

The OLED display module is expected to be a 128x32 I2C OLED screen. These screens are not very standardized, so the PCB cutout is generous to fit modules with slightly different dimensions. Any OLED roughly equal or less than 38x12mm should fit, and at most require slight modifications to the display cutout in the plate.

Assembly

  1. Perform the initial firmware flash on the Pico
  2. Attach the stabilizer to the plate
  3. Place the OLED module into plate's display slot
  4. Screw the USB board to the plate
  5. Solder the Pico onto the PCB via pin headers
  6. Secure the plate to the PCB by installing the switches
  7. TODO: Suggest good wire lengths
  8. Solder wires between the J1, J2 and J3 interfaces and their respective breakout boards
  9. Screw the plate to the case
  10. Put some keycaps on and you're done!

PCB

The Kicad 10 project can be found in source/kicad. All parts are SMD, the PCB is intended to be ordered with pre-assembled SMD components for an easier, although more expensive build process.

To generate fabrication files, open the Kicad project and use an export plugin provided by the PCB manufacturer you want to order from. The order process is then highly dependent on the manufacturer.

Suggested BOM

PartPackageManufacturer Part Number
Switch diodeSOD-1231N4148W
Switch socketSMDKS-2P02B01-02
RGB LEDSMD-4P,3.2x1.3mm23-23B/R6GHBHC-A30/2A
RGB driverQFN-48-EP(6x6)IS31FL3733B-QFLS4-TR
0.1µF capacitor0402CL05B104KO5NNNC
0.47µF capacitor0603CL10B474KA8NNNC
22µF/10V capacitorCASE-A-3216-18(mm)T520A226M010ATE080
2kΩ resistor06030603WAF2001T5E
20kΩ resistor06030603WAF2002T5E
100kΩ resistor06030603WAF1003T5E

Case

Case blend file can be found in source/Krteq.blend. It's designed non-destructively, so it should be easy to modify if needed.

STL files for 3D printing can be found in production/stl. Recommended printing parameters are:

  • PLA
  • 0.15mm layer height
  • 100% infill

The plate also has a "keychron" variant, which adjusts stabilizer cutouts for their non-standard triangular stem design.

Firmware

QMK/VIA setup with a few custom features:

  • custom keycodes for volume, screen and RGB control
  • pressing LShift + RShift + B enters bootloader mode
  • pressing LShift + RShift + C reverts to the default keymap

Overrides

Some functionality can be overridden in a user keymap config.h:

c
// Layer which forces a preview of the "Indicators" screen
#define INDICATORS_SHOW_LAYER 1

// Replace the scroll lock indicator with three letter
// string to denote custom script functionality
#define INDICATORS_SCROLL_LABEL "ACC"

// Layer (and above) which shows the "Input lock" screen
#define INPUT_LOCK_LAYER 4

Adding custom OLED screens

In QMK, user keymaps can completely override oled rendering via oled_task_user(). However, Krteq also exposes its custom screen system, where screen interaction is done via the KRT_SCR keycode. Hooking into this system is preferred as it ensures that other built-in system screen features continue to work properly.

Here's a minimal example of a custom screen definition in a user keymap:

c
// 1. Create a render function
static void custom_screen_render(void)
{
    oled_write_P(PSTR("Hello world"), false);
}

// 2. Construct a screen instance
static const krteq_screen_t custom_screen = {
    .name = "Custom screen",
    .start = custom_screen_render,
};

// 3. Override built-in screen list
const krteq_screen_t *const user_screens[] = {
    &custom_screen
};

Here's a table of fields and callbacks available for screens to implement:

PropertyDescription
.nameDisplay name string
.initRuns once on keyboard start-up
.startRuns every time the screen is activated
.updateRuns every OLED task cycle when screen is active
.key_eventKey press event

You can combine custom screens with the built-in ones. You can reshuffle them, remove some and add your own. The built-in screen list goes as follows:

c
const krteq_screen_t *const user_screens[] = {
    &krteq_screen_indicators,
    &krteq_screen_bongo_cat,
    &krteq_screen_starfield,
    &krteq_screen_waves,
    &krteq_screen_cursor,
    &krteq_screen_game_of_life,
    &krteq_screen_system_info
};

Compiling (Windows)

Install:

Run the compile script:

sh
python source/scripts/qmk_compile.py

Flashing (Windows)

For the initial flash, hold the BOOTSEL button while connecting the Pico to a computer to have it show up as a storage device, then copy the compiled firmware file over to it.

Once flashed, you can trigger the bootloader mode again by simply pressing the LShift + RShift + B key combination.

Documentation

QMK

Parts

201
QtyValueFootprintReferences
61GATERON Low Profile Switch Hot-swap SocketKrteq:Gateron_KS-33SW1, SW2, SW10, SW11, SW12, SW13, SW14, SW15, SW16, SW17, SW18, SW19, SW20, SW21, SW22, SW23 +45
61Reverse Mount LED ARGBKrteq:ReverseMount_LEDD101, D102, D103, D104, D105, D106, D107, D108, D109, D110, D111, D112, D113, D114, D115, D116 +45
61Switch DiodeKrteq:D_SOD-123D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +45
40.47µFCapacitor_SMD:C_0603_1608MetricC1, C2, C3, C4
30.1µFCapacitor_SMD:C_0402_1005MetricC5, C6, C7
2100kΩResistor_SMD:R_0603_1608MetricR3, R4
22kΩResistor_SMD:R_0603_1608MetricR1, R2
120kΩResistor_SMD:R_0603_1608MetricR5
122µF/10VKrteq:CASE-A-3216-18(mm)C8
1LED DriverKrteq:QFN-48_6x6mmU71
1OLED 128x32Krteq:Interface_1x04_P2.54mmJ3
1Pico Test PointsKrteq:Interface_1x03_P2.54mmJ2
1Raspberry Pi PicoKrteq:RaspberryPi_PicoA1
1USB Breakout BoardKrteq:Interface_1x04_P2.54mmJ1

Questions

How big is the Krteq PCB?

It measures 228.6 × 114.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Krteq use?

201 parts, built around the IS31FL3733B-QFLS4-TR, KS-2P02B01-02, 23-23B/R6GHBHC-A30/2A and 1N4148W. 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 Krteq KiCad files?

From the swift502/Krteq repository on GitHub, at the commit this page was made from: the board is source/kicad/Krteq/Krteq.kicad_pcb and its schematic source/kicad/Krteq/Krteq.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Krteq design in my own project?

Its repository publishes it under the CC0-1.0 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

  • 4 layers95.6 × 73.6 mmMathpad, the printed circuit board in 3D

    Mathpad

    Summa-Cogni/Mathpad

    A mathematical keypad for students and professionals

    93 parts243
  • 4 layers120 × 89.3 mmSMK macro pad, the printed circuit board in 3D

    SMK macro pad

    mburger89/SMK_macro_pad

    4x4 wireless macro pad — RP2040 + Raspberry Pi RM2. KiCad project generated from Python; includes a 42%-smaller 'mini' variant with back-mounted electronics.

    89 partsMIT
  • 4 layers404 × 142.3 mmGalatea Keyboard PCB, the printed circuit board in 3D

    Galatea Keyboard PCB

    AronTech1/Galatea-75-wireless-mechanical-keyboard

    Galatea: 75% wireless mechanical keyboard with a 5" IPS display, per-key LEDs, rotary encoder, voice button and I²S microphone.

    454 parts
  • 4 layers99 × 53.3 mmPSLab, the printed circuit board in 3D

    PSLab

    fossasia/pslab-hardware

    PSLab Hardware Design and Schematics https://pslab.io

    199 parts1.7kApache-2.0
  • 2 layers208.8 × 396.9 mmFerris, the printed circuit board in 3D

    Ferris

    pierrechevalier83/ferris

    A low profile split keyboard designed to satisfy one single use case elegantly

    145 parts1.3k
  • 2 layers285.5 × 95 mmReviung46 ver1 1, the printed circuit board in 3D

    Reviung46 ver1 1

    gtips/reviung

    The REVIUNG41 is 41-key column staggered keyboard.

    119 parts517MIT
  • 2 layers141.5 × 83 mmRolio, the printed circuit board in 3D

    Rolio

    MickiusMousius/Rolio46Keyboard

    A split wireless keyboard based on the Corne and Sofle

    110 parts236MIT