So I am in supper early development of a Thinkpad keyboard mod. At the moment I have only started working on getting the keyboard to run over USB. At present I plan to use a Thinkpad T480s keyboard. This is for two main reasons: firstly it is thin, even the trackpoint but also it can come in silver so it should match the laptop (not that a black keyboard would look bad).
I have started the PCB design, though it is just to get the basics working. This is what I have:
There are two headder pins on the side. one is for the RPI 2040 and one is for the track point. I plan to connect the track point directly to the motherboard as that is what the current touchpad works over, though there is a possiblility that won’t work (not sure if it needs to be supported by the ec or if it just connects up directly to the computer).
When I get the keyboard working as a normal usb device, I will move to creating a usb hub on the pcb so I can retain the fingerprint scanner functionality. Also, the touch pad will no longer fit so I am going to replace it with a usb based one (as in one that run over usb but is still a internal touch pad), this is because I will have used up the PS/2 style connection.
This should leave me with a working thinkpad keyboard on a Framework (which I am assuming a few people here might be intrested in lol). If you have any suggestions for a better way to implement this, please hit me up I would love to get some of yall’s ideas!
Super cool project!! I’ve been thinking of doing this for quite a while, but I don’t know enough about the internals to manage it all - I wonder if the standards and communication are the same across most all Thinkpad keyboards? I have a Bluetooth Thinkpad keyboard that I really love the feel of - it’d be really cool if there could be a semi-standardized process for getting a Thinkpad keyboard to work with a Framework!
Sidenote for once you know more about how the trackpoint works - do you think an independent trackpoint could be added to a standard Framework keyboard? It’d be very useful to have one, regardless of what sacrifices it’d take :P
Nice! What firmware are you planning on running the RPI 2040?
I’m thinking of doing the same thing, but with a T410 keyboard. It is much thicker though, so it would need a custom lower chassis as well. Leaning towards an STM32 running QMK (as QMK supports non-diode key matrices)
The touchpad works over I2C-HID, and the trackpoint most likely works either through PS2 or through a custom SPI-like interface. There’s no other devices on the I2C bus afaict, so in theory, you would be able to change the EC firmware to bitbang PS2 or whatever the trackpoint uses, with the obvious caveat that you need to change the EC firmware significantly. A better idea would be processing the trackpoint on the RP2040 side and then translating it into I2C-HID responses - or, even better, just translate it into USB HID like you’re doing for the keyboard already.
What’s your current status? And were you targetting the Framework 13 or the (not quite released yet) Framework 16?
According to the chart at [RESPONDED] Any chance of trackpoint? - #218 by MJ1 it looks like the T480s has a 4mm tall keyboard, whereas the space available on the Framework 13 is 3.8mm according to The Keyboard - #5 by nrp – I don’t know whether the Framework 16 has more space available, but it seems like it might be a good idea to hedge the bet and look into one of the 3mm trackpoint options from that chart?
Really, almost anything can be created into an Input Module. The only limit is your imagination, and the 3.7mm height constraints.
And the github repo has 3.65mm as a dimension on the mechanical drawings.
I’m looking at the keyboard for the X1 Carbon Gen 10, which according to https://saoto28.wixsite.com/trackpoint4life/compatibility is a 3mm high trackpoint, and seems to be the most recent (2022) model made with the mouse buttons integrated to the keyboard (which seems like it would make things a tad easier).
Yeah, that’s likely. Pity we don’t have detailed mechanical drawings from lenovo. I’ve gambled ~$50 on a purchase of the X1 Carbon Gen 10, just to be able to take detailed measurements and figure out exactly how far off we are and how much thickness is below the nub. There was also a 2mm trackpoint released for the X1 Tablet Gen 1 and 2 (it gained another 0.8mm in Gen 3), which might be worth looking at as well, but is a bit harder to source, at least as a standalone keyboard, but I went ahead and ordered one of those too, for comparison.
Sprintek.com seems like they sell trackpoint (“FlexPoint”) modules; they also design full keyboards. If a custom design is the only way to go, they might be a good partner; I have no idea what sort of minimum quantities would be necessary to make that work though.
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.
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.
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.
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…
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).
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.
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.
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!!
@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.