A split ergonomic keyboard with integrated DPAD, featuring RP2040 controllers and QMK firmware support.
The do52pro is a split keyboard designed by YK, featuring:
- 68 keys total (30 per side + 8 DPAD keys)
- 6×6 matrix per side with integrated DPAD
- RP2040 microcontroller (Raspberry Pi Pico compatible)
- Soft serial communication between halves
- ISO European layout support
- ✅ Split keyboard design for ergonomic typing
- ✅ Integrated DPAD on both sides (navigation + arrow keys)
- ✅ QMK firmware with full customization support
- ✅ RP2040-based (fast, modern MCU)
- ✅ ISO European layout (
< >key support) - ✅ Hot-swappable keymaps
- ✅ USB-C connectivity
- Processor: RP2040 (Raspberry Pi Pico compatible)
- Bootloader: RP2040 bootloader
- USB: USB-C connector
- Type: COL2ROW (diodes on columns)
- Size: 6 columns × 6 rows per side
- Total keys: 68 (30 per side + 8 DPAD)
| Pin Type | Pins |
|---|---|
| Rows | GP27, GP8, GP9, GP29, GP7, GP28 (DPAD) |
| Cols | GP0, GP1, GP2, GP4, GP5, GP6 |
| Pin Type | Pins |
|---|---|
| Rows | GP27, GP8, GP9, GP29, GP7, GP28 (DPAD) |
| Cols | GP6, GP5, GP4, GP2, GP1, GP0 (inverted) |
- Serial Pin: GP3 (soft serial, 1-wire communication)
- DPAD Pin: GP28 (internal pull-up)
┌─────────────────────────────────────────────────────────┐
│ LEFT HALF │
│ │
│ Rows: GP27, GP8, GP9, GP29, GP7, GP28 │
│ Cols: GP0, GP1, GP2, GP4, GP5, GP6 │
│ │
│ ┌─────────────────────────────────────┐ │
│ │ Matrix: 6×6 (30 keys) │ │
│ │ + DPAD Row (4 keys) │ │
│ └─────────────────────────────────────┘ │
│ │
│ Serial: GP3 ────────────┐ │
│ │ │
└──────────────────────────┼──────────────────────────────┘
│
│ Soft Serial (1-wire)
│
┌──────────────────────────┼──────────────────────────────┐
│ │ RIGHT HALF │
│ Serial: GP3 ────────────┘ │
│ │
│ Rows: GP27, GP8, GP9, GP29, GP7, GP28 │
│ Cols: GP6, GP5, GP4, GP2, GP1, GP0 (inverted) │
│ │
│ ┌─────────────────────────────────────┐ │
│ │ Matrix: 6×6 (30 keys) │ │
│ │ + DPAD Row (4 keys) │ │
│ └─────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ LEFT HALF │ RIGHT HALF │
├──────────────────────────────────────────┼──────────────────────────────────┤
│ │ │
│ ESC 1 2 3 4 5 │ 6 7 8 9 0 BSPC │
│ TAB Q W E R T │ Y U I O P \ │
│ < > A S D F G │ H J K L ; ' │
│ SHIFT Z X C V B │ N M , . / SHIFT │
│ CTRL WIN --- --- ALT SPC│ SPC ALT --- --- WIN CTRL │
│ │ │
│ ┌─────────────────────────┐ │ ┌─────────────────────────┐ │
│ │ HOME PGUP PGDN END │ │ │ LEFT RIGHT DOWN UP │ │
│ └─────────────────────────┘ │ └─────────────────────────┘ │
│ DPAD LEFT │ DPAD RIGHT │
└─────────────────────────────────────────────────────────────────────────────┘
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
│ ESC │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ BSPC │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
│ TAB │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ \ │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
│ < > │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
Note:
< >isKC_NUBS(ISO European key for<and>)
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
│SHIFT │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │SHIFT │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
│ CTRL │ WIN │ --- │ --- │ ALT │ SPC │ SPC │ ALT │ --- │ --- │ WIN │ CTRL │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
- Left:
CTRL WIN --- --- ALT SPC - Right:
SPC ALT --- --- WIN CTRL
┌──────┬──────┬──────┬──────┐
│ HOME │ PGUP │ PGDN │ END │
└──────┴──────┴──────┴──────┘
← ↑ ↓ →
┌──────┬──────┬──────┬──────┐
│ LEFT │RIGHT │ DOWN │ UP │
└──────┴──────┴──────┴──────┘
← → ↓ ↑
| Position | Key | Position | Key | Position | Key | Position | Key |
|---|---|---|---|---|---|---|---|
[0,0] |
ESC | [0,1] |
1 | [0,2] |
2 | [0,3] |
3 |
[0,4] |
4 | [0,5] |
5 | [6,0] |
6 | [6,1] |
7 |
[6,2] |
8 | [6,3] |
9 | [6,4] |
0 | [6,5] |
BSPC |
[1,0] |
TAB | [1,1] |
Q | [1,2] |
W | [1,3] |
E |
[1,4] |
R | [1,5] |
T | [7,0] |
Y | [7,1] |
U |
[7,2] |
I | [7,3] |
O | [7,4] |
P | [7,5] |
\ |
[2,0] |
< > | [2,1] |
A | [2,2] |
S | [2,3] |
D |
[2,4] |
F | [2,5] |
G | [8,0] |
H | [8,1] |
J |
[8,2] |
K | [8,3] |
L | [8,4] |
; | [8,5] |
' |
[3,0] |
SHIFT | [3,1] |
Z | [3,2] |
X | [3,3] |
C |
[3,4] |
V | [3,5] |
B | [9,0] |
N | [9,1] |
M |
[9,2] |
, | [9,3] |
. | [9,4] |
/ | [9,5] |
SHIFT |
[4,0] |
CTRL | [4,1] |
WIN | [4,2] |
--- | [4,3] |
--- |
[4,4] |
ALT | [4,5] |
SPC | [10,0] |
SPC | [10,1] |
ALT |
[10,2] |
--- | [10,3] |
--- | [10,4] |
WIN | [10,5] |
CTRL |
[5,5] |
HOME | [5,1] |
PGUP | [5,3] |
PGDN | [5,4] |
END |
[11,1] |
LEFT | [11,0] |
RIGHT | [11,2] |
DOWN | [11,3] |
UP |
- QMK Firmware installed
- QMK CLI tools installed (
qmk setup) - ARM GCC toolchain (included with QMK)
From the QMK firmware root directory:
qmk compile -kb do52pro -km defaultThe compiled firmware will be available at:
qmk_firmware/do52pro_default.uf2
The keyboard uses the following QMK features:
SERIAL_DRIVER = vendor(RP2040 soft serial)EXTRAKEY_ENABLE = yes(media keys support)CONSOLE_ENABLE = no(debugging disabled by default)
-
Enter bootloader mode:
- Hold
BOOTSELbutton on the RP2040 - Connect USB cable (or press reset while holding BOOTSEL)
- Hold
-
Flash firmware:
- The RP2040 will appear as a USB mass storage device
- Copy
do52pro_default.uf2to the device - The device will automatically reboot with the new firmware
- Open QMK Toolbox
- Select the
.uf2file - Put the keyboard in bootloader mode
- Click "Flash"
By default, the keyboard is configured as MASTER_LEFT (USB connected to left half).
To change to MASTER_RIGHT, edit config.h:
// #define MASTER_LEFT
#define MASTER_RIGHTThen rebuild and flash both halves.
Edit keymaps/default/keymap.c to customize your layout:
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_5x6(
// Your custom layout here
...
)
};To enable debugging output, edit rules.mk:
CONSOLE_ENABLE = yesAnd config.h:
#define SERIAL_DEBUGThen use qmk console to view debug messages.
Default USB IDs are defined in config.h:
- Vendor ID:
0xFEED - Product ID:
0x0000
Change these if needed to avoid conflicts.
-
Check serial connection:
- Ensure GP3 is connected between both halves
- Verify the connection is not loose
-
Check handedness:
- Make sure
MASTER_LEFTorMASTER_RIGHTmatches your USB connection - Flash both halves with the same firmware
- Make sure
-
Check power:
- Ensure both halves are powered
- Right half should be powered via TRRS cable or USB
-
Check DPAD pin:
- DPAD uses GP28 (row 5 for left, row 11 for right)
- Verify GP28 is properly connected
-
Check matrix scan:
- DPAD is integrated into the matrix
- Use
qmk consoleto verify key presses are detected
-
Check diode direction:
- Keyboard uses COL2ROW configuration
- Verify diodes are oriented correctly
-
Check matrix pins:
- Compare your wiring with the pin mapping above
- Right side columns are inverted
-
Enable debug:
- Enable
CONSOLE_ENABLEandSERIAL_DEBUG - Use
qmk consoleto see matrix scan results
- Enable
-
Submodule issues:
git submodule update --init --recursive
-
Clean build:
qmk clean qmk compile -kb do52pro -km default
See LICENSE file for details.
- Maintainer: fifounet92-by-chatgpt
- Manufacturer: YK
- QMK Firmware team
- RP2040 community
- All contributors to the split keyboard ecosystem
Made with ❤️ for the mechanical keyboard community
