HacKeyboard, an open hardware mechanical keyboard – part III

Hi everyone! This is the third post on building the HacKeyboard. In case you haven’t read the first ones, here are the links:

HacKeyboard, an open hardware mechanical keyboard, part I

HacKeyboard, an open hardware mechanical keyboard, part II

Removing the keycaps and desoldering the switches


The first thing I did was to remove the keycaps. Most of them came out simply by pulling and the most stubborn ones came out using a small stick as a lever. Then I proceeded to remove any screws from the keyboard case, open it and finally desolder the switches using a soldering iron and a desoldering pump. I had to be careful not to break the pins since I noticed that they can break easily if bent too much. In the picture below you can see how the switches are inside. The switch was not “clicking” so I decided to open it up to see what was wrong. It turned out to be a small metal piece that was not bent as it should. I just fixed it and it started clicking again. 🙂


Retr0brighting the keycaps (optional step)

This is an optional step that you can do if the keycaps from the old keyboard are too yellow. In this project I didn’t had to do it but I did it to restore some older keyboards before. The plastics of the housing of many electronic devices contain a fire-retardant component called Bromine that is responsible for the “yellowing” of the plastics when in contact with light and oxygen. That’s why if you keep your vintage electronics closed in a box they won’t change color as much as if they are exposed to those two components. In a simple way, this component sort of removes oxygen from the plastic to prevent fires and by removing oxygen the plastic changes color.

It turns out that some clever people who love vintage computers came up with a solution to reverse the plastics back to their original color. In a simple way, they found a way of returning the oxygen to the plastic. In case you’re interested in knowing more about this, check the post I made about it here: Retr0brighting Vintage Computer Plastics.

Making the keyboard case

The keyboard case design was inspired in some other keyboard designs I saw online. I decided to go for a simple case with 4 layers of plexiglass: top layer, 2 middle rings and bottom layer. The top layer need to be machined to have square cutouts to fit all the switches. Using a digital caliper I measured all the different keycaps and the switches dimensions and then I started desigining the top layer in FreeCAD, which is a great open source 3D design software. Once I finished the top layer, I designed the middle rings and the bottom layer, which were a lot simpler. The bottom layer is just the same as the middle rings but without the inner cutout. You can get my FreeCAD files here and modify them to suit your own ideas. If you want you can also get the keyboard layout in vectorial format here.

In case you are doing your own design, once you finish it, you’ll want to export the designs as .svg or .dxf files, which are the files used by CAM (Computer Aided Manufacturing) software.

HacKeyboard front plate FreeCAD

HacKeyboard middle ring FreeCAD.JPG

Then, it was time to import the .svg files into HeeksCAD and generate the toolspaths using the Profile operations (HeeksCAD files here). Then I placed the 3mm cast acrylic plates that I had in my home lab in my TheMaker2 Homemade CNC Machine and put hot glue around them to hold them steady in the CNC table. Since it would be the longest CNC machining I had ever done and I didn’t have any leftover acrylic to retry in case something went wrong, I set the toolpaths to make the cutouts in several small Z steps (0.5mm) and a slow feedrate. The machining of the front plate alone took 6 hours. The middle and bottom layers were much faster. It took some time but the resulting plates were great! 🙂

HacKeyboard HeeksCAD

TheMaker2 machining front plate

TheMaker2 machining front plate

TheMaker2 machining front plate

Bottom and middle plates

By the way, if you try to follow the same procedure, make sure you get cast acrylic, not extruded acrylic. Cast acrylic will be machined just fine, without melting. On the other hand, extruded acrylic will melt around your cutting bit, which is something you do not want to happen.

Since I used an endmill with a 1.5mm radius, the inner corners of the cutouts for the squares also had a 1.5mm radius. To fit the switches the corners had to make a sharp 90º angle. To fix this I used a small file in all the corners (yes, I had to manually file 89×4 = 356 corners 🙂 )

Filling inner corners from front plate

Inner corners filed

At this point I tested all the parts I had ready so far to see if everything was fitting as planned and no mistakes were made. I inserted all the switches and keycaps in their places and stacked the four layers of acrylic to check for any errors. I also got a first vision of how it would look and feel and was pretty excited with the result so far 🙂 Everything was perfectly aligned and looking good 🙂

Placing the switches and keys

Back of the front plate

Testing the assembly

Layer alignment

Hackeyboard case test assembly

Everything perfectly aligned! Looking good already, right? 🙂 Let’s continue!

I proceeded to glue the two middle layers with super glue. In this step it is very important to be careful to glue them perfectly aligned. If I had 6 mm acrylic available I could have made a single ring instead of two, which would avoid glueing and would look a little better.

Glueing middle layers

Middle layers glued together

After having the acrylic layers glued I marked some spots to drill the mounting holes in all the layers and used the drill press to drill 2mm holes only in the bottom layer and in the two middle layers. I didn’t do this step in the CNC because I didn’t have any 2mm cutting bit at that time. I made a total of 10 holes:

  • 4 in the corners, 3mm away from the outer edges;
  • 2 in the middle, 3mm away from the top and bottom edges;
  • 4 holes at 1/4 and 3/4 of the longer side, also 3mm away from the top and bottom edges.

If you’re building your own, remember, do not drill the top layer at this point, only the bottom and middle layers.

Drilling 2mm mm holes

In the top layer I used the Dremel to make some pockets to fit some M2 nuts. The remaining space around the nuts was then filled with epoxy resin, which also held the M2 nuts in place. To prevent the glue from getting into the thread of the nut, I placed the screw inside the nut before applying the glue.

Front plate pocket for M2 nut

Front plate pocket with M2 nut

Epoxy Glue

Epoxy glue drying

When the glue was completely dry I removed the screws and used a craft knife and a small file to remove the excess glue until the surface was leveled with the acrylic.

Excess glue removed

Removing glue residue from thread using a small drill bit

I didn’t want the heads of the screws to show outside the acrylic plate since I didn’t find it aesthetically pleasing. To fix that I used the drill press to open little bores for the heads of the screws in the bottom layer. If you attempt at doing this you must be careful because you can go only at 2 mm of depth. Otherwise you’ll just drill through the acrylic plate, which is something you don’t want.

Bottom plate bore

When I previously assembled the parts I verified that the Enter key could jam a little bit if pressed in the corners. Since the key is big and the switches are not made to be used with side forces, it could be uncomfortable to use. To solve that I decided to add some clips to the bottom of the key to apply a stabilizer, just like the ones used for big keys like the Space-bar and the Right Shift keys. This clips are used to fit a piece of metal that distributes the force applied to long keys, so that the force is applied vertically, even if you press the key in the corner. To make the clip holders I used a piece of rigid PVC and small files and saws. I tried my best to make them similar to the ones in the Right Shift key that you can see in the photos. I did them manually because they are very small and I had no other way of doing them. If I had a 3D printer at that time I would surely design and 3D print the clip holders. To make the metal clips I used a paperclip and some small pliers. When ready, I glued them to the bottom of the keycap with epoxy glue.

Making PVC clips for the stabilizer

Making PVC clips for the stabilizer

Enter key stabilizer clips ready

Then it was time to place the key stabilizer clip holders in the top layer, which were removed from the original Monterey K108 keyboard.  To place this clip holders in the top layer, once again I used the Dremel to open some pockets in the approximate positions, placed the clip holders inside and filled them with epoxy resin. To make sure the clip holders stayed in the correct position, I mounted the switches and keycaps for these keys with the metalic clips in place while the epoxy resin was drying. Once the glue dried, I removed the switches and used a craft knife and some small files to remove the excess glue.

Scavenged stabilizer hook

Opening pockets for stabilizer hooks

Testing the stabilizer hooks placement

Stabilized keys in place while the glue was curing

Glue curing with Enter key in place

Excess glue removed

Since below the space-bar there were to aligning plastic pieces, I also had to make some small guide tubes for them, which were also glued in place with epoxy glue. The guide tubes were made of some PVC rod drilled in the middle. To make sure they were glued in the correct place, I placed the space-bar key in place, pressed it a few times to align the guide tubes and then let it the glue dry. Once dry, I removed the key and the switch.

Guide tubes for spacebar

Finally, it was time to make it pretty, instead of a mess of scratched acrylic with holes and glue :).

First I assembled the whole case and used an electric sander to remove some misalignments between layers. I wanted it to be perfect! 🙂

So, to hide all the Dremel made pockets and epoxy glue, I used carbon fiber vinyl to cover the top and bottom layers. To apply the carbon fiber vinyl I used a heat gun to heat it and then slowly stretched it until I covered the acrylic layers. A hair drier could also be used, but I didn’t have any in my home lab 🙂 If you’re doing this, when applying the vinyl you have to be very patient, specially in the top layer, which has some protruding parts. Take it slow, heat it a little bit and stretch it well and if you see bubbles appearing, pull it a little bit back and retry. Take your time and be gentle. If you’re careful you can even wrap it around the edge to the back of the plate without any wrinkles.

Applying carbon fiber vinyl to bottom plate

Applying carbon fiber vinyl to bottom plate

Bottom layer ready

Applying carbon fiber vinyl to top layer

Applying carbon fiber vinyl to top layer

Cutting excess vinyl

Cutting squares with craft knife

Top layer ready

Once I managed to wrap the carbon fiber vinyl around the edge, I used my craft knife and cut the excess in the bottom of the plates. In the top plate, I also used the craft knife to cut away all the 89 squares.

It was finally time to assemble the case and apply rubber feet to the bottom. The rubber feet I used can be found in any hardware shop. I used three small rubber pads in the bottom and two big rubber pads in the top to give the keyboard a little slope.

Rubber feet

HacKeyboard with slope

Since the PCB design was done afterwards, I didn’t leave any cutouts in the middle rings for the micro USB connectors. The slots were later opened using the TheMaker2 CNC and a small file. To open the slot, I cut a 27mm section from the second layer (counting from the bottom), 55mm away from the right edge of the keyboard.

After this step, the case was done and I proceeded to the design of the PCB.

Are you enjoying this project? Follow the link to continue reading and for the full set of photos of the build: [HacKeyboard, an open hardware mechanical keyboard – part IV]

Did you find this post helpful? Do you wish to contribute to other projects regarding computer science, electronics, robotics or mechatronics that will be posted in this blog? If you wish to do so, you can donate via paypal using the button below. Thanks! 🙂