Tuesday, 2 December 2025

Slump52 - an ErgoMech keyboard with number pad

Up until now, I have had three different keyboard PCBs fabricated to my own design - all diode-free using Graph Theory. The Gamma Omega TC36K, the Gamma Omega Hesse, and the Forager Acid, with 36, 36 and 34 keys respectively. They've been getting smaller. Well now for something bigger, requested by our nine year old: They want a keyboard with more keys, and deserve smaller keys. Here is the Slump52!

Screenshot of the Slump52 keyboard PCB rendered in KiCad.
Slump52 keyboard PCB design in KiCad

Small hands means small keycaps, they would like captions on the keycaps, and 3D printing with labelled keycaps isn't going to be easy.  The smallest off the shelf keycaps are Chocfox CFX at 16.5 by 16.5mm (for Choc v1 switches). Those use 17 by 17mm spacing which is only slightly smaller than the typical 18 by 17mm Kailh choc spacing I have been using thus far.

How many keys? 

They would like cursors and a number pad (for maths games like SumDog). To me that means at least 34 + 4 + 11 = 49 keys, and probably a few more. How about 52 keys in a pretty curvy layout?

Annotated Ergogen GUI screenshot of a 52-key Qwerty keyboard layout, with number pad on the right
Initial Slump52 concept keyboard layout.

Looking at girth 6 bipartite graphs for diode-free 4-key rollover, we would need 26 GPIOs for 52 keys with the Incidence graph of the projective plane of order 3, PG(2,3) (giving two keys per GPIO). That is easy with a Raspberry Pi Pico as the controller (just like my first design the Gamma Omega TC36K), but it would be USB only.

However, they would want to use this with a computer or tablet, which would require Bluetooth. That suggests one of the NoLogoTech nRF52480 controllers, the Arduino-like "Nano 33 BLE NRF52840" or the "Super mini NRF52840 Zero". Sadly either would need soldering of tiny pads on the back - or a traditional diode approach - and I'm not ready for that level of soldering difficulty. So USB only it is.

Key layout (Ergogen)

Again I used Ergogen (now at version 4.2.1), although this time it is a completely new layout. As many of my keys are not in linear columns this pushed Ergogen in ways it was not designed for - see the previos blog post about curvy keyboard layouts in Ergogen (since then I moved the shift key into the centre as a shared thumb key). Despite the curves, I could still use the Ergogen utility router for the per-key and easy within column wiring.

Slump52 default layout drawn in Caksoylar's keymap drawer
It's Qwerty, with a twist!
Note that semicolon is replaced with minus/underscore, with plus/equals placed above it (using a shift inverted version of the typical equal/plus key), the typical slash/question-mark below, and a dedicated asterisk below that. This physical column puts the mathematical operators addition, subtraction, division, and multiplication next to the numberpad. 

The 30 (alphabet and punctuation) core keys and thumb keys are laid out so that Qwerty B and M can also be treated as thumb keys. Thus this layout contains something very like the Hummingbird keyboard or Visorbearer keyboard's more minimal layouts, leading me to think along those lines for the silkscreen art.

PCB design (KiCad) 

The main wiring and silkscreen art was done by hand in KiCad v9.0.4. The placement of the Raspberry Pi Pico controller bottom left at an angle is to minimize the keyboard width (putting it centrally like in my earlier Gamma Omega TC36K PCB would add need about 2cm between the halves). I want to have the Pico face up to show the LEDs (like in my Gamma Omega Hesse design), and again mounted flush to the surface to keep this low profile. Some Pico boards are already castellated, making that easier. This time there is a cutout so the controller will be below the main PCB (in the same z-plane as the hotswap sockets) allowing for a simple flat upper case.

My hummingbird art is based on the Nazca Lines Hummingbird, but since there isn't a USB cable were the beak would be, I have instead added a head (with a screw hole as a eye), and angled the beak.

Case Design (build123d)

I have found FreeCAD hard to get to grips with (see for example my initial struggles editing an existing STEP file to remove bits). This time inspired by Weteor's Grumpy and Pete Johanson's Zaphod keyboard cases, I combined Ergogen to draw the 2D outlines, with build123d (v0.10.0) to build them up into the 3D design. This lets me define my case programmatically (with a combination of Ergogen's YAML and Python code).

KiCad 3D rendering of the Slump52 keyboard PCB and case
KiCad rendering of Slump52 keyboard and case
The basic idea is a simple flat plate for the top case with cutouts for the keys (like the Forager top case), and a skirting wall dropping down about 3mm below the PCB (with a hole in it for the USB port). This fully encloses the bottom case, which is a flat plate with recesses cutout for the hotswap switches and controller (like the Gamma Omega Hesse bottom case). 

End on view of KiCad rendering of Slump52 keyboard PCB and case
End on view of the case showing the z-stack

The top case is mostly a 2.2mm thick switch plate, with countersunk screw holes, and a cutout for taller components on the Pico controller. I had to add a raised area over the controller to cover the USB with the minimum thickness of 0.8mm making that part 2.4mm thick (with a mirrored version on the front right corner). The bottom case is 3mm thick, allowing 2.2mm deap cutouts for the hotswap sockets or directly soldered switches, and the Raspberry Pi Pico Controller. This also has 2mm deep holes for heatset M2 nuts for the case screws (too tall for the top case).

When I placed the order with JLCPLC, they flagged the thin bits in the case - especially the top rim of the USB port above the controller. Fingers crossed - I can make the raised areas a little taller to address that...

Repositories

See this Codeberg repository for the Slump52 keyboard files - under the CERN Open Hardware Licence Version 2.  That has the PCB file including Gerbers, PCB, 3D models, Ergogen config, and the case generating scripts.

Screenshot of Slump52 in ZMK Studio v0.3.1
Screenshot of Slump52 in ZMK Studio v0.3.1
I have written ZMK firmware for the Slump52, and QMK/Vial firmware for the Slump52 keyboard too.

Fabrication (PCB and case)

Again, I used JLCPLC, and the prices were very similar my earlier Gamma Omega TC36K and Gamma Omega Hesse keyboards (the Slump52 being only a little bigger overall):

  • PCB defaults except white finish (lead free HASL finish had a price premium for this colour), and removed the order number from the board. USD $14.30 for five.
  • Slump52 top case in transparent 8001 Resin at USD $16.55
  • Slump52 bottom case in random X resin (discouted lucky dip) at just USD $3.50

Merchandise Total: $30.58, Shipping Charge: $14.59, Customs duties & taxes: $9.04, Order Total: $54.21 

No comments:

Post a Comment