Thinkpad keyboard mod (super early stages)!

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

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