

Keyboard
Keyboard from thinkpad laptop
- Size
- 82.7 × 95.8 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 11
- Nets
- 90
- Pads
- 180
- Tracks, vias
- 332, 0
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 31 Jul 2019
- Updated
- 4 Apr 2023
Overview
Keyboard is an open-source printed circuit board by lowj, from the lowj/tp-keyboard repository on GitHub. It is a 2-layer board of 82.7 × 95.8 mm with 11 parts on 90 nets, routed with 332 tracks and 0 vias.
Its parts include 10 connectors and 1 IC. It belongs with the keyboards and input boards and the AVR (ATmega, ATtiny) boards of this library.
README
README.mdtp-keyboard

The goal of this project is to make a useable desktop keyboard from the keyboard of the ThinkPad L420. It uses a custom PCB to connect to the FFC cables of the keyboard matrix and trackpoint module to a Teensy++ board.
The Teensy++ runs QMK firmware to scan the keyboard matrix and read the signals from the trackpoint module. QMK has a PS/2 library which is used to make the trackpoint module functional.
More Pictures

Trackpoint
The trackpoint module has an 8 pin FFC cable.
The modules clock pin needs to connect to PD2 and data pin needs to connect to PD5 of the teensy

Keyboard Matrix
The keyboard has a 30 pin FFC cable connected to it. These are the rows and column pins for the matrix

Housing
The housing is comprised of laser cut wood/acrylic sheets (1.5mm and 3mm) and M2 screws.
This is the stackup I used. However thicknesses can be varied to make the keyboard lower or higher profile.
[ shield_2.dxf (1.5mm) ]
[ shield_1.dxf (1.5mm) ]
[ shield_1.dxf (3.0mm) ]
[ layer4.dxf (1.5mm) ]
[ layer3 cover ffc.dxf (3.0mm) ]
[ layer2.dxf (3.0mm) ]
[ layer2_nousb.dxf (1.5mm) ]
[ layer1.dxf (1.5mm) ]Some notes about the housing:
layer2_nousb.dxfhas no usb cutout while laye2.dxf has a cut out for usb. These allow for adjusting when the usb cut-out starts.- layer2 has to have enough space for the PCB, so it cannot be too thin, in my case 1.5mm + 3.0mm was enough clearance
layer3 cover ffc.dxf'sthickness should try to match the height of the edge of the keyboard matrix module. This is because the keyboard module lays ontop of layer2 and layer3 cover ffc goes along the edges of the keyboard module. layer4 goes ontop and helps secure/hold down the keyboard module. If the layer3 section is too thick, then the edges of the keyboard module wont be secured leading to more wobble. If the layer3 section is too thin, the keyboard will be held down, but layer4 would not be able to sit flush. If layer 3 is the right height then there would be some pressure holding the keyboard down and layer4 would sit flush.layer4.dxfis better if it is thinner (1.5mm) so fingers dont hit it when using keys on the edgeslayer1.dxf[WIP] there is a hole in the middle to secure the keyboard down, it goes into the screwhole in the back of the keyboard module, this helps with wobble when using the trackpoint
Other than these notes, the thicknesses of each layer can be adjusted.
Parts
- Keyboard from L420 or similar: SL410 L410 L412 L420 L421 L510 L512 L520 SL410 SL410K SL510 SL510K I think these also work.
- Trackpoint from r61 keyboard module or similar
- Acrylic sheets or wood for housing, I used 3mm (1/8inch) and 1.5mm (1/16in) thick sheets
- Teensy++ (https://www.pjrc.com/store/teensypp.html)
- PCB
- Trackpoint connector (https://www.digikey.com/short/2vzz139r) (Part #: 84981-8)
- Keyboard FFC connector (https://www.digikey.com/short/30qq3210) (Part #: FFC3B07-30-T)
- 4.7K(2) and 100K Resistor (1206)
- 2.2uF Cap (1206)
- M2 Screw kit. (With sizes like 4mm /6mm /8mm /10mm /12mm /16mm /20mm) can be found on Amazon
Breakout board
This is the dev board I created and used to decode the matrix of the keyboard.

Helpful resources:
- https://qmk.fm/ (qmk firmware)
- https://www.pjrc.com/store/teensypp.html (teensy++ 2.0)
- http://pcbheaven.com/wikipages/How_Key_Matrices_Works/ (Keyboard matrix info)
- https://deskthority.net/wiki/TrackPoint_Hardware (Trackpoint module pinouts)
- https://www.instructables.com/id/How-to-Make-a-USB-Laptop-Keyboard-Controller/ (How to decode a keyboard matrix)
- https://docs.qmk.fm/#/feature_ps2_mouse?id=the-cirtuitry-between-trackpoint-and-controller (Trackpoint wiring)
- https://beta.docs.qmk.fm/for-makers-and-modders/hand_wire (How to creat firmware with QMK)
- https://deskthority.net/wiki/MX13_SpaceSaver_Keyboard (Example of kb with teensy++ and trackpoint)
Parts
11| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | Conn_01x04_Male | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J6, J9 |
| 2 | Conn_01x20_Male | Connector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_Vertical | J3, J4 |
| 1 | Conn_01x01_Male | Connector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_Vertical | J10 |
| 1 | Conn_01x03_Female | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J5 |
| 1 | Conn_01x08_Female | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | J8 |
| 1 | Conn_01x08_Male | Connector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_Vertical | J2 |
| 1 | Conn_01x30_Female | custom:Con_FFC_30_2.0mm | J1 |
| 1 | Conn_01x30_Male | custom:Heade2.54m_30pin_working | J7 |
| 1 | Teensy++2.0 | teensy:Teensy2.0++ | U1 |
More from lowj/tp-keyboard
1- 2 layers90.5 × 97.3 mm

Similar boards
- 2 layers60 × 30 mm

Controller
google/mozc-devices
Circuit diagrams and firmware source code for Gboard DIY keyboards
11 parts3kApache-2.0 - 2 layers103 × 30.5 mm

- 2 layers26 × 30 mm

Expansion Card
FrameworkComputer/ExpansionCards
Reference designs and documentation to create Expansion Cards for the Framework Laptop
11 parts1.1kCC-BY-4.0 - 2 layers53.9 × 23.2 mm

Buffer
hoglet67/RGBtoHDMI
Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI
11 parts1kGPL-3.0 - 2 layers10 × 20 mm

2 connector Sensor Board
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
11 parts915 - 2 layers

- 2 layers47 × 33 mm

Sevensegment led display module
tardate/LittleArduinoProjects
a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!
11 parts803MIT - 2 layers42.5 × 36.8 mm

Devboard
basilfx/TRADFRI-Hacking
Hacking IKEA TRÅDFRI products, such as light bulbs, window blinds and other accessories.
11 parts743CC-BY-4.0
Questions
How big is the Keyboard PCB?
It measures 82.7 × 95.8 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Keyboard use?
11 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Keyboard KiCad files?
From the lowj/tp-keyboard repository on GitHub, at the commit this page was made from: the board is pcbs/breakout_board/keyboard/keyboard.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Keyboard design in my own project?
Its repository states no licence, so its author keeps all rights: ask lowj before reusing the design.