Ganymede: an ARM based split, ergonomic keyboard

I ordered the prototype for the cherry mx case from today - it is supposed to ship by 5th of July and will probably arrive together with the PCBs from JLCPCB. 3D printing all parts at 100% infill and 100μm resolution using FDM cost ~90 USD.

I had to make a couple of changes compared to above revision. 3d printing apparently can not reliably create threads smaller than M5. So I ordered heat insets from to get M2.5 screws to work.
This version includes tenting mounts on the sides and the Ergodox EZ tents should work.

Unfortunately the TRRS jack is 5mm high so I had to extrude the frame to hide the jack inside the enclosure. As I’m planning to also make a case for choc and kailh X switches I’ll probably have to accept that the connector is exposed for those switches as the enclosure will be less than 5mm. Or find an alternative to TRRS to connect the halves. Or find a different placement for the TRRS connector where the exposure doesn’t matter too much.

Below some rendered images - I will post some real pictures taken with a macro lens once the prototype case is assembled.

left side

right side


  • 13x M2.5 heat insets
  • 10x M2.5 screws
  • 3x Ergodox EZ tenting feet
  • left & right upper body
  • left & right bottom plate
  • left inset for layer indicator LEDs

vertical stackup

  • 1.5 mm extrude around switches to allow TRRS enclosure
  • 1.5 mm switch plate
  • 3.5 mm space to PCB
  • 1 mm pcb
  • 1.85mm hotswap sockets below PCB
  • 0.15mm space
  • 1mm bottom plate

all in all 10.5 mm in height. For a choc version I expect 6.5mm and 4.5mm for X one.

I left a 0.05mm - 0.1mm margin around some components (PCB, OLED, TRRS, USB-C) to ensure the components can actually fit into the case - looking forward to seeing how this turns out in real life.

Also, I have a couple of open questions about 3d printing fully enclosed cases; how much infill is required to get a sturdy case, how thin/ thick do I need to make walls etc etc. If anybody has resources specific to keyboard cases I’d love read about them, as the 100% infill I picked to be on the safe side increased the price for the prototypes considerably.


Everything arrived today - I managed to completely solder and assemble the right hand side so far. First some pictures, and then some learnings:

right hand side top & bottom (PCB only):

right hand side assembled in case:

Some things went really well:

  • the heat inserts/ nuts work really well. they are easy to insert and give the case a solid feel when everything is screwed together
  • the PCB fits into the case, including TRRS jack
  • I left standoffs in the inside of the case which prevent the PCB from sliding too far in; this sandwiches the PCB nicely between top and bottom; the missing holes in the middle of the PCBs are not noticeable from a stability perspective
  • the RGB LEDs I used can be quite bright;

Some things I got lucky with:

  • the 0.5mm margin around the PCB is too little. The PCB fits into the case, but just barely. 1-2mm around the PCB are a minimum
  • the bottom needs a margin too! without the screws on the side I’d get waves in the flexible material.

Some times I didn’t do so well at:

  • the TRRS needs roughtly 4mm space for nicer cables to fit in. I only gave 1.5mm, so I can only use very thin TRRS cables
  • I forgot to add standoffs inside the case, on the left side of the case. So when I press the PCB in, it only stays at the right height on one side.

For the choc & x versions I’ll ditch TRRS in favor of 1mm JST connectors, as the 5mm are too high for the case, but still, knowing how much room to leave would have been useful.
Also, I disliked the surface finish of the 3d printed case so much that I sprayed mine with color filler and a black matte finish. Unfortunately I’m pretty bad at it, so the surface looks rather rugged… Also, the 3d printed case is super lightweight. I’m looking forward to heavy metal case eventually.

Hopefully I’ll find time to solder the left hand side over the weekend so I can post complete pictures. Soldering 1.6mm RGB leds is quite time consuming…


Managed to finish the left hand side too. Again, pics and then some details:


left hand side

fully assembled keyboard

The tent feature is not ready yet as I’m waiting on M3 nuts - without them I can’t attach the tents. So I can’t show the underglow right now :frowning:

The software is very custom again, as QMK doesn’t seem to support two IS3733 right now. I hope to push the current code, schematic and gerbers to the github repo in the next weeks; I just need to clean up a bunch of things.

Ganymede v0.4 summary:

  • 2 PCBs now (no longer flippable)
  • fully per-key RGB support
  • RGB backlight

I got the breakout board for the RGB tft, so I can start working on v0.5 once I’ve updated the github repo.

v0.5 will focus on choc support, RGB tft display as well as a separate 1Mb eeprom (M24M01) to allow dynamic layout changes, similar to how VIA works today.

I’ll post final pictures with tenting once the nuts arrive :slight_smile:


last update for the rev 0.4 I think: the M3 nuts arrived - the tents from the Ergodox EZ work. However, I missed that the EZ has like a raster on the sides for the legs to snap into a position, so the tents are not 100% solid without screwing them in super tight.
However it’s still solid enough to type on them:

rev 0.4 assembled with tents

auto breath via IS31FL3733:


I still need to do a lot of software changes for this revision, mostly to integrate the per key RGB. Also looking at the backlight breath I wish the two ISs were running in sync.

Lastly, I realized that a single key doesn’t work with the bottom plate screwed in - it seems the metal nuts somehow short a single line; The issue is that the case frame is too slim. That needs to be changed in the next rev to ensure the threaded inserts don’t touch the PCB.


Been following this for a while and I have to say that a Helix version of this would be pretty endgame ™.

1 Like

Hi. Great design. Will you be making this project open source?

1 Like

Welcome @JASM! It is open source already. See

The repository contains everything - schematics, gerbers, stls for the case, and the QMK code to make it work.


What software did you make that with because KiCad won’t open it.

the schematic and board were designed using Eagle (you’d need the Standard subscription to edit the files due to the board size) and the case is designed using Fusion 360.

Still working on the TFT display integration. However, I really wanted a choc hot-swap version, so I made a new revision with only minor changes; the TFT will have to wait until I finish the X-Switch version I guess.

Changes to rev 3:

  • dedicated I2C eeprom chip for VIA/ dynamic keymap support
  • choc hot swap PCB
  • 6P JST SH between halves to have pass SYNC and INTB from the ISSI to the master side
  • 6.5mm total case height! With switches and keycaps installed it’s ~13mm top to bottom (yep, slim!)

As for the case design I learned from my mistakes - bigger gaps around everything, the PCB slides right into the case, it fits perfectly.
The case was created using SLS as 3D printing method with Xometries Media Tumble & Dyed Black finish. And oh my god, it feels amazing, and looks great in my opinion. I’m really glad I chose this printing method and finish.

I haven’t soldered anything yet - I’ll post better pictures from a macro camera once I’m done soldering & installed the tenting kit. Also, I can post comparisons between the choc and mx case then, in preparations for the grand finale: a fully enclosed metal case for my X-Switch edition of the keyboard.


50 % build progress is done - left side works fine. Again, some pictures, then again some learnings.

assembled left side

compared mx and choc version

with front-and backlight on



Now off to the learnings:

  • JST SH as outside interconnect is a probably a poor choice. even with superglue the connector breaks off easily; it needs support from the top to be used as an outside connector.
  • I’ve cut an EVA foam sheet to be placed between the case and the PCB, and it dampens the typing sound. I like it a lot this way
  • I’ve used lock washers to tighten the EZ tents, and it works really well

I’ll post more pictures when I’m done with the 2nd side.
Oh, and did I mention, 6.5 mm total keyboard case high is super thin and amazing - and 13mm total height is, well also nice to type on.

1 Like

so, both sides are finished and fitted into their respective case. here is how the finished build looks:

It’s my very first choc experience. I bought linear choc brown switches; usually I use tactile switches, so it’s quite a change, but it feels good.

In any case, now off to add support for ad-hoc keymaps using the eeprom which has been added in this revision :slight_smile: