KiPad: Yet another custom built keyboard, but it's a numpad

I like using the numpad. But what if the numpad was a hexadecimal numpad? Like, it has 0 to 9, as well as A to F. I mean, I type out lots of hex (numbers, not like spells), especially when I'm deep into reversing binaries. Why not?

And then I saw this: IPv6 Buddy

Now I gotta build one, right? And make it customizable?

Version 1

The first version of this project actually happened during COVID-19 era. It was just a quick design; there was no case, it had some standoffs screwed to the back so it's angled, and mistakes on the PCB were "hotfixed" by cutting traces and soldering wires across. KiPad Version 1 Back

I also didn't have the proper key layout when I took this photo: KiPad Version 1

Version 2

That version 1 sat on my desk for about two years when I decided to build a new version for it.

It was re-designed basically from scratch. Some of the changes were:

I guess version 2 wasn't meant to be a final thing, just a prototype for me to test things. For the case, I had the idea to print a lifted, angled base which the PCB will sit on top of. Additionally, a plate that the key switches can sit/snap onto.

The base: Version 2 Base

The PCB: Version 2 PCB

And this was what I had in mind: Version 2 Half-Assembled Version 2 A little more assembled

The issues I've identified with this designs:

  1. Obviously, the microcontroller. The keypad shouldn't have a rainbow cable coming OUT of the case.
  2. It felt too... big. Like bulky, for something like this. The holes in the corner added too much gap all the way around.
  3. The key switch plate was too thin and flimsy. I guess it's fine once the key switches are snapped into it.
  4. The whole assembly just pops out since there's nothing securing it to the base.

Version 3

I did some brainstorming and went through some design iterations.

Version 3 Iterations

I also wanted each key to have an LED.

Version 3 LEDs

Somehow, I also found some space to fit the microcontroller, despite making the PCB smaller. But of course, I swapped the pins for the LEDs, so I had to cut and re-wire everything manually.

Version 3 Back

Case

For the case, I exported the PCB from KiCAD, imported into OnShape, and designed around it. Screw holes were also added. Version 3 Case Base in OnShape

The bottom also has feet, which were printed with TPU filament for grip. Version 3 Case Base in OnShape

The plate was made thicker and some walls were added to reduce the LEDs diffusing into nearby keys. The notches towards the top is to make space for the screw heads. Version 3 Case Plate

And finally, the top part would press-fit over the top, securing everything and providing a wall around the key switches. Version 3 Case Version 3 Assembled

All the extra prints from the first photo were for changing around different dimensions, testing fits and seeing which height and angle "felt right".

Version 3.1

This version just fixed the LED connections.

Version 3.1 Render

Inserted key switches, as well as key stabilizers for the longer keys. Version 3.1 Assembled

Keycaps

Keycaps were a big part of this project too.

I used the KeyV2 library to generate the 3D models.

Generated Keycaps

Ideally, I would've loved to make my own double-shot keycaps, and I almost bought an injection molding machine... but that's a lot of $$$ for something I would use not too often. (Technically, I did buy one. And then cancelled it a few days later before it shipped. You can find some cheap (cheap for an injection molding machine), smaller scale machines on aliexpress and eBay.)

I tried printing them on my Prusa MK3. They came out okay, but I really didn't love how it came out. Keycaps Printed 1

You can feel the layer lines, and they are pretty visible. Also, they are not very translucent, limiting the amount of light being passed through the keycaps.

For the key labels, I was thinking maybe trying dye sublimation, but the heat would just melt the keys, so that's a no-go.

Another method I attempted was to print them in resin using a SLA printer, make silicone molds, and then cast it with some polyurethane resin. Printed Mold 1 Printed Mold with Walls Silicone Mold Curing

The issues with this approach were:

  1. The parts and their features were small, so it was hard to get a good full fill, even with a vacuum/pressure chamber. The cured silicone would come out with some parts missing, or, they would rip as I pulled it off the printed mold-mold.
  2. Same thing would happen for casting the actual part with plastic.
  3. Polyurethan would also melt with the temperatures needed to do dye sublimation (unless maybe using a nicer, more expensive plastic?).
  4. And most importantly, the silicone would not fully cure!

This was something I did not know about. Most 3D resin cannot be used with most of the regular silicone mixes. Something with the combination of the chemicals cause what's called "cure inhibition". While the outsides of the mold cure solid(-ish), the area where the silicone mix touched the 3D printed part (SLA printed resin), it would just stay goopy (and sticky).

To prevent this silicone cure inhibition, I would have to either (1) buy special 3D print resin made for this purpose, (2) buy special silicone mix made for this purpose, (3) both, or (4) spray/coat the printed part before pouring the mold.

I did not want to buy more (and more expensive) stuff. And coating it somehow (maybe non-stick or paint) might work, but it will also make the 3D printed part slightly larger (the coating thickness) and therefore make the mold slightly smaller, resulting in slightly larger part (It also sounded like extra work).

So I just used the resin printed part itself. In the rendering of the keycaps, you might notice that the labels are "inset(?)". Like, I created wells. I extruded the letters/numbers inwards. I did this on purpose so that I can just fill that gap with black plastic resin and sand it down for a smooth finish.

Printed Keys Filled Keys

So that's how I made the key caps.

Final Product

With all that set, the final version looks like this: Front View Side View

Firmware

I just used QMK and added a config for this custom keyboard. I've also added a config for Via, so that it can be reprogrammed without having to download or recompile the firmware.

The board specific QMK configs, along with all the schematics, board designs, and 3D parts, can be found over at this repo: https://github.com/awkwardbunny/KiPad

Thanks for reading.
73,
-B