I picked up an emailkb kit from Electrolama (Omer). It’s a compact six-key macro pad built around a Raspberry Pi Pico. Omer let me raid his supplies, and found me some blue switches, and some interesting purple keycaps which have room for little print out lables.

Purple emailkb PCB back on a blue surface showing the silkscreen text 'we keep going until we die', with a gold header pin strip and bare Raspberry Pi Pico laid beside it, ready for assembly.

The kit laid out before assembly

The PCB

Front face of the purple emailkb PCB on a wooden table next to a metric ruler, showing the six MX switch footprints arranged in a two-by-three grid with through-holes down the right edge for the Pico.

The bare PCB, roughly credit-card sized

The emailkb is about 4.5cm x 6cm with footprints for six MX-style switches arranged in a 2×3 grid.There is also room for raspberry pi pico on the back, and the silkscreen on the back reads “we keep going until we die”, which felt appropriate.

Installing the Switches

Six assembled mechanical keyboard switches fitted with lavender keycaps with clear tops, viewed from the front on a teal work mat.

Switches in, keycaps on

First things first: the switches go in before the Pico, since the Pico mounts on the back and would get in the way. I dropped the six switches into the front of the board and soldered them in place. The keycaps Omer found are a lovely purple, with a clear top section that has room for little printed labels.

Soldering the Pico

The emailkb PCB held at an angle with pliers on a blue surface, a soldering iron tip touching the pads to attach the Raspberry Pi Pico to the back of the board.

Getting the Pico tacked down

With the switches done, the Raspberry Pi Pico goes on the back of the board via header pins. Omer provided some short header pins, and since only some pins are actually used, headers were only placed where needed, which keeps things tidy.

Building the QMK Firmware

The emailkb isn’t in QMK’s default keyboard list, so the first job was writing a keyboard definition from scratch. That means setting up the folder structure, defining the pins for the Pico, and mapping out the key layout. Once that was in place I could write a keymap, i have configured it for debugger shortcuts in pycharm, and flash it over USB, which for the pico just means dropping the firmware on the mass storage device folder it presents.

{
    "manufacturer": "egelmex",
    "keyboard_name": "omer1",
    "maintainer": "egelmex",
    "bootloader": "rp2040",
    "features": {
        "bootmagic": true,
        "extrakey": true,
        "mousekey": true,
        "nkro": true
    },
    "matrix_pins": {
        "direct": [
            ["GP28", "GP1"],
            ["GP26", "GP7"],
            ["GP17", "GP14"]
        ]
    },
    "processor": "RP2040",
    "url": "https://github.com/egelmex",
    "usb": {
        "device_version": "1.0.0",
        "pid": "0x0000",
        "vid": "0xFEED"
    },
    "layouts": {
        "LAYOUT": {
            "layout": [
                {"matrix": [0, 0], "x": 0, "y": 0},
                {"matrix": [0, 1], "x": 1, "y": 0},
                {"matrix": [1, 0], "x": 0, "y": 1},
                {"matrix": [1, 1], "x": 1, "y": 1},
                {"matrix": [2, 0], "x": 0, "y": 2},
                {"matrix": [2, 1], "x": 1, "y": 2}
            ]
        }
    }
}

Review

The switches we gabbed from Omer’s stock fit, but are missing the algnment pin of mx switches. This led the switches being slighly wonky when soldered. At this point it also need case as it doesnt sit flat without one, and the bare PCB on my messy desk is a asking for short.