geekhack Projects > Making Stuff Together!

Adding extra keys to your Kinesis Advantage

(1/54) > >>

The Kinesis Advantage is an amazing keyboard that can however be made even better. While the keyboard has 2 fully programmable layers, the 2nd layer is only accessible by pressing the uncomfortable rubber Keypad button to toggle it, or by using a footswitch, which enables the keypad layer momentarily (as long as you hold down the footswitch). I always wanted to have a momentary access to the keypad layer by holding down a normal, conveniently located key, so I decided to mod my beloved Advantage LF.

This wiki has 7 parts.

Part 1: Adding extra switches under the shifts

Under each Shift button, there is room to fit an additional key:

To do this mod you will need: a couple of cherry MX switches (got mine from, a screwdriver, dremel with cutting bit (or a drill and files), a hot glue gun (or some kind of glue), and a soldering iron, as well as some wires. This keyboard normally uses cherry switches with pins and diodes, but that's not needed for the extra switches, in fact it's better to use plain switches here since the pins and diodes would get in the way.
First you will need to open up the keyboard, disconnect the keywells by lifting the fastener on the connector and then pulling out the ribbons, and unscrew the 3 screws holding each keywell.
Then you will need to dremel out a square hole from each keywell. I didn't bother making any measurements, just used the loose cherry switches to eyeball the location. You can start with a small square, try fitting the cherry switch, and enlarge the hole as needed till you have a nice tight fit. Note that the square holes need to be far enough from the Shift switches, so that the new keys don't rub against the Shift keys.

Be careful not to damage the PCB, as I did.

Above damage caused my left column of keys to stop working, but I fixed it by scraping the PCB and restoring the broken run using solder.

In order to secure the new switches, I decided to use hot glue which is easy to undo, but other kinds of stronger glue like crazy glue, gorilla, or epoxy could be used. I put these switches rotated opposite than the rest of the switches, so that the terminals don't bump into the PCB.

Then I used the dremel on the case, to make room for the new keys. You need to put a keycap on the switch and try out the keywell on the case, to make sure you cut enough. The red circle shows the piece I cut off of the case:

Since this keyboard supports a 3-action footswitch, these 3 actions are very easily accessible and marked as FS1, FS2, FS3 on the main PCB. Each of these, when closing circuit with GND (black wire), activates that particular function. FS1 is initially mapped to Left Shift, FS2 to momentary Keypad activation, and FS3 to Keypad Enter. These are the default mappings upon keyboard reset, and are remappable like any key on the keyboard. If you are interested in adding extra keys for whatever other function like Windows keys etc, you could use the footswitch leads and remap them to your heart's content; they are independent "keys" and won't affect your regular Left Shift or Keypad Enter. For my purposes I used the wire that corresponds to the keypad. I simply jammed 2 pairs of wires on the green and black terminals right on the molex connector. I joined 2 pieces of green wire, as well as 2 pieces of black wire on one end (to make 2 Y cables), and tinned them with solder so they hold up and also become thick enough to make a snug fit at the top of the connector:

I then soldered the other ends onto the switches. You can also see the PCB repair on the left.

Here is what the keyboard looks like with the keycaps still off the new switches:

And here is the final result:

The mod took me about 2 hours to do, and I think it's worthwhile enhancement to this fantastic keyboard!

Part 2: Adding extra switches in the thumb area

It's been already a week since I added the first pair of switches, and I've been itching to add more.
To do this mod you will need: 2 switches with pins and diodes (I'm making these PCB mounted), a mini breadboard (perforated / solderable) PCB, a screwdriver, a drill, a dremel with cutting bit, a soldering iron, and some wires.

This little PCB was big enough to cut in 2 pieces and accommodate both halves of the keyboard. It can be held by existing screws, no gluing needed. However longer screws would be better, since the original ones won't reach all the way in.
First you cut the breadboard in half (this depends on what kind of breadboard you get your hands on of course), you align the Kinesis thumb PCB so that the diagonal edge is parallel to the breadboard PCB holes, you mark the locations the screws will go through, and you drill the holes:

Note I also had to round the breadboards' corners closest to the keywells with the dremel, because they were bumping into the keywell's curved PCBs.

Then you take the dremel and cut out square areas from the top of the case as shown in the photo below. Care must be taken not to interfere with the keywell mount point.

The openings should be just large enough for a keycap to fit through. You will notice that the keywells partially obstruct the way to the breadboard:

So you need to set the keyboard upside down, remove the breadboards (if you attached them) and cut out some of the keywell edges so there's no obstruction any longer.
You don't need to remove the keywells to do this. The result will look like this now:

and here it is with the breadboard PCBs screwed on again:

Now the tricky part is mounting the switches at the right spot on the breadboards so they are aligned with the case openings. You will need to screw the breadboards in, take a switch (preferably with a keycap on it) and see where it should sit. Note I'm using switches with pins and diodes for the sole reason of mechanical stability. The pins prevent the switch from rotating, and the diodes when soldered will help hold the switch more securely to the PCB so it doesn't fly off when pulling keycaps.

You can also see some markings I made on the breadboard to tell me where the pins/terminals/diodes will go. Unfortunately, while the diode terminals and one of the switch terminals will be aligned with the breadboard holes, the plastic pins, the other switch terminal, and of course the center cylinder of the switch fall in-between the breadboard holes, so you need to drill the breadboard in 4 places for each switch (with holes of varying size) to make everything fit:

Here are the 2 breadboard pieces with the switch pins/terminals squeezed in:

After the switches are squeezed onto the breadboards, it's time to screw them back onto the keyboard

Now I had some alignment issues, the switches turned out to be too north:

So I decided to enlarge the breadboard screw holes, to allow for wiggle room of the breadboards. You can see the enlarged holes here; I ended up enlarging the corner one even more after this photo:

After alignment, I took some red wires and made a Y cable, which went into the top of the molex connector and jammed along the FS1 footswitch terminal (which has a default mapping of shift). The ends of the Y cable were soldered onto the new switches, and for ground, I used the yellow wires and soldered them onto the black ground wires off of the previously installed switches (under the shifts).

And here is the final result, a Kinesis Advantage LF with 4 extra cherry MX red switches! 2 for keypad access, and 2 for shifting with the thumbs. The new thumbswitches can also be mapped to anything else, like windows keys, tab, escape, whatever.

This mod was more involved than the first one, mainly due to the PCB aligning and drilling for the switches. It took me a little over 3 hours.

Part 3: Adding extra thumb switches near the middle of the keyboard

To take advantage (pun intended) of the still unused FS3 footswitch, I decided to add the final 2 extra switches this time near the middle of the keyboard. To do this mod you will need 2 switches with pins and diodes, a drill, a dremel with cutting bit, a soldering iron, strong glue such as Gorilla glue / Crazy glue / epoxy, and some wires.

There are some obstructions near Alt/End/PgDown so I chose to place them next to Home and PgUp. I find it a quite comfortable location anyway (for a less often used key). First I cut the case roughly, making the initial cuts small so I could adjust in any direction later.

Then I drilled the thumb PCBs - one of them had a conveniently placed hole that I enlarged. I used the Home and PgUp switch pins as a guide to "aim" the proper drilling location for the large central switch holes. It's a good idea to sacrifice a switch by cutting all its pins/terminals (except the center stem bulge) for the sole purpose of making sure the center hole is in the perfect location. If a hole is off, you can enlarge it with a drill to the proper direction, and besides, the rest of the pins/leads and glue will hold the switch well in place.

By using another switch, I figured where to drill the other holes for the diodes and pins. I had to try the switch and enlarge the holes until everything could go through and the switch could be fully seated. I decided to solder the (useless in this case) diodes to the dead area of the PCB for the purpose of mechanical stability, and let the actual switch terminals hang off the edge of the PCB. One of them has to be completely bent so it can clear the PCB and protrude enough to be soldered to a wire.

With the help of a switch and keycap on it, I further enlarged the case cuts, so that the keycap can comfortably go through the openings. This is the time to also make sure the keycap looks dead-on centered while the switch is fully seated on the PCB.

I scraped the PCB green insulation at the location the diodes were to be soldered, to expose the metal. I just held a drill bit in my hand to do it, the insulation scrapes off pretty easily:

I then glued the switches in place, with Gorilla glue. Hot glue isn't strong enough in this case, and the diodes to be soldered would only hold the switches on one side, which wouldn't be secure enough to withstand pulling keycaps. Here is how I chose to orient the switches (differently than the rest) so that the diodes are on the PCB:

After gluing, I soldered the diodes, and also soldered wires on the switch terminals. These wires lead to the FS3 terminal of the molex connector, and to GND.  I chose to connect them to the GND on the perforated PCB used in part 2, just to keep the wires short.

Here is the final result, a Kinesis Advantage LF with 6 extra switches, bringing the total number of keys in this keyboard to 92 ! 

My current mapping of the extra keys is the following:

[*]Keys under the shifts: Momentary Keypad access
[*]Keys near the thumbs: Shift
[*]Keys near the middle of the keyboard: Super (Windows) keys

Part 4: Taking advantage of the 6 unused spots available on the matrix

According to the dmw's excellent article (copy/pasting screenshot here for easy reference):

... pairs 1+6 and 1+11 on the left hand ribbon, as well as pairs 4+3 and 4+6 on the right hand, are unused. By successively shorting those pairs with a jumper, I verified that all 4 "hidden" keys are usable. Shorting them produces a "click" sound, with no event recorded by the xev program for the pairs on the right hand (these "keys" behave similar to the dead Caps Lock in keypad mode). On the left hand, it gets more interesting, 1+6 is mapped as an additional Left Shift, and 1+11 is mapped as Num Lock!

All these 4 "keys" are valid remapping destinations. So on my LF that I tried this on, I remapped A to 4+3, B to 4+6, J to 1+6 and K to 1+11 as an experiment, and when out of remapping mode, I confirmed that shorting those pairs, produces the remapped keystrokes.

Similarly, there's 2 more spare "keys" to be found, this time on the thumbcluster ribbons; 1+5 on the left (by default mapped to left windows key) and 4+7 on the right (by default mapped to some kind of macro: Escape 1 2). This brings the grand total of hidden remappable keys to 6 !
That means: Together with the 3 footswitch terminals, you can add a total of 9 individual keys/actions (all of them remappable) by simply tapping on existing wires!
Below are shown the 6 spare keywell matrix spots on the main PCB side. I decided to glue header pin connectors on the main PCB, and connect them to these spots, for easy connecting/disconnecting switches using jumpers.

I even added 1N4148 diodes so I don't have to worry about using diodes on the keys themselves. The photo below left, shows the header pins simply hotglued to the side of the main PCB on my modded LF. The photo below right, shows an older Kinesis Classic I first did this on where I actually drilled the PCB edge, and used gorilla glue to secure the pins.

Here are the spots connected to the actual keys, so now all 4 of my extra thumb keys are individually remappable:

Part 5: Adding palm keys

Since the last 2 spare spots on the matrix were still available, I decided to add 2 more keys, to be used with my palms. I went with arcade buttons which looked big and comfy, and settled on the Japanese 30mm Seimitsu PS-15 buttons, because there were the shortest profile ones I could find (they only need 21mm clearance inside the case).

I drilled pilot holes on the case (positioned at 20mm from the south edge of the keyboard and 78mm from the side edge). Later I discovered that putting the buttons closer to the sides of the keyboard (ideally: 70mm) is much better. I used a small step drill to enlarge the holes, and then took a big step drill bit which goes up to 1"3/8 in 1/16" increments, and drilled 1"3/16 holes which was perfect for these 30mm buttons. I drilled the case from the top, and used the drill on the bottom as well, to get rid of any burrs. Drilling was quick and effortless, and the holes came out very clean with no sanding required.

The button simply snaps into place thanks to the 2 tabs it has on the sides. It's easy to unmount as well by pressing on the tabs and pushing it out.

I then wired the buttons to the spare matrix spots of the thumb clusters, which means both these buttons are independently programmable! The final result looks good too.

I initially mapped them as shifts, but later wired the right one to operate as keypad shift. These buttons are really comfortable with their smooth curves, and actually remind me to avoid anchoring my hands down while typing. I can still rest my hands very comfortably when not typing, and the button location actually helps reduce hand pronation. You can do this mod independently of the rest, without any need for soldering if you like, by using quick connects to hook wires to the buttons and connecting their other end to the FS/GND terminals on the molex connector as described in part 1 of this wiki. I did just that on my 2nd LF keyboard:

Adding palm keys was much easier than all the other key additions mentioned in this wiki, and seems to have the highest ergonomic benefit as well. Highly recommended!

Part 6: Adding additional arcade buttons

After a few years, I felt my work keyboard could use a couple extra keys, after all I had only added palm keys to it. However I didn't want to go to the trouble of adding cherry switches, so I decided to add 2 small arcade buttons and got me some Sanwa OBSF-24.
This time I hooked them up to the spare thumbcluster matrix spots - not on the main PCB but on the thumbcluster PCBs.
I unscrewed them, flipped them over, and confirmed the spots (same positions as mentioned in part 4, except in the opposite end of the ribbons).

I decided to solder pins to them for easy hookups, including a diode in same fashion as with my cherry switch additions.

Drilling the case was super easy, using a step drill again. I didn't take measurements for the placement, but I started drilling the case from the inside, trying to place the keys as close to the thumbclusters as possible but without bumping into the PCBs. I mapped these keys as Escape and Windows (Super in linux), and they are meant to be hit with the thumbs.
Note: Those ugly black things I stuck inside the keyboard are sound dampening material scraps.

I will be adding 4 arcade buttons to all my future Kinesis Advantage keyboards. Here are some photos of my older Classic I did this mod recently on. You can see how the Sanwa OBSF-24 switches are quite a bit longer and need more clearance inside the case compared to the Seimitsu PS-15. There is enough clearance where I placed the Sanwa, but for palm keys I think only the Seimitsu PS-15 (or the GameFinger HBFS-30 will fit.

 Below are my two Advantage LF keyboards for comparison:

Part 7: Kinesis Advantage2

I received my Advantage2 LF when it first came out, and it has some awesome features such as on-board v-drive mountable on your computer, that allows firmware upgrades and holds key remaps in simple, editable text files. You can remap keys the traditional way as well on this keyboard.
Of course I gave it the palm key treatment. Most of the description covered in the earlier parts of the wiki still hold. The Advantage2 has different PCBs but they have similar spots to hook up keys to. The main PCB has 4 such spots, and by default they are mapped as F21/F22/F23/F24 function keys, which means you can remap them using [F##] tokens in the v-drive qwerty.txt or dvorak.txt map files. I soldered 1N4148 diodes and wires (harvested from an old IDE hard drive cable) as follows:

Each of the thumbcluster PCBs has a usable spot too, below photo has the details. The picture also includes the v-drive tokens for the footswitch connectors. A total of 9 extra keys can be added to this keyboard, all individually remappable!
Unfortunately the spot on the right thumbcluster does not have a v-drive token, but you can remap it on the keyboard itself (with Progm+F12), however if the keyboard loses power you have to remap it again. The other 8 spots on the keyboard don't have this problem since they all have a dedicated v-drive token and their mappings get saved in the v-drive relevant .txt file.

Final results below. I am using the palm keys as left/right shifts, the left small button as End (my normal end is mapped to Escape), and the right small arcade button as left Windows key [kp-lwin] (by default accessible via the F1 key in the keypad layer) which I end up using as Compose (Multi_Key) on Linux. 4 extra buttons are enough for the time being; as you can see I have wires ready for 2 more, but I doubt I will use them any time soon.
If this article inspires you to do any of these mods, please post your photos in the thread!

Input Nirvana:

#1) That work looks familiar :)
#2) You are an animal! A Dremel???? Holy Crap! I did all my work with a drill bit for the initial hole, and hand filed the rest. You are a brute!
#3) The pcb damage is about 95% unavoidable. All my boards have it overlapping where the switch needs to be. Unlikely to not need to cut into it, but it could happen. Rotating the switch is a non-issue.
#4) You need 2 custom keys from lagging, get on it!  "BAD" and "ASS". The key type info is in my mod article I think....

Neat stuff, let us know what you think of it in practice in a few days.


--- Quote from: input nirvana;499267 ---#2) You are an animal! A Dremel???? Holy Crap! I did all my work with a drill bit for the initial hole, and hand filed the rest. You are a brute!
#3) The pcb damage is about 95% unavoidable. All my boards have it overlapping where the switch needs to be. Unlikely to not need to cut into it, but it could happen.
--- End quote ---

Argh, I wish you had told me this. I went by your encouraging "drill baby, drill" and bam, cut that trace. I was more careful on the other side of the board.

Seriously, a dremel is perfect for this job. I used 2 bits, one was a dremel 9902 carbide-tungsten bit for the cutting, and the other a 953 grinding bit for smoothing the edges out. What kind of glue did you use?

Input Nirvana:
I used high-temp hot glue. I really can't see a reason to use anything else. You need the ability to be able to remove a faulty switch. Hot glue is perfect since the switch is plate-mounted anyhow.

You have big brass ones. No way I would use a high rpm tool on the Kinesis. I'll stick with making the slow, initial drill hole and then hand file. I'm a nit-pik and the mod needs to look like it was manufactured original.

The wires worked well in the Molex, right? What gauge did you use?

Not sure of the gauge, I used thin wires from a standard phone cable piece, but tinned the ends with solder and made them thick enough for a snug fit.


[0] Message Index

[#] Next page

Go to full version