“It’s like a woodpecker!”

Several years ago, after reading a thoroughly entertaining piece on old IBM buckling-spring keyboards (seriously, go read it!), I set off to the local thrift store, and was lucky enough to score an IBM Model M2.  It’s smaller and lighter than the Model M, but has the same wonderfully tactile and noisy buckling springs under the keys.

I loved that keyboard, right up until it stopped working.  I considered creating an all-new PS/2 controller for it, but then in my many hours of unoccupied time at my old job I found that someone had done something similar on a Model M, but with a USB interface.  Thank you, Chris, for the excellent work!

So after reverse-engineering the keyboard matrix, I modified the keymap file, designed my own board (schematiclayout), compiled it, soldered the whole thing together, and….it worked.  Well, it wasn’t *quite* that simple–I had a few errors in my keymap, I realized belatedly that the keyboard is too slim for a regular USB-B connector, an errant shield wire in the USB cable shorted one of the data lines (no damage, thank goodness), a too-long leg on one of the components made for a poor connection with one of the membranes, I dropped the keyboard a couple times while inserting all the buckling springs, I *lost* a couple springs and had to order new ones, etc.  But with those wrinkles ironed out, the keyboard finally worked.  And works.  Source code.

My new controller board, next to its predecessor:

A close-up of my board:

The matrix:

The pile of buckling springs and key caps.  Yes, you have to remove all 101 of each. And then very delicately replace all the buckling springs when reassembling the board.  If you’re going to do this, take all the keycaps off before doing anything else.  It’ll make it much easier to undo all the plastic clips that hold the board together.

And lastly, the whole thing back together, hooked up to my modern-day Thinkpad:

The title quote comes from one of my bosses when I asked him if he wanted one, too.

Leave a Reply

You must be logged in to post a comment.