Would someone be able to create an input module that’s an older-style touchpad with individual left/right buttons, instead of a “clickpad”?
I know the old touchpad parts still exists as Clevo uses them.
Would someone be able to create an input module that’s an older-style touchpad with individual left/right buttons, instead of a “clickpad”?
I know the old touchpad parts still exists as Clevo uses them.
Welcome to the forum.
Yes, there is the possibility that someone could make a touchpad module with buttons. Though it might have to connect to a different spot than the stock touchpad modules use, as it’s not clear what interface those spots use.
I personally really hope someone does create one. With left, right, and middle buttons.
This would be very much appreciated. Although I usually have a mouse attached, I do sometimes use the touchpad. I dislike clickpads and would definitely be willing to sacrifice touchpad space for buttons. The 3"x2" touchpad on my aging Thinkpad T520 is large enough. Also, I use middle-click paste on Linux extremely often, so three buttons would be my desire.
How do I link in with someone who can do this?
My framework is due Q1 and I would like to commission a touchpad by then.
Well, first we need the touchpad docs.
You might check in with the crew in the trackpoint keyboard thread. Although some thinkpads integrate the trackpoint buttons with the keyboard (and that’s what I’m personally working on) there are also models of thinkpad where the mouse buttons and touchpad are a separate assembly, for example:
That might be a good source of parts for a framework touchpad module w/ integrated buttons.
I’m not a hardware person so my next question will sound really stupid …
Just to be clear nothing can happen now because they haven’t actually released the information that the hardware people need to know about the touchpad like what wires go where, what to solder, and what to connect to pogo pins? Those “docs”?
Thank you for answering, I’ll post something in the thread and then lurk.
Yes, although yesterday we got some more information from @nrp which fills in a lot of the blanks on the hardware side, we still don’t know the exact I2C protocol to use (that’s software side). The bigger limitation is really just that very few people have hardware outside of Framework, so the mechanical part (how tall/wide/thick can the touchpad be) is uncertain. If you’ve got the machine in your hands you can take out a ruler and micrometer and work this out in relatively short order, so this will resolve itself in time, especially as batch 1 makes its way out into the world.
I understand. Thanks.
I’m batch 8 so I have time to wait.
As long as the I2C bus the touchpad uses is exposed to the OS, it should be possible to use any HID over I2C compatible touchpad - at least on Linux. I’ve also previously owned a laptop where the buttons are a separate device from the touch area, and as long as they’ve got separate I2C addresses, that should work fine as well. Whether or not it’d work on Windows without a custom driver, or work in the EUFI at all without further information - I have no idea.
Mechanical side looks straightforward:
I’m using a T470S clickpad module, and the schematic on the T470S side of this looks like this:
It’s I2C at least – /three/ I2C buses actually: TP4CLK/DATA (trackpoint bus), SMB_CLK/DATA_3B, and IPDCLK/DATA. No obvious interrupt, but a bunch of disable signals: /LID_CLOSE, PAD_DISABLE, and NFC_ACTIVE.
I confirmed that my module has a 12 pin connector, and pin 1 is actually marked on the module. The FPC connector is Kyocera 04-6811-612-000-846 https://ele.kyocera.com/en/product/connector/fpcffc_connectors/6811/046811612000846/ which is 12 pin, 0.5mm pitch, at least on the motherboard side. Looks like the module connector is the same.
I guess the next step is to make a little breakout board, wire up all three I2C buses, and enumerate them all and see what shows up.
EDIT 2024-07-08: The T470s schematic matches the pin 1 marked on the module; the T480s schematic has the pins/FPC flipped. Scanning the I2C bus turns up a device 0x2C on the SMB_CLK/SMB_DATA bus, nothing (yet?) on the other two.
Some progress here! I sent off a “top surface” blank to be fabricated as a 0.8mm PCB, and designed some 3d-printable parts for the touchpad latch mechanisms.
Designs are open source & published at GitHub - cscott/TouchpadSpacerFW16: Touchpad Input Module parts for the Framework 16 laptop
This is great news, lurking with excitement!
So I read through the Microsoft HIC over I2C spec and one unusual thing is that the device’s I2C address has to be specified in the BIOS ACPI info. Everything after that point is plug and play, though. So it’s possible that we’d need an I2C device address translator to ensure the ThinkPad touchpad uses the same I2C address as the stock framework touchpad (7-bit address 0x33). Those exist, though.
(For future reference, USB-to-HID-over-I2C bridges also exist, which would let you use the built-in touchpad as an external USB device, if anyone wanted to do that.)
Progress!
On the electrical front, I’ve figured out that the T470s touchpad I have speaks both PS/2 (on TP4CLK/TP4DATA) and RMI4-over-SMBus (on SMB_CLK and SMB_DATA) with exciting interactions between both protocols. Although there exist “USB to HID-over-I2C” chips like the FT260, the conversion I need is from PS/2 or RMI4 to HID-over-I2C, ideally matching the I2C address of the stock touchpad (0x33) so that the FW16’s native ACPI information about the peripheral is “correct”. (The FT260 would be useful if you wanted to use the existing FW16 touchpad as an external peripheral, though.)
Anyway, just a Simple Matter Of Software, though that means I will need to hide a microcontroller somewhere to do the conversion. There’s sample code already written for the STM32, which might tip me toward using that chipset, although the code seems pretty portable. And, as usual, @Arya has been here first.
I’m very excited to see progress. I’m still waiting to throw money at you.
Back to lurking.