Skip to the content
2 layers82.7 × 95.8 mmKeyboard, the printed circuit board in 3D

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.md

tp-keyboard

alt text


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

alt text alt text alt text


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

alt text


Keyboard Matrix

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

alt text


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.

text
[      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.dxf has 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's thickness 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.dxf is better if it is thinner (1.5mm) so fingers dont hit it when using keys on the edges
  • layer1.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

alt text This is the dev board I created and used to decode the matrix of the keyboard.

alt text

Helpful resources:

Parts

11
QtyValueFootprintReferences
2Conn_01x04_MaleConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ6, J9
2Conn_01x20_MaleConnector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_VerticalJ3, J4
1Conn_01x01_MaleConnector_PinHeader_2.54mm:PinHeader_1x01_P2.54mm_VerticalJ10
1Conn_01x03_FemaleConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ5
1Conn_01x08_FemaleConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ8
1Conn_01x08_MaleConnector_PinHeader_2.54mm:PinHeader_1x08_P2.54mm_VerticalJ2
1Conn_01x30_Femalecustom:Con_FFC_30_2.0mmJ1
1Conn_01x30_Malecustom:Heade2.54m_30pin_workingJ7
1Teensy++2.0teensy:Teensy2.0++U1

More from lowj/tp-keyboard

1
  • 2 layers90.5 × 97.3 mmTp pcb, the printed circuit board in 3D

    Tp pcb

    lowj/tp-keyboard

    Keyboard from thinkpad laptop

    17 parts52

Similar boards

  • 2 layers60 × 30 mmController, the printed circuit board in 3D

    Controller

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    11 parts3kApache-2.0
  • 2 layers103 × 30.5 mmTS Front Endcap, the printed circuit board in 3D

    TS Front Endcap

    EEVengers/ThunderScope

    ThunderScope GitHub Repo

    11 parts1.3kMIT
  • 2 layers26 × 30 mmExpansion Card, the printed circuit board in 3D

    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 mmBuffer, the printed circuit board in 3D

    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 mm2 connector Sensor Board, the printed circuit board in 3D

    2 connector Sensor Board

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    11 parts915
  • 2 layersFet module, the printed circuit board in 3D

    Fet module

    ByteWelder/Decktility

    A handheld PC

    11 parts855CC-BY-SA-4.0
  • 2 layers47 × 33 mmSevensegment led display module, the printed circuit board in 3D

    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 mmDevboard, the printed circuit board in 3D

    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.