I did this project because I’ve seen many forum posts from people asking how to use the keyboard from their old broken laptop. Unfortunately the answers given are “it can’t be done,” “it’s too hard,” or “rip apart another USB keyboard and steal the controller circuit.” I believe I have a better answer by using a “nearly universal” keyboard controller based on a Teensy LC or 3.2 mounted on an FPC connector board. This board accepts keyboard cables with up to 34 pins on a 1 mm or 0.8 mm pitch. The board shown below won’t work on every keyboard but it will work on most.
The same circuit board is populated with either a Teensy LC or 3.2
The Teensy is initially loaded with an automated continuity test routine which uses USB to send the pin numbers that are connected when a key is pressed. This is a much better method to decode the key matrix than using an ohm meter. A table like the one shown below can be made from the continuity test results.
HP DV9000 Keyboard Matrix Table
With the key matrix mapped out, the Teensy can be reprogrammed with a USB keyboard controller routine. The TMK software will give you all the features you could ever want but it is pretty complicated to set up. As an alternative, I wrote a simple Arduino routine using the Teensyduino “Micro-Manager” functions. This code has been tested on a dozen different laptop keyboards.
Some FPC cables needed to be modified to fit in a generic connector. The Dell D630 cable had a solder-less connector on the end of the FPC cable that was easily removed. Then I pulled off the extra thick plastic backing that was glued on the end of the cable and cut a notch on the side to align the contacts. To bring the thickness back to normal, I glued 2 pieces of paper to the end of the cable (see below).
Most of the keyboards I tested had a standard FPC cable but the Lenovo ThinkPad T61 keyboard had a 44 pin connector soldered on the end of the cable. I like the feel of this keyboard so I designed two different circuit boards to control it.
The Teensy LC needs level translators but the 3.2 is 5 volt tolerant
My Teensy 3.2 circuit board scans the keyboard plus the dedicated Fn key, drives the Caps, Num, and Scroll Lock LED status signals, and controls the Trackpoint with Clock, Data, and Reset signals. My Teensy LC circuit board uses a TLV810 reset generator and BSS138 level translators to control the Trackpoint. The Fn switch was wired into the matrix so it can be scanned without using any extra I/O pins. Only the Caps-Lock LED status signal is supported on this board.
All files for the “nearly universal” USB controller and the T61 controller are located at my GitHub repository.
My “Instructable” gives a step by step description to assemble the boards and decode the keyboard matrix.
I hope you find these projects useful.