Alastair’s Place

Software development, Cocoa, Objective-C, life. Stuff like that.

Keyboard Confusion

Jonathon Rentzsch’s latest post about how his PowerBook/MacBook Pro’s keyboards don’t register some keypresses if both shift keys are held down was quite interesting, as was Dave Dribin’s Keyboard Matrix Help article that he linked to.

The phenomenon he’s noticed is quite normal and is due to compromises that are inevitably made when designing the layout for the keyboard’s PCBs and/or membranes. Even expensive keyswitch-based models like the Matias’ TactilePro on which I’m writing this article have their problems; mine, for instance, occasionally turns Caps-Lock on by itself when I type a sequence of keys. And if I hold down both Shift keys and try to type

QWERTYUIOP ASDFGHJKL ZXCVBNM

I get something like

WERYUIOP ASFGHKL "XCVBNM

Dave is right that you could theoretically fix most of these kinds of issues by adding diodes, though I think it’s a little unfair to suggest that their existence is entirely down to manufacturers “skimping” on a few diodes. For one thing, most modern keyboards are membrane-based, consisting of an insulating membrane with holes where they keys are, sandwiched between two membranes with conductive tracks printed on their respective surfaces. It’s quite hard to attach diodes to a rubbery membrane of that type (I don’t think it’s entirely impossible, since I’m pretty sure that there are companies out there offering the ability to attach surface mounted components to membrane circuits, but I don’t suppose it’s cheap). Two other issues that manufacturers have to consider are assembly costs (remember—you don’t have to place components on the matrix at all if there aren’t any, which saves an entire assembly step) and the physical geometry of the innards of the keyboard… obviously you can’t put diodes in spaces that are too small for them.

Also, the keyboard matrix designs in modern keyboards are usually pretty good