ThinkPads built their reputation on a few simple truths: they’re fixable, they last, and the keyboards are best-in-class. The last X-series to ship with the iconic 7-row layout was the X220. With the X230, Lenovo switched to a chiclet layout. It’s fine, but if you spend your day in terminals, editors, and shortcuts, the 7-row board feels like home. That’s why a whole micro-ecosystem exists around retrofitting an X220 keyboard into an X230.
The catch: the X230’s embedded controller (EC) expects the chiclet matrix. Dropping in a 7-row board works electrically, but a few keys report the “wrong” scancodes. Historically, the clean fix is an EC firmware patch.
The X220 and X230 keyboards use slightly different pinouts. On the X230, pins #25
, #27
, and #29
are separated, while on the X220 they are internally tied together. Plugging an X220 keyboard directly into an X230 without modification can create a short circuit, potentially leading to overheating or permanent keyboard damage.
The standard workaround is simple: apply a small strip of electrical tape over pins #25
, #27
, and #29
on the X220 keyboard’s ribbon cable before installation. This prevents the unwanted connection while leaving all other pins untouched.
Some users have reported years of trouble-free use without performing this mod, but documented cases show burn marks appearing on the keyboard’s ribbon cable when the pins were left unisolated. A thin piece of electrical tape provides a safe margin, and ensures long-term stability of the retrofit.
Hamish Coleman’s thinkpad-ec
project provides a way to patch the EC firmware so the X220 keyboard maps perfectly on an X230. The usual flow:
.FL1
/.FL2
).thinkpad-ec
to build a patched image.phlash16
).On my machines, I prioritized firmware hardening: I flashed Coreboot (Skulls) first to disable Intel ME and modernize the boot path. That worked great for security, but it complicated the EC flash. Lenovo’s DOS/Windows tools expect the stock Lenovo BIOS runtime. Once Coreboot is installed, those vendor flash tools don’t always run properly. You can still program the EC externally, but that means cracking the case again and using an SPI programmer on the right chip. It’s doable, just heavier weight.
Given that I already had a solid Coreboot setup and backups, I had two choices:
I chose the second path for now. It’s reversible, keeps the system secure, and avoids an extra round of hardware flashing.
The physical retrofit is straightforward and well documented:
At this point the machine boots and the keyboard works. A few Fn combos and the Menu/PrtSc/Insert cluster won’t be perfect without the EC patch, which brings us to software remapping.
The goal was simple: preserve the Coreboot environment, keep the X230 EC untouched, and still make the 7-row layout productive. On Linux this is easy to live with. I captured the actual key events and bound them to the expected actions at the window-manager layer.
In X11, use xev
to see what each key sends. If you’re on a tiling WM like i3 and want no desktop environment, that’s fine:
Press a suspect key (e.g., brightness or the old “Menu” key) and note the keysym or keycode reported by xev
.
In i3, I added bindings directly in ~/.config/i3/config
so I don’t need a separate hotkey daemon:
If a key doesn’t report an XF86*
symbol (for example, it shows up as F23
), you can bind that directly:
This gives me working brightness, audio, mic-mute, and screenshots without touching the EC. For terminal and editor work, the remaining differences (Insert/Menu/PrtSc) aren’t show-stoppers.
thinkpad-ec
, then re-flash Coreboot. I already have verified SPI/EC backups.The “ideal” firmware-first order for a pristine retrofit is:
thinkpad-ec
(extract .FL1/.FL2
from Lenovo package, run the project’s Makefile).phlash16
/ updtflsh
) per the repo guidance.That leaves you with a firmware-level perfect 7-row map that survives OS reinstalls.
Swapping the hardware was straightforward. Because I had already moved to Coreboot, I chose to solve the remaining keymap quirks in software. The result is a clean, fast X230 with a classic typing experience, a secure firmware stack, and the flexibility to switch back to the chiclet keyboard without another firmware dance. For my workflow — terminals, Vim, browsing, scripting — this strikes the right balance between pragmatism and purity.