Annotated references

Sources this project relies on, with a note on how much of each applies to the X240 specifically. “Era analogue” means a closely related ThinkPad that informs the design but whose numbers must not be copied into our pinout files.

Community projects

Source What it gives us X240-specific?
delingren/thinkpad_keyboards Reverse-engineering of the 04Y0819 (X1 Carbon Gen 1 era): 32-pin matrix FPC, 17 × 9 matrix, 20-pin TrackPoint/backlight FPC, QMK with the RP2040 PIO PS/2 driver, backlight current measurement, the TrackPoint reset-pulse finding, and the MCU pin-count comparison that rejected the Pico. Era analogue — the pin-budget lesson transfers; the pinout does not.
hamishcoleman/thinkpad-usbkb KiCad design of a ThinkPad-keyboard USB adapter on an EFM32; keyboard-thinkpad.pinout.txt has an 8 × 8 matrix map for an older (X220-era) connector. Era analogue — different connector and matrix.
thedalles77/USB_Laptop_Keyboard_Controller (Frank Adams) The general method: Teensy/RP2040 matrix decoding, matrixgenerator.py, Eagle scanner boards, and worked examples for the T61, P15/P17 and older ThinkPads. Also the RP2350 Stamp XL version with 40 GPIO. Method only.
Frank Adams — touchpad/TrackPoint conversion PS/2 touchpad and TrackPoint bring-up on Teensy/Pico, including level-shifting notes. Method only.
Instructables — reverse-engineer any keyboard matrix with a Pico The probing technique our matrix_probe.py implements. Method only.
sharktastica — TrackPoint wiki Module generations; confirms the two-piece T440/X240-family module with four connections. Yes, module family.
ThinkPads forum — X240 trackpoint/trackpad Field reports on X240 ClickPad/TrackPoint behaviour. Yes.
iFixit — X240 keyboard replacement Photos of the connectors and disassembly order. Yes.

Manufacturer documentation

Source Used for
Raspberry Pi Pico datasheet Pinout, test points TP1 = GND, TP2 = D−, TP3 = D+, power
RP2040 datasheet UART/SPI pin muxing, PIO
Nexperia 74HC165 datasheet Timing, supply range, pin functions
Nexperia 2N7002 · onsemi BS170 Backlight switch
Hirose FH12 catalogue Rev B FPC connectors
Synaptics TouchPad Interfacing Guide (PN 511-000275; no longer hosted publicly — the working reference is the Linux driver drivers/input/mouse/synaptics.c) Absolute mode, packet format, pass-through
Lenovo ThinkPad X240 Hardware Maintenance Manual FRU numbers, disassembly, screw positions
Adafruit 1436 product page To show it is a solder-pad plate, not a ZIF breakout

QMK

Page Used for
RP2040 platform Bootloader, pin naming, PIO notes
PS/2 mouse Driver table — usart is ATmega32u4-only; vendor = RP2040 PIO; clock = data + 1
Pointing device pointing_device_task_kb, report merging
Backlight Driver table
Issue #24470 RP2040 pwm backlight does not compile; software works
Custom matrix CUSTOM_MATRIX = lite API
Bootmagic Top-left-key bootloader entry
Hardware keyboard guidelines VID/PID, layout metadata

Linux kernel

drivers/input/mouse/synaptics.c and psmouse-base.c — the working reference for the identify sequence, mode byte, packet resync and pass-through handling. The ArchWiki Touchpad Synaptics page documents the serio: Synaptics pass-through port behaviour seen on X240-class machines.

Suppliers referenced

DigiKey, Mouser, LCSC, Jameco, Tinkersphere, Adafruit, Pimoroni, BuyDisplay, Crystalfontz, JLCPCB, PCBWay, SendCutSend, Ponoko, Hammond Manufacturing, eBay, iFixit. Links are on the component reference and BOM pages.


Back to top

GPL-2.0. Design status: not yet built — pinout and TrackPoint route are confirmed by probing (milestone M2).

This site uses Just the Docs, a documentation theme for Jekyll.