Thinkpad keyboard mod (super early stages)!

Without the rubber dome though!

2 Likes

Yeah. I got a datasheet for their latest and it’s 3.775mm, but again without the rubber dome. These have a 2.4mm x 2.4mm x 2.4mm stud for the rubber, but are only 1.375mm under the stud (0.8mm sensor PCB + 0.075mm spacer + 0.5mm steel plate).

I’ll ask them if they can shrink the stud size down, which might be all that’s needed to make this fit – eg, drop the stud height down to 1.4mm and have a 2.4mm height cap with 1mm of rubber on the top. Something similar must have been done to make the 2mm caps of the X1 Tablet work, very interested now to see the measurements on that.

3 Likes

Hey!

Appoligies on disappearing, life always finds a way to distract. I am out of the country atm but plan to continue working on it from the 18th.

I have the boards in hand and just need to order some of the parts to go on there.

The board design in not going to be directly applicable to lots of keyboards but should be modifiable if you have the know how. I will be using the kmkfw which is compatible with the RPI 2040. That being said, if anyone has any ideas on a better firmware or something that is already being used for a similar project.

@arya

Thank you for the information on the trackpoint/touch pad. I didn’t realise that, I will just use the RPI 2040 to convert it. There is lots of code for that already so it shouldn’t be a probleme.

Regarding the touchpad, it wouldn’t fit mechanicly because of the mouse buttons. I would probably look at adding one of the TP ones at a later date to replace it but that isn’t on the top of my list at present.

I will also be adding a usb-2.0 hub internally (eventially) so I can have the fingerpring scanner and the RPI 2040 connected but that isn’t too important for the POC.

@C_Scott_Ananian

My current status is trying to get it working at all (mainly figuring out the software/hardware). I am not too experianced with this sort of work so there has been lots of trials and tribulations.

Regarding your comment on sizing, I still haven’t figured it all out but my plan is to add a spacer or some sorts between the hinge (screen side) to raise it. I would also have to do a coustom bezel/mod the existing one so there isn’t a massive gap but it shouldn’t be too hard…

@nrp

Good point though the rubber dome is squishy so probs wouldn’t affect it to much. While not ideal it isn’t the worst thing in the world. I think you can also get replacment ones that are a little more flush. Mainly the ones on the old laptops (the full dome ones that look sort of hairy).

4 Likes

I ordered one as well. It looks like the sensor mechanism itself is about 2.8mm, and with the rubber dome about 3.8mm. That is just a bit higher than the keyboard keys, which means there is risk of screen damage. With a thinner nub, it could be possible.

7 Likes

It’s unclear if KMK supports blocking, which is necessary for 2KRO keyboards without diodes (such as the Thinkpad keyboard). The default scanner assumes you have diodes, and I don’t see an option for one without.

QMK supports blocking with #define MATRIX_HAS_GHOST, and also supports Trackpoint directly. Unfortunately QMK isn’t particularly battery efficient compared to other firmwares (like ZMK, which are designed for battery-powered wireless keyboards), though it might be fine.

The X1 Carbon Gen 10 keyboard is quick nice, but it’s about 4.6mm thick overall. If it’s easy to shim the hinge 1mm, that would be my suggestion for a keyboard replacement, as the keyboard is pretty easy to obtain and looks and feels pretty good IMO. The trackpoint nib on this one is 2.9mm thick, on a 2.1mm tall post. It’s hard to measure the thickness precisely at the trackpoint without removing the trackpoint from the keyboard, but maybe I’ll do that at some point. The keyboard overall is 277mm wide by 135mm high (to the bottom of the mouse buttons) so although the width is fine you’d probably want to replace the bottom touchpad module at the same time in order to fit the mouse buttons in, since the framework 16 large input module is 283mm x 114mm.

2 Likes

Have y’all considered a different nub/stalk design?

I understand that the trackpoint design is iconic; but a pointing-stick device does not require a circular surface for control and use.

Tye, creator of the Santoku custom mechanical keyboards, experimented with a “bean stalk” design: More Key Cap and Stalk options. (no cutting required) – Gestalt Input

Secondly, we are excited to introduce a new stalk design, which we’ve named the “Beanstalk”. This design doesn’t have the traditional rubber nub. Instead, it has a cross pattern that elegantly rises and just slightly emerges between the keycaps. It’s specifically tailored for the Santoku’s key switch offsets, making keycap cutting unnecessary. While the Beanstalk looks tiny, it’s surprisingly comfortable.

Please note, the Beanstalk is optimized for keycaps that adhere to the MBK size standard; larger keycaps may not be compatible.

The Beanstalk is still in the beta phase, but we’re including one with every order to gather your feedback. If you find that you prefer the traditional rubber nub, don’t worry, switching is simple.

There is potential here to create a pointing-stalk that is thinner and does not require cutting any keys!

i am really looking forward for this to happen! and happy to see capable people from framework and its community pushing this forward together. is there anything to help you getting progress on that? is there a git project with open issues to be solved, bugs to be fixed? or anything else?
and i was thinking about the whole casing, there might be some mm available to extend in any dimension neccessary with a custom case. there are several parts of the casing in the github of 13, but i did not yet find the complete case or the plate below the keyboard to investigate further. a custom case itself would open endless more options!

this framework project is unbelievable, thanks a lot to everybody contributing!!

2 Likes

@nrp do you think it would be possible to push for the release of STEP files for hinge/frame parts? The easy availability of CNC/3DP services like jlcpcb.com mean that a “custom hinge” (as has been floated previously) is a reasonable thing that folks could have CNC machined, either individually or as a group buy. Is the idea of getting an extra 1mm in keyboard clearance by custom fabricating a few hinge parts a realistic idea?

Having played with the parts, I still think adapting the X1 Carbon Gen 10 keyboard is the most viable path forward here, but that requires shimming the hinge to get an extra 1mm of clearance. The X1 Tablet Gen 1/2 keyboard is potentially thin enough, but the keyboard feel is (IMO) really poor, and actually cracking that keyboard assembly open is quite difficult, as the keyboard is (as far as I could tell) only available as a preassembled glued-together unit. It doesn’t feel like a mod that could be replicated en masse.

I’d like to follow @Harley_Godfrey’s footsteps and start working on a RP 2040 board that can interface with the X1 Carbon Gen 10 (as he has done for the T480s keyboard) but I’d like to get some reassurance that the hinge modifications that would be needed are feasible. Otherwise it’s either use the X1 Tablet keyboard or go back to sprintek and see if they can custom fab a shorter trackpoint and/or a full keyboard.

1 Like

There is CAD for the hinges here: https://github.com/FrameworkComputer/Framework-Laptop-13/tree/main/Hinges

3 Likes

@nrp I hope something similar will be posted for the Framework 16? I think Harley has a Framework 13, but I’m holding out for a 16 :slight_smile:

Those hinge drawings for the 13 look pretty reasonable, though. I don’t have a 13 in hand so I don’t have the full context needed, but assuming that the hinge “main part with spring” is in the base, and the “L part” is in the screen, it looks like all that would be necessary to gain another millimeter in clearance is to drill out the two rivets attaching the “L part” and attach a new “L part” with a short leg which is another 1mm longer.

To get a rough ballpark I extracted the existing “L” from the STEP file for the 13 using freecad and submitted it to JLCPCB for quotes both CNC machined from aluminum as well as 3d printed in stainless steel. They want only $8 (+$1.50 s/h) to print the right side L from 316 stainless; or $10.80 (+$1.50 s/h) to CNC machine it from Aluminum. So say ~$20 to print or machine both sides. That seems reasonable!

Probably the hardest part for the home hacker is going to be attaching the new L to the existing hinge piece. I’ve got a couple of ideas here: (1) printing the new “L” with protruding “rivet” pins already integral, and then using a ball peen hammer to deform them in place and then grinding flush with a dremel; (2) brazing or soldering; (3) using soft copper rivets and a hammer.

This is a little more involved than simply swapping a keyboard out, but still seems within reach of anyone with a drill and a hammer.

3 Likes

Putting a few links here that might be useful to others following in these steps:

  1. There are some tools to help make reverse engineering an existing keyboard’s matrix easier. Simple tool for reverse engineering key matrices | Evan's Techie-Blog is the basic idea (just an automated continuity tester between one pin held low and all other pins configured as pull-up inputs), and GitHub - Fordi/Keyboard: Teensy LC / Teensy 3.2 keyboard decoder sketch and GitHub - thedalles77/USB_Laptop_Keyboard_Controller: Details for building a USB keyboard and touchpad controller from an old laptop. provide more details instructions and code. These assume you’re using a Teensy, but I’ll probably port some of these tools to the RP2040.

  2. https://www.reddit.com/r/thinkpad/comments/xrhkgv/pinout_of_modern_thinkpad_keyboard/ has a link to a portion of a thinkpad E14 Gen 1 schematic. That’s not going to line up directly with any other keyboard, but I’d expect the basics to stay the same: dedicated lines for touchpad buttons, and leds, with about 18 “drive” lines and about 8 “sense” lines. My X1 Carbon Gen 10 keyboard has 45 pins at 0.3mm pitch, which ought to mate with this connector (also available for assembly on JLCPCB), and the back of the keyboard helpfully labels a few pins on an internal flex cable as GND, BL_DET, PWM, BL_5V, T1, T2…, T10, and VCC33. BL_DET is “backlight detect”, I suspect, “PWM” is probably to allow dimming the backlight, and “BL_5V” is (I’m guessing) a 5v supply for white backlight LEDs, in what otherwise is a 3.3v setup. There are 10 traces on the flex cable coming from the trackpoint, so I strongly suspect that T1 - T10 are trackpoint related. That matches up with the 10 signals listed as coming from the trackpoint module on Sprintek’s datasheet.

  3. A few more related projects: GitHub - hamishcoleman/thinkpad-usbkb: Experimental hardware to convert thinkpad keyboards to usb has some more thinkpad keyboard pinouts; GitHub - moduloindustries/thinkeys: Split ortholinear custom replacement keyboard with TrackPoint for ThinkPad laptops. is a retrofit keyboard for thinkpads. Both are primarily useful mainly for getting ideas about how other thinkpad keyboards work, in case we get stuck when reverse-engineering part of the keyboard pinout.

5 Likes

teriffic link-collection, looking forward to find time to dive into and experiment.

i would like to add another link: GitHub - Captain-Pumpkinhead/Framework-13-Vanilla-Reconstruction: The intention is to reconstruct every physical part of the Framework laptop, so that this repo can be used as a resource to begin mods from. It forks from Framework's Mainboard and ExpansionCards repos.
Someone remodeled the Framework 13 and took a lot of pictures. nice reference for people who dont have a machine on hand yet.

and, i got a drill and a hammer keyboards and rp2040, so i’m almost ready! :wink:

5 Likes

I’ve sent my own dev board off to JLCPCB to be fabbed:

So now @Harley_Godfrey has his T480s dev board and I’ve got an X1 Carbon Gen 10 dev board going. :slight_smile:

6 Likes

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.

8 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