Adding Keys to a Mechanical Keyboard

by Hanzo in Circuits > Computers

18738 Views, 118 Favorites, 0 Comments

Adding Keys to a Mechanical Keyboard

Final.png
Quefrency.png
Opt stretch.png
KLE.png

I have a really nice keyboard, a Quefrency split keyboard from Keeb.io. I like it because it is "normal enough" for my old hands' muscle memory but splits to keep my arms from getting messed up with carpal tunnel. The one thing I always craved was more use of my thumbs, as I use the control and option keys a lot and don't like putting my thumb waaaay back to reach them. So I finally got a 3d printer and decided to modify it.

One note, I put links to the things I use, but they aren't affiliate or anything - that said, I like all the stuff I have, so why not link right to them?

I should also note here that the additional key will do something that another key already does, not something new and novel. One might think that one could wire the new switch to multiples to, say, do both command & option, but there are issues with that where you could end up with ghosting that I won't go into here. If you want something like that on a non-programmable keyboard I would make your new key one you don't use (Function key? Caps lock?) and use the program Karabiner Elements (for Mac) to re-assign what it does.

This will obviously be done specific to my Quefrency, but aside from how you fabricate something for holding the key to the keyboard, it'd work for any mechanical keyboard. For those of you with "normal" rubber dome keyboards that would like to do the same, I would suggest one of the Instructables that inspired me, Hacking an USB Keyboard.

One more thing. This 'ible assumes you know the basics of soldering and doesn't go deep on how to use tools like Keyboard Layout Editor, Illustrator and only a bit of detail on TinkerCAD, so it you may crave more detail in these parts. I am no expert, though, so I leave it to you to find a better 'ible for that.

If you are, however, a Visual Design person who can't 3d model themselves out of a wet paper bag, this should also help with that... at least a bit.

Supplies

Supplies.png

For this you will need:

  • A switch. Really this doesn't need to be even the same type as your keyboard - I played with using low profile key switches from Kailh (but keycaps!) or one could even use something completely different (hooded toggle, old switch from a telegraph, really anything).
  • Maybe a keycap for it, especially if it is a keyboard switch.
  • A bit of wire
  • A way to hold your new key to the keyboard - Mine has a top/switch plate and a bottom plate, so I used the 3d print to make a middle that also takes care of this.
  • Any measuring tools you need to figure out how to make that way to hold your new key to the keyboard.
  • Basic soldering stuff - iron, flux is nice, solder...

For me, not being some 3d modeling guy, but rather someone with a visual design background, I will also use Illustrator & Tinkercad, but if you have and know Autocad or Inventor, you go nuts. As stated before, you are also a vis-des who wants to do (simple) 3d modeling this Instructable should be helpful.

The Plan.

KLE Start.png
KLE End.png
KLE raw data.png

The first thing I had to do was design and print the part that will hold the key to the keyboard. The Quefrency has a number of possible configurations. Because of this, if you go to its page there are links to the Keyboard Layout Editor (KLE) file. KLE is a web based tool specific to laying out keyboards. If you are adding to your store bought 65% or 104 key (really or nearly anything else) you should be able to find a layout for it. I opened this, chose my configuration, and then added my key. If you are not familiar with it, but are wanting to modify keyboards, you should be. Note that everything is done on a grid of "u"s, or units, with a normal letter key being 1u wide and 1u tall.

I opened the link, adjusted it to my configuration pre-additional button, and, well, added the buttons. For this we'll just stick to the left side.

Next, Plate Maker Software.

Raw data.png
Plate.keeb-1.png
Plate.keeb-2.png

Now we need to get this out of KLE, and for that we use a keyboard plate generator. Keeb.io makes a fair number of keyboards and thus has his own online tool to take KLE files and turn them to plates. I used it, tho there are others like swillkb & ai03 plate generator. In KLE, navigate to, and copy the raw data and paste it into the plate gen software.

If it looks right, you can then export it as an SVG for use in Illustrator.

To Illustrator to Make the Part in Layers.

Illustrator all.png
Illustrator Mid with Hole.png

I then brought those SVG files from Keebio's platemaker to Illustrator. My goal here is to design the layers that will be put together in TinkerCAD to make my 3d model. I worked at a 1:1 scale, and in millimeters, as this is how the entire world works but the US, including TinkerCAD.

When I did this in illustrator, I was thinking of it as if I were making it by cutting out each layer and stacking it on top of the other. I designed everything on top of everything else separated into layers, even putting a screenshot of the KLE tool in to check how far keycaps would stick out. Also, I had help with this as Keebio has case files for his machine, in illustrator, on Github making the whole affair much quicker.

Using layers and putting everything on top of the other enabled me to be sure placement and proportion were correct on the file. In the end, I had 4 layers:

  • A plate layer that was even (level?) with the existing metal plate, but for the extra switch only,
  • Two middle layers - one with no channel for my jumper wires, and...
  • One with that channel for the jumper wires.
  • I also added a bottom layer, like the plate layer but without the hole, for the bottom of the part sticking out to hold the switch.

Why two middle layers? I wanted there to be no chance of seeing it where the new piece meets the existing keyboard. Maybe for you one would be fine - I really haven't even tried it.

It should also be noted here that the rest of the keyboard uses wee screws with 8mm standoffs to hold the plates to each other, and for the two middle layers I made holes big enough for a standoff and made the top and bottom plates with corresponding holes smaller just for the screw shafts. Note there was a lot of filament to deal with getting those holes correct due to fun things like elephant's foot, and somehow they still didn't end up quite right, but passable. Also note I put in WAY too many screw holes.

Separate Layers to SVG Files.

SVGs from Illustrator.png
Saving as SVG.png

Now TinkerCAD is very easy but it will treat every file you import (and it wants SVGs, btw) as a single, whole 3d object. As remarkable as it does at interpreting what I did in Illustrator, I needed to export layers separately and recombine them in Tinkercad. My Illustrator file had, depending on the day, at least those 4 layers noted prior that I actually want as part of the print.

So I did the dance of making a new file, copying in the contents of one layer, saving it as an SVG, and repeat. I ended up with files for the plateR (R for right), midR, midHoleR, and bottomR SVG files. Didn't touch anything in the SVG options modal/pop-up.

Determine Thicknesses

Thicknesses.png

So we have all the layers in Illustrator, but when we bring it to TinkerCAD we'll need to make them a specific thickness. For me, that meant measuring the thickness of the plates (1.6 mm - typical is 1.5 for plates?) and the gap between (9.7mm). Using this, I came up with a plan for how divide up the layers and how thick each needs to be.

For sake of my visualization (and now yours) I sketched it out in Illustrator.

TinkerCAD #1 and "want Divided by Got"

Size Illustrator.png
Size Tinker1.png
Size Tinker2.png

TinkerCAD is magic but has issues for me where what I bring in from Illustrator, while consistent, is always the wrong size. If you get this figured, please comment so I can learn from you. So yeah, wrong size. To fix:

  • Note the size of your largest file in Illustrator - mine was 211mm across. I use the larger parts because I figure the math should work out more precisely.
  • When you import your file it will give you the opportunity to scale it, showing you the length, width and enlargement/reduction in %. Note the size of the piece you just looked at in Illustrator. For me, that was 792.
  • Tab or click to the width and change it to match what is in Illustrator. Then tab or click off that field and TinkerCAD will tell you the reduction in %. You can use that from here on out, or...
  • Take what you want (211mm) and divide it by what you've got (792) and you will get your scale factor. This times 100 is the percent enlargement or reduction. Mine was 35.277716%. Likely you don't need it to that level of exactness, but with copy/paste who cares. I paste it into a file somewhere.

Note that your mileage may vary on the size adjustment. Again, figure out why? Please share!!

TinkerCAD 2 - Super Easy 3d Modeling If You Are a 2d Designer

TCad basics.png
Tcad stacked.png
Tcad united.png
Tcad export.png

As stated in the previous step, TinkerCAD is magic. It is super limiting in many ways but the way it works is very similar to the pathfinder tool in Illustrator, and when you import illustrator files it has, thus far, always made it 3d automatically and correctly interpreting what is solid and what is a hole. Before you start:

  • Grouping for TinkerCAD = combining to a single item - like in Illustrator pathfinder using the "Unite" function. Even better, it remembers what the individual items are, so although they become "one" you can do the Illustrator "double click for group mode" and modify later should you need. You can not do this, however, within the entity you import. That is considered a single object and seems not to be adjustable beyond scale, etc.
  • TinkerCAD has a lovely snap feature that is settable to .1, .2, etc. to multiples of a mm. This is super nice, but note that it can also frustrate you if you have it at 1 (default) and need to move something 2.7mm. BUT, you can also move something, then when done type in the distance you really want it to move. This works with everything in TinkerCAD I have run into thus far (sizing, setting height, moving, etc.).
  • In TinkerCAD you get a bounding box with turn handles - all pretty easy for someone familiar with Illustrator. For the thickness of the extrusion, you type it in to a box when selected, and each item has a little cone handle for moving it in the "Z" axis (up & down).
  • You really need a three button mouse as with all 3d programs. Left to select, middle/scroll-wheel button to move laterally, right to pan around. Rolling the scroll-wheel zooms in and out. That big beautiful glass touch pad on the Mac will really try your patience here.

I tend to go one piece at a time, from bottom to top. It goes like this:

  • Import an item remembering to scale.
  • Didn't remember? Delete and start again. Note also TinkerCAD stays with the last item selected even if you import another, so select, then delete that item you forgot to scale.
  • Select the item and set it's thickness per the plan.
  • If it is not the first item, move it up to stack upon the previous. Remember for exactness I just move it then type in the exact amount.
  • Move it to match the other parts. Note that you may need to adjust the snap from 1mm to something lower to get it to match up.

Lather, rinse, repeat till done.

TinkerCAD will randomly assign colors to your parts. Some darker ones make details difficult (for me) to see details. You can click on the "solid" circle and choose another should you desire. I make it my wont.

Select all your parts (either shift or marquee) and hit the (very Illustrator "unite" looking) Group button. Viola! you have a single part.

Note: Adding chamfers and round-overs is not (easily) possible here. Rounding over an edge that has a curve is especially tricky, and I won't go into it here. But if you do just need a hole, fiddle around and it is really easy. I also feel confident that there are better tutorials out there than I could provide at this time.

Print Something to Hold the Switch

Parts.png

I then printed the new parts of the middle plate. If you want advice on how to get this to print right, please seek help from others. This is my very first 3d printing extraveganza and I wasted a lot of filament, and likely would tell you lots of things that are very wrong. If you are lazer cutting layers or hand molding it from Apoxy, all good, but you'll have to figure out the specifics. So just assume a lot of pain occurred at this point and as I may be the last one on the planet to not use a 3d printer you'll likely be more quickly and more thoroughly successful.

Add the Thing to the Keyboard, Plus Bonus LED

BluTackLED.png
Plate on.png
Closeup.png
Wired-n-Taped.png

First, I will add only the top layer with the switch installed. The design will allow wiring it up with the channel exposed, then the next layer covers it up.

A note: my keyboard has LED backlighting, so I added an LED to my switch using BluTack.

  1. Blu Tack the LED into the switch. Other ways could include chewing gum, hot glue... I haven't tried any of it. Also, this seemed to work fine for me, but ymmv with the board supporting adding another LED in parallel to an existing one.
  2. Said switch goes into the top layer.
  3. Remove the bottom plate and add that layer of the mid-section, slipping it onto the existing stand-offs.
  4. Using very small wire, connect the switch to the existing switch holes (or in my case the additional ones) and the LED into it's twin's holes. Note LEDs have polarity, so big lead to +, short lead to -. For the switch, we're just shorting the pins (when pushing the key) so it doesn't matter which goes to which.

Given it is so small, fiddly and we're soldering to existing soldered points, the addition of a bit of flux from a flux pen is helpful. Watch carefully for shorts - my soldering iron was likely set too hot, so I melted the insulation on my tiny wires, so I added some electrical tape. Had I anticipated this I could have used shrink tube, or one could use liquid electrical tape.


Close It All Up

Standoffs.png
Bottom added.png
Bumpons.png
Needsa Cap.png
Final.png

Due to the thumb button protruding from the main board, I added additional stand-offs. I actually added space for a lot - too many. In the end 2 at the corners seemed plenty.

Add the stand-offs to the top middle piece and then, being careful to tuck the jumper wires into the track, add the bottom half of the 3d printed middle section. Note that, for whatever reason, my standoffs are slightly different than the originals, but that's fine - they work.

Place the bottom plate and screws to put the thing together.

My old bump-ons (little rubber feet) had also moved around, spreading their adhesive all over the bottom of my board, so I also cleaned off the goo from the bump-ons and replaced them.

You are now done!!

Thoughts for Next Time

This started as a minimum viable way of adding a switch, but I may use the 3d printing to test spacing and have a full switch plate laser cut, including the additional switch per side, and adding plate mount stabs for my left primary thumb key that I use as the actual space bar most often. Right now it's a 1.75u capslock cap, but I would like it to be a 2.25u key. If I do this, my 3d prints will then only comprise the middle section (not the top and bottom for where the extra thumb keys are) but will be invaluable in checking the size of the plate prior to ordering.

Additionally, I made the middle in two sections, one with the channel for the jumper wires and one without, but I think next time (when I do the right half) I will do two sections for the channel, making overhang "hooks" to try and keep the wires in place as I work. It was fiddly to get the wires to stay put in there while I worked. That said, I could have literally taped them in place while working...

Finally, if anyone reading noticed the switch type, they are Kailh Box Jades one of the loudest out there. So loud, in fact, that it can be a problem when doing teleconference/Zoom type stuff. I may just get another set of PCBs from Keeb.io to do a Zilent version with the full plate cut for that.

That's it. If you made it this far, thanks for reading! Please, go modify stuff and make it your own!