Thinkpad keyboard mod (super early stages)!

Thanks C_Scott_Ananian for the links. I’m starting to do some work with the T410 keyboard (initially starting off with just making a USB keyboard/Trackpoint controller running Vial-QMK on an RP2040, and later designing the custom CNC lower chassis for the Framework 13 that would be required to fit the T410 keyboard).

I’m leaning towards using the T410 keyboard (well, the T400s/T410/T410s/T420/T420s/T510/T520/W510/W520/X220/X220T keyboard) as it’s 7-row and non-chiclet, but not as hard to obtain as the T25 keyboard. If I’m going to go through all this trouble I might as well go for the best Thinkpad keyboard ever made. The main downside is no backlight, and it being relatively thick.

I can verify that that while not the official connector (JAE AA01B-S040VA1-R3000, which is out of production and difficult to source), Molex SlimStack 0543630489 does seem to fit my particular T410 keyboard, and it appears it can be used as a substitute. Unfortunately JLCPCB doesn’t have it, but I can hand solder it. The later keyboards (T440 and later) appear to use a FFC/FPC connector which should be a lot easier to source.

For CNC services I would consider emailing a formal machine shop like SuNPe or Lucent Mfg. My friend had pretty bad experiences with CNC services from PCBway. I’m nowhere near there yet though, as designing a chassis is going to be a lot of work and a ways away.

2 Likes

Actually, for the Thinkpad T410/etc. keyboard the RP2040 is cutting it very close for GPIO (24 matrix pins, 1 pin for the Fn button, 3 for Trackpoint, and 1 for the Caps Lock LED, for 29/30 GPIO pins). The power button and power light can presumably be done directly to the Framework motherboard, and I can’t light up the volume or mic LEDs easily through QMK.

I’m also considering doing the STM32F072 instead (which offers 37 GPIO pins on the 48-pin variant), as I’ve designed keyboards with that one before, though the Trackpoint support on the STM32F072 might not be as good in QMK (the RP2040 has a PIO driver available in QMK)

1 Like

This just anecdotal, but I’ve had no problems with jlcpcb CNC services: they’ve done a number of projects of mine. If I remember correctly, pcbway did This Smart Watch Keeps An Eye On Ambient CO2 Levels | Hackaday for me, and I did have an issue with a “floating” quote (ie, the actual price doubled once a real machinist saw my files), but jlcpcb’s quotes have been solid. I’ve also had good experiences with oshcut.com for sheet metal cutting/bending.

I have thought about pin count on the rp2040 (29 gpios) versus the size of the keyboard connector I’m looking at (45 pins). That’s the reason I went with headers on my dev board, so I can jumper things around to access every pin for reverse engineering even if I can’t drive them all at once. For the “real thing” I expect I’ll probably need more gpios, and in the qmk community that seems to be most often done in a “split” setup with two rp2040s. That seems reasonable, rp2040s are pretty cheap. Part of the reason I laid out my own dev board is to get some experience fabbing an rp2040 board from scratch – the better to clone that into two for the “real thing”.

The other things worrying me are some 2mm brass “mounting” studs on the bottom of the X1 Carbon keyboard that I’m going to have to get rid of somehow, and the fact that the button assembly overlaps with the lower input module mounting rail in the framework 16, and I’m having a hard time visualizing whether the overlap is going to be problematic. A STEP file of the input module area of the framework 16 laptop would help a lot in terms of test fitting components.

I had an x220 and fondly remember that keyboard. In fact, it’s probably sitting in a closet somewhere. If we’re resigned to hinge mods for thickness, then maybe I should take another look at using one of the thicker ThinkPad Keyboards. Wouldn’t hurt to dig out my x220 and take a look. Subjectively, the trackpoint quality on newer lenovos seems to have declined, and my t460p has never felt quite “right”. In fact, a replacement keyboard i ordered enumerated the trackpoint as “Generic PS/2 Mouse” (instead of “TPPS/2 Trackpoint”) and I had to do some surgery to transplant the trackpoint from my older keyboard to make it behave. It would be orthogonally interesting to me to resurrect some of those older keyboards over USB just to be able to do a head to head trackpoint comparison.)

2 Likes

Guess I’m joining the dev board party.

10 Likes

Oh wow, I’m definitely going to be following this thread! I’ve got a FW16 coming (batch 12), so it’ll be a bit before I can even contemplate this, but very, VERY cool. And very happy to alpha/beta test things on the FW16, although I think it might be more challenging since it those pogo pin connector things.

2 Likes

I admire the effort put into this project, but from following various keyboard customisation efforts which have all failed due to the depth constraint have concluded that input customisation is not something that Framework design really lends itself to. I cannot help but think the forthcoming MNT Reform Next would be a better candidate for such projects. Whilst less bulky than the traditional design, the depth of the keyboard is sufficient for mechanical switches.

It is not shown with a pointing stick but is still in the prototyping stages, so there is a possibility such a feature might be added at this stage if enough people demand it.

The Reform products are already discussed on the forum here and here.

2 Likes

Thanks David, MNT Reform Next looks great!

2 Likes

Yeah, the MNT Reforms are pretty awesome, although for myself I’m willing to make a few compromises for a more streamlined package like Framework offers, rather than something quite so chunky. Although they do have the better part of the 90s sturdy laptop look, rather than the 00s cheap crap consumer look.

2 Likes

Upthread I worked out some of the details needed to shim the hinge to allow more height and I think it’s reasonable. Agreed that the depth constraints are very challenging but I think there’s a reasonable way around that.

2 Likes

Board arrived and RP2040 works (after a little bit of resoldering the USB-C connector, which wasn’t assembled quite flush). I’ve got the basic matrix mapped out with the help of a little circuit python script running on the rp2040. The next step is to figure out the LEDs and the trackpoint.

9 Likes

Making decent progress on the pinout:

For some reason I can’t figure out how the FnLn, Mute, MicMute, and CapsLock LEDs are driven. The diode checker on my multimeter doesn’t show any obvious suspects, and driving the unassigned pins high or low doesn’t do anything. :frowning:

3 Likes

If you can find the schematic for the laptop it goes into things like this get a lot easier

Edit: I did find a jaguar 2 schematic floathing around on the internet but the keyboard connector on that thing is like 45 pins not just 20 so not sure I got that right.

1 Like

So referencing back this, I’d REALLY appreciate it if you’d also evaluate if a standard pop-rivet size can be used as well. Some of us have the tool, not that it’s very expensive, and could use those as well. Or possibly make the interior threaded, and use some wide headed small screws? Ideally with some threadlocker of course.

This was good advice and I did find the schematic online after some digging. It turns out they are active low, but there’s a necessary 3.3V power connection I hadn’t previously identified. Anyway, I understand the purpose of all the pins now, it’s just a matter of building an appropriate QMK against my prototype – and then probably doing a rev 2 of my board with everything neat and tidy (and an MCP23017 I/O expander to handle the 16 DRV lines). Maybe I’ll try to include the appropriate pogo pin connector for the Framework 16 Input Module, although without better docs on the exact mechanical specs, I can’t pretend that it would drop in and Just Work. As mentioned above, with the built-in mouse buttons, the X1 Carbon Gen 10 keyboard exceeds the height of the keyboard module by 21mm, so this would be a “double height” replacement that would replace the touchpad module as well – and the touchpad module specs haven’t been published yet. But with a pogo pin connector maybe I’ll qualify for the Input Module developer program. :slight_smile:

(What would actually be most helpful is a STEP file of the entire chassis top, minus the modules. I don’t need assemblies or details, just the location of any protrusions, etc, so I can slot in my own design in CAD and check for intersections, or print out a mock up and test fit things.)

5 Likes

This entire thread excites me, I’ll be keeping an eye on it

1 Like

I have very long ago outsourced storing my knowledge to the Internet :slight_smile: so I put trackpoint protocol “chx_” into Kagi and yeah I did post the protocol a few years ago: it’s PS/2.

https://reddit.com/r/thinkpad/comments/p4i52h/til_to_this_day_trackpoint_is_a_ps2_mouse/ links to IBM TPPS/2 TrackPoint which has a short list of ThinkPads using ps/2:ibm-000a-tpps-2-trackpoint.

1 Like

It’s a PS/2 mouse with some IBM extensions, apparently. The ones which report TPPS/2 TrackPoint anecdotally behave much better than 3rd party replacement keyboards which sometimes have trackpoints which report as just “Generic PS/2 Mouse”. I haven’t dug into the details to figure out why that is.

1 Like

Looking at https://github.com/torvalds/linux/blob/7ed2632ec7d72e926b9e8bcc9ad1bb0cd37274bf/drivers/input/mouse/trackpoint.c and knowing my beloved little red nub, that’s because of the inertia settings in there. That’s what makes a TrackPoint more than a pointing stick: the negative inertia.

2 Likes

This is an image from the framework website, but copying it here because it’s a very clear picture of the space we’re working with on the FW16. Any “too tall” keyboard (like the X1 Carbon I’m working with) needs to navigate the row of pogo pins running across the center of the usable space, as well as the white brackets on the sides. On the other hand, just above that is some extra depth that could be exploited for your driver chips, FPC, etc.

In another thread, @Josh_Cook mentioned a plan to create a facsimile of the complete upper deck of the FW16. That would be super-useful for Input Module developers, even if it was just a STEP or STL file we could 3d-print as a mockup or import into CAD.

3 Likes

While I’m uploading screenshots, here are some clear pictures of the FW13 hinge assembly discussed upthread, screencapped from this iFixit video.

It looks like I misidentified the new piece which would need to be fabricated: it would be these:


I think they still ought to be able to be 3d printed in metal with altered dimensions for a not-unreasonable cost. It would be the flat part between the “curl” and the “bend” that would need to be a few millimeters longer, depending on how much clearance your dream keyboard/trackpoint required. Some alteration of the bezel might be required, and you’d probably need a matching spacer at the top of the frame for the screen to rest on when closed.

2 Likes