Thinkpad keyboard mod (super early stages)!

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

Corresponding pictures from the iFixit framework 16 review:

Not quite as clear as the closeups in the FW13 video, but it seems like there are two places where extra millimeters might be added, marked with the red arrows, and in fact it might be possible just to put a flat shim underneath the hinge at the location of the blue arrow which would be Very Easy Indeed if true.
image

EDIT: the hinges are already in the Framework store: Framework – nice pictures there; I’m hoping I’m right about a flat spacer being all that’s required. They are/will be also selling the midplate for $99 which would one way to “mock up the top surface”, although a bit more expensive than a STEP model would be. :slight_smile:

(@nrp if you had an extra refurb or not-consumer-quality midplate lying around, I’d love to borrow it for test fits!)

3 Likes

Why 3D print an entire new part? We have the specs on the screws, get a matching spacer machined (or printed) and get new screws to match the new spacer depth. Goes underneath the hinge to add a bit of height from the bottom of the chassis. Only concern would be the length of the cable to the monitor, but I suspect a couple of millimeters might be just fine. Would definitely need some care and checking tho.

Probably add some appropriate thickness rubber bumpers for the top edge of the monitor for when it’s closed to be approximately flat.

We should distinguish between talking about FW13 mods and FW16 mods here. I agree it looks like a simple spacer will be enough for the FW16. For the FW13 the geometry is a little more complicated: on the display side the hinge sits behind the screen, so you can’t just add a simple spacer “underneath” without pushing out the screen as well. And on the FW13 the “mainboard side” of the hinge lies parallel to the top surface, so you likely can’t add a shim there without making room above it somehow. Given that 3d printing costs are roughly proportional to volume, not complexity, it’s actually cheaper to replace a “small but complicated” piece like the hinge than a “large but simple” piece like the top surface. On the other hand, there’s a spring somewhere in the FW13 hinge (I can’t quite see where), and that could complicate replacing “just a piece of it”. YMMV though, especially if you’re inclined toward hand-crafting pieces rather than 3d printing; I’m just throwing out ideas for discussion at this point. I don’t have a FW13 (I’m in club FW16) so I don’t have a particular dog in that race.

4 Likes

Ah, I see. Wasn’t paying too much attention to that.

But yeah, I’m a FW16 Batch 12 myself, so a ways to go. But definitely wanting this with interest.

Hmm…I just realized, UltimateHackingKeyboard has a trackpoint module, using it as we speak actually. I wonder if I could mod that and have it in place of, or next to, the trackpad. Or keyboard. Hmmm… Future project after I get my FW.

Or maybe utilize some of their designs to put together a thin mechanical keyboard with a trackpoint.

2 Likes

WRT 3d printed metal modified hinges on the FW13, I do have concerns about toughness of SLS metal compared to the original. If I were putting this in an F13 I would consider a modified design rather than just stretching the original bent steel design a few mm taller.

I would want to use the thinkpad trackpad as well, which probably means a whole new keyboard bezel, or modifications to it. I think that the one thing really wrong with thinkpad keyboards is that red button in the middle that gets in the way and is totally useless as a mouse (I know that’s a hot take in the thinkpad crowd! :smiling_face:), and I want physical trackpad buttons. I’ve tried the FW13 trackpad (a family member has one) and I can’t stand the virtual buttons.

I was thinking that if the hinge is offset, raising the monitor slightly, 3D printing a TPU/TPE bumper that goes all the way around the top and sides of the bezel, rather than having just a few nubs, might keep the dust out when it’s closed. And the magnetic bezels make it easier to attach without worrying about getting glue on the screen… :thinking:

1 Like

Yeah, having seen the FW16 hinge assembly it does look like it would be pretty easy to add not just a single millimeter (which I think is the minimum necessary to support the latest generation trackpoints) but several, which would open the door to a lot of interesting mechanical keyboard mods. What’s more, because the input modules are so easy to swap, you could even forego the hinge mod and make a nice mechanical keyboard for home use, and swap in the stock keyboard (or no keyboard at all) when you want to fold it up to carry around.

If a hinge mod gets popular, I could even see Framework carrying an extended hinge and a “thick bezel” with a bumper as you suggest as user-swappable parts. We modders would probably have to agree on exactly how much extra space we’d want, which would be the hard part!

We’ll have to agree to disagree on the touchpad and buttons, though. I’m firmly in the “three buttons” and “no touchpad” camp. :slight_smile:

5 Likes

I dunno…I’d just pull out the keyboard and DIY a carry case for it, open up the Framework and put back in the nice keyboard. I’d just rather not have to do all that of course :stuck_out_tongue:

Although for work since I’m hybrid, I do cart my UltimateHackersKeyboard to and from work the days that I’m in the office, lol. My current keyboard (a Tuxedo) is pretty mediocre, and sadly it’s not ANSI, so sometimes I get a bit messed up with some of the keys.

I would really prefer some hardware buttons for the trackpad regardless. But I’m in the trackpoint camp myself :wink:

1 Like

I’m getting ahead of myself a little, but I laid out a board in the “small module” form factor to start acquainting myeslf w/ the input module system.

Schematic and layout sources at: GitHub - cscott/X1CarbonGen10

I’ll probably chop off the (unused) top of the board before fabbing this – and I want to wire up my earlier prototype boards (photo upthread) to match the pinout of this one and get a full firmware running to make sure I’m not missing anything. If I understand the midplate design correctly, this board should fit inside the depressed channel in the middle of the midplate, and thus not take up any of my height budget. The position of the FPC connector here is just an optimistic guess at this time, though.

5 Likes

So I’ve got a basic KMK Firmware working now, using the pin out of the v2 board above including an I/O expander. That required a lot of jumpers on my v1 board:


Firmware at: https://github.com/cscott/X1CarbonGen10/tree/main/firmware

I’ll work on a qmk firmware next, which should allow trackpoint support. (And then from there probably a zmk firmware, which would require porting the ps/2 support from qmk – so I want to make sure the qmk configuration works first.)

8 Likes

Love the resistors taped there inline with some 0.1" prototyping wires :slight_smile: Kaptan tape FTW!

Appreciate the updated, would be magical if you get this workable for some of the rest of us to beta test in the next 4-6 months on the FW 16.

2 Likes

Ok, QMK firmware now at: GitHub - cscott/qmk_firmware at x1_carbon_gen10

Everything is working except for the “microphone mute” button (and its LED indicator) (which seems to be nonstandard?) and I don’t really know what to map the thinkpad alternate keys for F9/F10/F11/F12 to, which on this keyboard are “chat bubble”, “telephone handset”, “hang up”, and “star”. There’s probably some media keys these map to on a “real” thinkpad.

The trackpoint works but it needs some tuning for “feel”. As @Karoly_Negyesi pointed out above this is most likely because the qmk ps2mouse driver is missing some of the trackpoint-specific bits present in the linux driver. They can be added; just a “simple matter of programming”.

6 Likes

Holy crap. Wow!

That’s awesome, can’t wait to hear of more progress.

1 Like

I am super excited by this progress!

@C_Scott_Ananian is there any way supporters can sponsor your work? i.e. through GitHub Sponsors or another source of funding? Would love to donate to your exploration, discovery, and effort.

2 Likes

I’d love to have a slightly wider variety of ThinkPad keyboards to test fit. I’m a little disappointed that I haven’t been able to find a good reference that lets me know exactly how big each ThinkPad Keyboard is in width, height, and thickness so that we could more easily screen candidates. My one constraint has been that I want the trackpoint buttons to be integral to the keyboard, since I don’t want to have to fabricate new buttons to replace them, but other than that I am mostly throwing darts. I picked the X1 Carbon Gen 10 because it was the most recent keyboard I could find (thus likely to be available longer and be thinner) that had integral trackpoint buttons.

But if folks wanted to help out, chipping in to buy a few more keyboard candidates would be useful. I’ve made a friend in the Batch 1 Guild so I’ll get a chance to test fit whatever I have against a real FW16 and check to see whether the keyboard fits well, clears the various obstructions, etc – there are posts on the FW16 midplate used for aligning input modules, and a channel that provides some extra depth, and on the keyboard side there are sometimes mounting lugs or extra bits of depth at various points. Anyway, the best way to be sure (absent a library of engineering drawings from Lenovo) is to hold up a keyboard against the real thing and see how it fits, but at $20-$50 a keyboard, that can get pricey fast. So I’d gratefully accept keyboard donations if folks wanted to help out that way (they’re easy to find on Amazon and eBay), albeit with no guarantee that your contribution will end up being “the one”.

If you’re interested, PM me on the forum. If there’s huge interest it might be worth setting up a GitHub sponsors or something, but if it’s just one or two I just might give you my postal address and have you send stuff my way.

Prompted by @Stanley_Chan I set up a GitHub sponsors account, for those who wanted to chip in to the “various Thinkpad Keyboards” fund. Two of y’all chipped in (thank you!) and I’m working my way down the following list of “interesting” keyboards to have on hand when my Boston-area friend in Batch 1 receives their FW16:

  • Thinkpad T14S Gen 2
  • Thinkpad E14 Gen 1
  • Thinkpad T470/T480
  • Thinkpad X280/X390/X395
  • Thinkpad E480/L480/T480s/T490
  • Thinkpad E40/E50
  • Thinkpad L410/L412/L421/E512

Thanks again for the support! This pretty much covers the gamut of the widely-available Thinkpad keyboards as far as I can tell, with a lot of interesting variation there that will be interesting to test-fit against the FW16. I did take a look at @Pylon’s favorite, the T410, as well, but the nonstandard connector gave me pause. I do have two different T4xx series keyboards in my list, though, and the L410 is non-chiclet. So I feel like I’m covering that gamut without duplicating the work @Pylon’s already doing. @Harley_Godfrey’s favorite, the T480s, is in my list above though! So if that happens to win the test-fit-athon we can collaborate on that one.

4 Likes