Thinkpad keyboard mod (super early stages)!

New boards sent off to JLCPCB:

My previous board suffered from being designed around an FPC connector that was not in fact top-entry as digikey’s metadata claimed, nor was it bottom-entry, but in fact seemed to be a two-sided deal and thus incompatible with the actual keyboard FPC. The RP2040 part worked fine, just ended up with nothing to talk to.

The new version benefits from my actually owning a FW16 now to measure against, and should place the (different!) FPC connector in a useable position.

The second more-linear board fits under the mouse buttons and interfaces with the touchpad connector to fake out the FW16 into believing a touchpad is connected. As an extra bonus it has space for a 2x4 header so I can use it for prototyping the “ThinkPad touchpad with physical buttons” hack.


Well, at least you could iterate on the fit/etc of the board with keyboard on top, even if not hooked up. So it’s not a total loss. But annoying…

Are you hand soldering all the boards, including all the little SMD parts? Or are you having JLCPCB populating most/all of the parts?

I’m having JLCPCB populate all of the parts. My thought is that if this works and is successful I want to make it feasible to mass-produce, and I’m not going to be hand-soldering 100s of boards myself. :slight_smile: The available working space on the bottom side of the input module is also extremely tight.

At the moment, I’m moving forward on using the X1 Carbon Gen 10 keyboard for an “all in one” solution that provides trackpoint and buttons and replaces both the keyboard and touchpad area.

On a parallel track, I’m working on making a touchpad-only module using the touchpad+button assembly from the T460s. I’ve got a little “PCB” being made for that, that’s really just the top layer and the touchpad cutout with no electrical function:

You can do some interesting decorative things with silkscreen and the copper layer, but mostly this is a cheat to precisely make a top panel of exactly the right size. What’s still to be done here: (a) figure out which of the T460s touchpad’s three (!) I2C busses is the right one to wire to the FW16, (b) make a suitable adapter board, (c) design and 3d print a bottom side rail to glue to the PCB upper, and (d) design and 3d print the equivalent of the piece shown below to interface to the touchpad latching mechanism.

Of these, (d) is the one that seems the hardest (to me). It would really help if FW would have included that piece in the 3d model dump of the shell components they released a few weeks ago.

Anyway assuming the touchpad replacement project is successful, it seems we’d want a keyboard-only-no-buttons module that fits into the upper keyboard area and doesn’t overflow into the touchpad space. I’ve got a few items on my ebay list as possible button-less keyboard candidates: the X13 Gen 1 or 4 and the T460 seem most promising at the moment.

EDIT: I got another generous donation from github sponsors (!) so I went ahead and hit buy on my ebay cart. Incoming keyboards are: X270, T460, T460s, X13 Gen 1, and X13 Gen 4.

1 Like

I meant on these prototype boards, to keep costs down on the prototypes. For larger production, of course you’d definitely want them to populate the boards.

My limiting factor for hobbies tends to be time, not money (within reason)… and JLCPCB assembly is pretty darn cheap. I do hand assemble the oddball parts that would bump the project into the “not budget” PCBA tier, but that’s more relevant for the seven segment display input module than this one. :slight_smile:

(But this is also life hacking on my part. I don’t want to get to the end of this project with something that works for me but which I’d have to redesign from scratch in order to make more than one of them to share with others. So it helps to design for manufacturability from the beginning, and to ensure that I don’t find any unexpected surprises when scaling later it’s best to use the same processes (PCBA in this case) throughout.)

1 Like

You wouldn’t happen to have any power PCB design skills, would you? I’m wanting to move into do some bucks, buck-boost, and/or one of those TI all-in-one USB-PD + buck-boost + CC/CV lithium charger ICs.

@Arya could probably help you out:

But in general I just carefully copy the reference design and suggested PCB layout from the datasheet and things generally work.

I’ve updated the source files for my X1 Carbon Gen 10 keyboard adapter at GitHub - cscott/X1CarbonGen10: Keyboard with Trackpoint for Framework 16 laptop: hardware design


I don’t mean to hijack the thread here, but I just wanted to post my progress of fitting a trackpoint keyboard to the framework 16. I’m hoping that someone comes up with a real solution I can buy instead of my kludge:

I have a preliminary version that allows me to ditch the external keyboard:

The keyboard is “Installed” and functional. I designed and 3d printed replacement spacer modules. The lid doesn’t close fully, so for now I’ve printed some shims that attach to the lid to keep it from trying to close onto the keyboard. I looked at adding shims to raise the lid, but that’s a lower priority for me.

Right now, the cable to the keyboard just runs out to the side, as you can see, but my next step will be to design a small pcb that fits in the spacer so I can run the connector to the internal USB ports.

I’m still in the process of designing all of the spacers to fit correctly, but it’s usable at this point. The biggest issue in reproducing what I’ve done here is getting USB-micro 90-degree adapter that fits in the 4mm thickness. I had to peel the plastic shell off of one to make it fit.

I posted links to my 3d-printable spacers and keyboard & trackpad blanks in another thread.


Nice! What keyboard did you use as your base? Is this a cutdown Tex Shinobi as per your previous post?

I’ve got my PCBs back from JLCPCB but haven’t quite put all the pieces together yet. This is the X1 Carbon Gen 10 and it will be one keyboard + 1 small module wide, and requires a custom touchpad-size spacer as well.

My most recent scouring of Ebay turned up the X13 Gen 1 keyboard which looks like an even better fit, it should fit in 1 keyboard + 1 touchpad module, leaving both spacers top and bottom alone; and the X13 Gen 4 is the same size but without the touchpad buttons, so ought to work well as a “keyboard module only” IM which matches with a “touchpad with buttons only” bottom side IM.


This is a ThinkPad Compact USB Keyboard with TrackPoint. The main thing that it has going for it is that it’s already got the USB adapter, so I didn’t have to deal with that other than making a spot for it to fit under the keyboard.

The keyboard itself is pretty thick. The trackpoint housing sticks a good way out the bottom. It’s the width of the FW16 keyboard module and about 2.5 spacers.

I made the new keyboard-holder spacers 4mm thicker than standard spacers, and the buttons are still 3mm taller than that, though the keys are just 2mm taller. The trackpoint base goes through the original spacer depth almost completely.

1 Like

Ok, my keyboard is working in place in the FW16 now. It was temporarily offset one unit to the left of where it should be, due to a bit of confusion about how BOARD_ID resistors work, but I fixed that with a little resistor value swaparoo. I need to make some bezels to tidy everything up.

There are actually three separate PCBs here. On the left side is one of my v1 PCBs, repurposed here to provide the 330k board ID resistor which the FW16 wants. Then there’s another PCB underneath the trackpoint buttons which provides the board ID resistor to fake out the touchpad. Finally, the actual “real electronics” are on the rightmost PCB, with a board ID resistor calling itself a small input module.

I’ve got some ideas on how to tidy this up a bit, using other ThinkPad keyboards that are slightly different sizes, but I think it’s worthwhile to carry this through to the end before getting distracted by the next shiny keyboard possibility so my next step is 3d printing some pieces to fill in everywhere you can see the midplate and press the keyboard down a bit better – right now the FPC cable underneath wants to spring up the middle, which can be fixed with a better crease and some doublestick tape.


This is amazing! Really looking forward to this going another step, and really hope I’ll be able to buy a PCB & cable, print up my own spacers/etc, and find an appropriate keyboard off of ebay :slight_smile:

Here’s a teaser of what “version 3” might look like, using the X13 Gen 4 keyboard up top and the T470s clickpad-with-buttons (as requested by @Gwen) down below. The X13 Gen 1 keyboard is the same size, but with buttons integrated into the keyboard, and might be another option for folks who really don’t want a touchpad at all (and I’m personally in that camp).

1 Like

I do like buttons in the keyboard, puts them right where I expect.

Is that a commercial material, what you have shown there that you put on top of a printed substrate to get a fully smoothed top? Seems like you could end up putting in the 2 bits underneath for the ID resistors, and replace the bottom area with 1 entire contiguous top, rather than having the side spacers. Seems like a great idea, if you’re not going to have any trackpad at all. Or even if you do, but using the thinkpad one. Or maybe even the FW one.

It’s a 0.8mm thick PCB, which happens to be the exact same thickness as the framework touchpad area spacer top. It still needs some parts glued in beneath to engage with the locking mechanisms, but I think it’s a neat way to get (a) precisely machined dimensions and cutouts and (b) silkscreening and textural details. Pretty darn cheap, too, although at some point we grow larger than the “economic PCB” size. Dunno if a full-width spacer would break that limit or not.

Wait…that’s simply a 0.8mm PCB with silkscreening on it?! Whoa… Nice. Hmmm…interesting idea. Would be worth just chucking a quickie test into JLCPCB to see if the wider breaks the bank.

Still and all, thinking outside the box, I like it.

Off topic – Is that a ProtoArc trackball to the right of your FW16? I’m curious how it compares to a Logi Ergo/MX Ergo trackball or old school Microsoft Trackball Optical.

Good eye, yeah it’s a ProtoArc EM04. (When I’m not using a trackpoint…) I have (and have hacked) a Ploopy Mini which definitely feels nicer, but the Ploopy is big and heavy and I never quite finished my mods to make it wireless; also the Ploopy ball is not captured so likes to hide if you try to travel with it. The protoarc sticks a bit for small/fine movement, but (a) there’s a resolution toggle button you can (somewhat awkwardly) use to get over this, and (b) the protoarc cost $23.99 (even cheaper now) and is worth every penny of that price. The protoarc is also super lightweight (and has a captive ball) so quickly became the thing I threw into my bag when out and about. If you shift the FW16 keyboard all the way to the left, the “medium-size” spacer gap is a perfect perch for it in cramped quarters. So, I wish it were a bit smoother for small motions, but yes would recommend, good value for money. (Before the Ploopy I had some logitech trackball which I have fond memories of, but not recently enough that I can really offer a good comparison.)

For me trackballs are for general use. Subsequently I don’t travel with them. I have a Microsoft Touch Mouse that’s assigned that duty. Even with my gold standard Microsoft Trackball Optical I just can’t use trackballs with CAD, and I need to draft when I’m travelling. Those small, fine movements are just frustrating (as you noted) with trackballs of any brand or model I’ve used.

My current trackball is a Elecom EX-G Pro Trackball that recently replaced a Logi Ergo (Ergo M? Ergo MX? I don’t recall). The Elecom … is … okay. Eats through AAs faster than I’d like. Actually, it complains that the battery is at 2% for 3-4 months, starting 2-3 months after the batteries are replaced.

I have a ProtoArc Foldable Keyboard XK01 that replaced a much loved Microsoft Universal Mobile Keyboard. Been pretty happy with the keyboard so I’ve been interested in the ProtoArc trackball as a replacement for the Elecom ever since.