Hexadecimal 4×4 Matrix Keypad – Ultimate Cherry MX Version

In a couple of recent posts / videos, I covered the beginnings of my Hexadecimal Keypad design journey.

In these earlier posts, here and here, I presented the history of the project, then I assembled and tested my initial Tactile Switch based budget Hex Keypad design.

The Tactile Switch version Hex Keypad turned out quite nice and is significantly more usable than the cheap membrane keypads that are now generally available.

Also of note, my Keypad implements the standard 0.75 inch (19.05mm) key spacing, something you don’t typically get with small membrane keypads.

Having designed this initial budget Hex Keypad, I then decided that I’d also like to go further, and design my Ultimate Hex Keypad version.

Join me, as I now take you through my design journey to my Ultimate Hex Keypad design.

Hexadecimal 4×4 Matrix Keypad – Ultimate Cherry MX Version

The idea behind my Ultimate Hex Keypad design was to even improve on the comfort level that I recall I had when using my original mechanical Hex Keypad, back in the 70’s and 80’s.

Also, to provide Keypad assembly flexibility, so that the Keypad can be assembled in different ways, depending on the intended application.

Obviously, the best key key switch choice for an Ultimate Keypad, these days, is to utilise Cherry MX key switches.

Cherry MX Brown Key Switch – non-Clicky with Tactile-feedback

So, I designed an updated Keypad PCB for a Cherry MX key switch based Hexadecimal keypad.

Here is the relatively straightforward schematic.

MX Hex Keypad – Schematic

And, here is the resulting PCB layout.

MX Hex Keypad – PCB Layout

The new design also allows for the optional use of key switch Diodes, if these are desired to allow for avoiding key ghosting, which can otherwise happen when multiple keys are simultaneously pressed.

MX Hex Keypad – 3D PCB Projection

If Diode “key ghosting” protection is desired, you just need to install 1N4148 small signal diodes into the Cherry MX key switches.

If not required, then I have provided solder-bridge jumpers on the PCB, to allow easily circumventing the diode option.

MX Hex Keypad – Example Diode Solder-bridge Jumper

Opening an MX key switch is very easy, when you have the right tool.

3D Printed MX Key Switch Opener Tool

A diode can then be inserted through the 2 provided diode holes in the MX key switch body, and dropped into the body recess designed for this purpose.

The key switch then just clips back together.

Then, you now have 2 extra pins on your Cherry MX keyswitch, which are the legs or the diode.

Note that whether you choose to use diodes in your keyboard matrix also depends on your application, and the polling method that is used to read the keyboard matrix.

For example, to implement a diode protected keyboard matrix (assuming your input port pins are all pulled-high), the polling algorithm needs to pull each matrix row output low, one-at-a-time, and then detect for any depressed keys by identifying any column inputs that are pulled low (for the currently pulled-low row).

Example of Single Row Polling with a Diode Matrix

The diodes are effectively blocking any key ghosting occurring when multiple simultaneous key presses occur across different rows of the matrix.

The DREAM 6800 computer (which started me on this journey, as I explained in my first Hex Keypad video), however will not work with the diodes fitted.

The DREAM 6800 CHIPOS ROM uses a clever approach of having all matrix rows pulled-low simultaneously, and via a quad input NAND gate triggers a rising edge PIA CA1 input when any column is pulled low, via a keypress.

When a low column is detected, the polling algorithm then reverses the keyboard port directions, so that all matrix columns are now pulled low, allowing the activated row to then also be determined.

This approach is quite efficient, but reversing the keyboard matrix column / row port direction is not compatible with a diode protected switch matrix!

DREAM 6800 Polling Method – Not Diode Compatible!

My next challenge, to complete my Ultimate version keypad design, was organising appropriate MX Keycaps which have the desired Hexadecimal keypad legends.

The challenge is that readily available keyboard Keycaps can certainly provide for the AF letters, but the numeric keys are generally designed for either the top row of a QWERTY keyboard, with punctuation symbols above the numbers, or, for a numeric keypad with additional arrow symbols etc.

Readily Available Keyboard Numeric Keys – Example Numeric Upper Row Legends
Readily Available Keyboard Numeric Keys – Example Numeric Keypad Legends

Neither of these readily available numeric keycaps are desired.

In fact, what we desire is simply just the symbols 09 and AF, consistently sized and consistently located (eg. centred), on each keycap. We also want consistent legends for the two additional Reset and Function keys.

So, firstly, I located some MX Keycaps with clip-on transparent caps, which allowed printed legend sheets to be cut-out and inserted under the clip-on caps.

Transparent Clip-on Keycaps for MX Key Switches

The clip-on transparent caps provided what initially seemed a viable solution.

But, I wasn’t particularly happy with the need to insert and align printed legends, and also the clip-on keycap style didn’t provide the desired MX keycap look & feel.

Next, I did some further research on the common MX Keycap profiles.

I arrived at the uniformly shaped XDA profile, as what I considered the most appropriate for a Retro Hexadecimal keypad.

Typical MX Keycap Profiles – XDA chosen as most suitable for a “Retro” Hex Keypad

So, next, I ordered some blank XDA profile MX keycaps, and set myself up with a Laser engraver, with the intent of using a low power engraver to burn black ink into the blank Keycaps, to make the desired key legends.

Experimenting with Laser Engraved Keycap Legends

Some experimentation, including designing and making a jig to ensure consistent location of keycaps in the engraver, demonstrated that this approach held the promise of being successful.

Here’s an example of one of the keycaps I was experimenting with. There are multiple legends, as I was offsetting the legend so I could experiment 4 times on each keycap.

Example of one of my Laser Engraved Keycap Experiments

But, there were a couple of problems with this approach.

Firstly, making each keycap legend in the laser engraver was a relatively labour intensive process. First involving applying some black marker, then completing multiple passes in the laser engraver, and finally cleaning off the surplus marker ink to leave just the burned-in symbol.

Secondly, without some longer-term testing, I had no idea how robust the laser burnt legends would be, with the typical wear & tear of your fingers on the keypad, over a longer period of time.

This is where my Ultimate keypad design project stalled! That was a couple of years ago.

Then, recently, I revisited the project, inspired by a couple of things.

Firstly, I had since updated my 3D printer to a new Bambu Lab X1C with AMS, which was giving me some really good quality 3D print results. A level-up from my previous 3D printer.

My New Bambu Lab X1C with AMS arrives!

Secondly, I noticed some, better than expected, 3D Printed keycap designs for a Commodore 64 keyboard, which someone had published on Thingiverse.

On test printing one of these keycaps, at a fine layer height, I was pleasantly surprised by the resulting 3D printed keycap quality.

My Relatively Impressive X1C Test Print of an existing 3D Printed C64 Keycap Design

The C64 Keycap test print on my new Bambu Lab X1C 3D printer was definitely a significant step up from when I last tried to 3D print a Cherry MX Keycap, just a couple of years ago.

Secondly, my Bambu Lab X1C came with an AMS, which allows easy multi-colour printing.

Bambu Lab AMS – for Multi-Colour Printing

So, I had the idea of trying a two-colour print, to allow embedded legends (in a different colour), in the printed MX keycaps.

Inspired by this, I dived into creating my own XDA profile keycap models, from scratch, using Fusion 360.

My Fusion 360 XDA Keycap 3D Model Design

I then created embedded text legends in the keycap models, and used Bambu Studio to colour-fill the legends with a different colour filament.

After numerous tweaks to perfect the Keycap 3D model, I have to say that I’m actually quite blown-away with the final result. Exceeding my previous expectations of what’s actually achievable with a FDM 3D printer.

So here is a look at a finished set of Keycaps, fresh off the printer.

My finalised design White Keycaps – Freshly Printed

And, here is an assembled Ultimate version of my Hexadecimal Keypad.

My initial Ultimate Keypad assembled with White Keycaps (alongside my initial budget Keypad)

Initially I created the Keycaps in white with black legends, but in my desire to perfect the Retro look of the Keypad, I searched for the best “Retro Beige” colour that I could find, and I now also have Retro Beige keycaps with the same black embedded legends.

Here’s what the Retro Beige coloured key caps look like. I think they look great, and they also have a more “Retro” look to them, rather than the pristine white keys.

Now some “Retro Beige” Colour Keycaps – Freshly Printed!

Also, after careful consideration, I choose the Cherry MX Brown Key switches as the most appropriate match for a “Retro” Hex Keypad. These are the non-Clicky Tactile-feedback style of Cherry MX key switch.

Finally, I’d note that the design flexibility of using Cherry Key switches for the hex keypad also extends to the keypad layout.

As we are using key caps, we can choose how we want the hexadecimal matrix to be laid out.

For example, you could choose to assign the key caps in the 0 – F order from the top, or, you could instead use a 0F order from the bottom of the keypad, or you might even prefer a numeric phone keypad layout, with the AF keys around the edge.

You simply choose how you fit the key caps, depending on your preference or on the application.

The perfectionist in me is now happy enough with the result, that I have also added this Ultimate Hex Keypad to my Tindie Store, in Kitset form, for other enthusiasts who would also like a Cherry Key switch based Hexadecimal Keypad for their Retro computer project.

The Kitset will include all the parts to make the completed keypad, including the full set of dual colour 3D printed keycaps, the 3D printed key switch mounting plate, and also the optional 16x 1N4148 diodes, so you can choose whether or not you want to insert these into the supplied Cherry MX Key switches.

Also, the pin headers and the PCB stand-offs, to complete the Keypad.

In addition, I’m including the 3D printed Key switch opener, that I demonstrate in the video, to make installing the diodes easy (if you choose to use them).

Finally, there’s the choice of whether you want the White or the “Retro Beige” coloured keycaps, or alternatively, you can choose a bundle with both sets of keycap colours.

All Kitset Components – Ready For Assembly using the “Retro Beige” Keycap Colour

The video associated with this post also demonstrates the assembly of a Kitset.

To assemble the Kitset, first I solder in the pin headers. This includes an 8 pin header for the Hexadecimal matrix, and a 3 pin header for the Reset and Function keys.

Then, you’d fit the diodes in the key switches if you were taking the diode option. As demonstrated earlier in the video.

For my Kitset assembly I’m not using the diodes, so instead I solder-bridge the diode jumpers on the PCB, for each of the 16 hex key switches.

Note also, that the Reset and Function keys have pre-linked PCB jumpers, as you normally wouldn’t use diodes with these switches, as they’re not part of the matrix.

However, I included pre-linked jumpers for these two function keys, just in case you wanted to cut the PCB jumpers open and use diodes on these two switches.

Next, I fit the Cherry MX Key switches to the mounting plate.

After checking that all of of the key switch pins are nice & straight, the PCB should then just drop in place on the back of the key switches.

I then solder all the key switches to the PCB.

With all the soldering completed, I then fit the four PCB stand-offs.

Finally, I fit the keycaps, in the arrangement that I want.

And the Keypad assembly job is done!

The Assembled Ultimate Hex Keypads – in “Retro Beige” and White Keycap Colours (note different layout examples)

I hope you enjoyed my Hexadecimal Keypad journey. If you have an application for your own Hex Keypad, and you’d like to support me, then please feel free to visit my Tindie Store.

Discussion

Discuss this post on the Forum