buttonhack-promo2

Button-Hacking the Lenovo Yoga

I just took a power drill to my shiny new laptop.  Using spare parts from an old iPhone, I added new buttons to the touchpad and redesigned its ergonomics.  Even as a tech CTO who spends 10+ hours a day hacking code, this is not a normal activity.  Read on for the drilling/gluing/panicking/celebrating that ensued.

Introduction

Ultrabooks are marvelous, but their Apple-style ‘clickpads’ are an abomination to human-computer interaction.  The Lenovo Yoga 11s is nearly perfect: compact size, great battery life, and this whole 360 degree hinge thing is sheer brilliance.  Unfortunately, it’s got one glaring flaw: no mouse buttons.  You have to press down on the touchpad to make it click.  Ew.

30989_large_lenovo11

To be fair, I wasn’t expecting mouse buttons because modern laptops simply don’t come with them anymore.  Many years ago, Apple started removing physical touchpad buttons to make their devices look sleeker.  Then all the other manufacturers got just as superficial and now we have a bunch of pretty laptops that are virtually unusable.  Thanks, Apple.

I started planning the placement and general mechanics of the buttons.  Spare buttons lying around were just a little too thick.  Saw a little aluminum button thing from an old iPhone and fell in love with it.  How ironic.

positioning buttons-too-big-overhead buttons-too-big iphone-buttons

buttons-ipad-test-size

Connecting the wires

But how do I actually get the buttons to do anything?  My first thought was to build a tiny USB-driven keyboard and install it under the hood somewhere, tapping USB pins on the motherboard as needed.  The next, more realistic idea was to tap into the keyboard lines and create new keypresses.  Not easy either.  And then it hit me: volume controls.

This laptop already has buttons, they’re just in the wrong place.  But I can run wires from the volume controls on the side to the touchpad area in the center.  So I cracked open the case, disassembled the whole laptop down to the motherboard, and started planning it out.  I also decided to stick in an 8GB stick of RAM and swap the SSD for a better Samsung 840 EVO.

wires-sticking-up-thinner

I ordered miscellaneous surface mount tactile switches from eBay and found some that were small enough to fit inside the case.  There was a piece of silicon wafer housing two microphones that was already running under the touchpad.  I mixed up some epoxy and fastened the microswitches to that tiny piece, then fitted it back inside the case.  Out came the powerdrill and two terrifying minutes later, the switches were aligned.  Not bad for just eyeballing it!

epoxy-mixing epoxy-toothpick button-bar-soldering-wires buttons-fitted-rear

buttons-installed

Placing the buttons

After the fitment, I quickly discovered that the iPhone buttons were not thick enough to fill the drilled holes.  The best solution was to double them up.  I cut apart the second iPhone piece, trimmed down the tiny little circles, and chemical welded them on top of the original buttons.  The end result… thicker buttons.  Now they actually stuck out a little too far and were uneven.

buttons-rough-positioning buttons-wires-closeup button-extensions buttons-extended

With coarse grit sandpaper, I sanded the surface until the buttons were evened out.  Then I sanded to remove material and get the thickness right.  And then I sanded to round out the edges and make the buttons more comfortable.  Soft and smooth, like a baby’s bottom.

buttons-installed-now buttons-rounded

Remapping the volume keys

With the hardware done and reassembled, and the new buttons installed, the next challenge was making them actually function.  I found a great little program called AutoHotKey and immediately bashed my head against the wall with its horrible documentation.  I’ll spare you the agony by sharing the code:

$Volume_Up::
Send {click down}
KeyWait Volume_Up
Send {click up}
return

$Volume_Down::
Send {click down right}
KeyWait Volume_Down
Send {click up right}
return

I also decided that the volume keys should function normally when the laptop is in tent or tablet mode.  Thus, the AutoHotKey script needed modifications for conditional mappings based on screen orientation.  That was tricky.  Email me for a copy of the whole script.

final-the-end-small

Conclusion

Despite my nonchalance, this was a difficult and stressful project.  Have you ever tried soldering surface mount components?!  When I first reassembled the laptop, it wouldn’t turn on and the battery had to be disconnected from the motherboard for a hard reset.  Then, the Lenovo mouse driver was having issues and needed to be replaced with an unsigned driver from Synaptics.

However, the end result was well worth the effort.  This Lenovo Yoga 11s is now a pinnacle of productivity and ergonomics, and all it took was a little disruption to the “buttonless movement”.  Do you know anyone doing similar laptop mods?  Email me or comment below.