Linux touchpad like a MacBook Pro, May 2020 update(bill.harding.blog)
bill.harding.blog
Linux touchpad like a MacBook Pro, May 2020 update
https://bill.harding.blog/2020/04/26/linux-touchpad-like-a-macbook-pro-may-2020-update/
324 comments
I recently tried switching from an MBP to an X1 Carbon, in a yet another attempt to switch to Linux as my daily driver. I ended up being thwarted, to my surprise, by the touchpad support.
The big problem I encountered was poor palm detection: I learned through this process that I have a tendency to use the touchpad with my right hand, while my left hand is still in typing position. This means that the edge of my left palm rests along the upper-left corner of the touchpad. This would result in the driver sometimes detecting two touchpoints instead of one, and I would end up scrolling when I meant to move the pointer.
The result of this was pretty amazing to me: after a few hours of use I found that my wrists, shoulders, and neck hurt because I was subconsciously trying to adjust my hands to avoid this. After a couple of days trying different drivers and tweaking config files, I ended up conceding that it just wasn't there yet.
It's too bad: I have lots of imposter syndrome about understanding my OS and using Linux seems like a great cure. But after literally decades of trying, what I've noticed is that hardware (or at least, my acclimating to new hardware) always advances enough past Linux's capabilities that the switch is difficult. In the past, it was about getting sound cards or WiFi working, and nowadays it's about things like touchpads and high-resolution displays.
The big problem I encountered was poor palm detection: I learned through this process that I have a tendency to use the touchpad with my right hand, while my left hand is still in typing position. This means that the edge of my left palm rests along the upper-left corner of the touchpad. This would result in the driver sometimes detecting two touchpoints instead of one, and I would end up scrolling when I meant to move the pointer.
The result of this was pretty amazing to me: after a few hours of use I found that my wrists, shoulders, and neck hurt because I was subconsciously trying to adjust my hands to avoid this. After a couple of days trying different drivers and tweaking config files, I ended up conceding that it just wasn't there yet.
It's too bad: I have lots of imposter syndrome about understanding my OS and using Linux seems like a great cure. But after literally decades of trying, what I've noticed is that hardware (or at least, my acclimating to new hardware) always advances enough past Linux's capabilities that the switch is difficult. In the past, it was about getting sound cards or WiFi working, and nowadays it's about things like touchpads and high-resolution displays.
Could someone ELI5, why it is so difficult to make it right? And I do not mean exclusively to Linux, because Windows has been horrible for years now too.
If the issue is hardware, then we'd blame OEMs.
If it's software, then we'd blame, say, Microsoft.
If it was a combination of these two, then we could say that Apple is the only one that controls both... if it wasn't for the Surface series which still has atrocious touchpad experience.
If the issue is hardware, then we'd blame OEMs.
If it's software, then we'd blame, say, Microsoft.
If it was a combination of these two, then we could say that Apple is the only one that controls both... if it wasn't for the Surface series which still has atrocious touchpad experience.
Count me among those who agree there is a vast gulf. Another thing I've noticed recently is that on my X1 carbon (7th gen) there is a small but noticeably distance when I first start dragging a finger before the cursor moves that does not exist on a Mac trackpad with MacOS.
I also wonder what the experience is like using Linux on a Mac trackpad. Is it closer to the experience on MacOS or closer to the experience with Linux on commodity hardware? If the latter, maybe it makes sense to improve that first.
Maybe not though, if the synergy between hardware and software is the "secret sauce" that's missing then maybe optimizing the mac trackpad for Linux would be wasted effort.
I also wonder what the experience is like using Linux on a Mac trackpad. Is it closer to the experience on MacOS or closer to the experience with Linux on commodity hardware? If the latter, maybe it makes sense to improve that first.
Maybe not though, if the synergy between hardware and software is the "secret sauce" that's missing then maybe optimizing the mac trackpad for Linux would be wasted effort.
Am I the only one who doesn't get this? Trackpads on Linux with various Thinkpads have always seemed fine. I've used trackpads on various Mac laptops (Pro and Air) and those have seemed fine also. To round things out, my experience with trackpads on Windows (Thinkpads and XPS) has been that they are fine.
Admittedly I have Linux set up for keyboard use with a TWM, but the trackpads, when I used them, have been fine.
Admittedly I have Linux set up for keyboard use with a TWM, but the trackpads, when I used them, have been fine.
Ugh: my web host is weak. If the page won't load for you, you can see its native version at https://public.amplenote.com/LiTtaTWY3GfzzhF26Exu8tXx
Someone made an archive.is snapshot that's accessible while the live site is down: http://archive.is/FGHTT
There are three things at play here that give Apple/OS X their unique advantage:
1) Size. I have huge hands. A 2015 MBP has a trackpad whose size I have yet to see on any Windows/Linux laptop. I'm too clumsy for IBM's trackpad and the tiny "touchpads" on usual laptops should rather be called "touchpadlets" because they are so small that most I have experienced have had my fingers awkwardly collide. I won't go back on non-Apple hardware until there is a decently wide offering of decently sized touchpads.
2) Drivers. Back with my last Windows laptop it was some Elantech touchpad with Elantech drivers. Installing some random drivers from some random other laptop on a forum hint somewhere in the 30th Google result area suddenly gave me a whole lot of gestures. Just... WTF? Why is this not a core OS component in Windows and has it been possible over the last five years (since I switched) to finally use gestures OOTB in Linux?!
3) OS primitives / integration. Windows and (IIRC, please correct me!) Linux operate on the concept of "steps" with absolute scroll delta values, while OS X (and iOS/Android) operates on ... I don't even know what, it simply feels utterly smooth instead of janky. But I also assume that this is the most difficult to fix :(
1) Size. I have huge hands. A 2015 MBP has a trackpad whose size I have yet to see on any Windows/Linux laptop. I'm too clumsy for IBM's trackpad and the tiny "touchpads" on usual laptops should rather be called "touchpadlets" because they are so small that most I have experienced have had my fingers awkwardly collide. I won't go back on non-Apple hardware until there is a decently wide offering of decently sized touchpads.
2) Drivers. Back with my last Windows laptop it was some Elantech touchpad with Elantech drivers. Installing some random drivers from some random other laptop on a forum hint somewhere in the 30th Google result area suddenly gave me a whole lot of gestures. Just... WTF? Why is this not a core OS component in Windows and has it been possible over the last five years (since I switched) to finally use gestures OOTB in Linux?!
3) OS primitives / integration. Windows and (IIRC, please correct me!) Linux operate on the concept of "steps" with absolute scroll delta values, while OS X (and iOS/Android) operates on ... I don't even know what, it simply feels utterly smooth instead of janky. But I also assume that this is the most difficult to fix :(
Am I the only one who prefers the red nubs on on Thinkpads? I find it very hard to use any touchpads. When I used a mac, I would carry around a mouse. I wish thinkpads would get rid of the touchpad. I'm perfectly happy with just using the nub.
It’s funny that people want this so badly that the site has been down for me the whole time it’s been on the front page yet it’s still getting upvoted to the top.
I have these settings in my .xinitrc on my ThinkPad T420, but never had to do anything terribly arcane to get it to work as I expect it to.
On other laptops I've had to reduce the "finger size" (I can't remember the name of the setting), so I could use it even with a light touch, but that's the biggest problem I've had with it so far.
exec xinput set-prop 'SynPS/2 Synaptics TouchPad' 'Synaptics Tap Action' 1 1 1 1 1 1 1 &
exec xinput set-prop 'SynPS/2 Synaptics TouchPad' 'Synaptics Two-Finger Scrolling' 1 1 &
exec xinput set-prop 'TPPS/2 IBM TrackPoint' 'libinput Accel Speed' -.3 &
exec xinput set-prop 'SynPS/2 Synaptics TouchPad' 'Synaptics Coasting Speed' 0 0 &
Sure, it could be more fine-tuned, but it works just fine that way.On other laptops I've had to reduce the "finger size" (I can't remember the name of the setting), so I could use it even with a light touch, but that's the biggest problem I've had with it so far.
With https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/1117 scrolling in GTK apps (including Firefox) is really smooth
I have this to ask about this project:
1) how exactly are you planning to cooperate with upstream (meaning Peter Hutterer, meaning Red Hat)? Suppose someone does the work, then what? libinput has issues open for years, including issues that have patches, how are you going to make sure yours is not going to get buried?
2) if there existed a programmer both capable and willing to pull this off, wouldn’t it make sense for them to set up sponsorship themselves and cut the middleman out?
1) how exactly are you planning to cooperate with upstream (meaning Peter Hutterer, meaning Red Hat)? Suppose someone does the work, then what? libinput has issues open for years, including issues that have patches, how are you going to make sure yours is not going to get buried?
2) if there existed a programmer both capable and willing to pull this off, wouldn’t it make sense for them to set up sponsorship themselves and cut the middleman out?
Duplicate of https://news.ycombinator.com/item?id=23039515, although the author apparently changed the title of the blog post.
Part of the Apple touch story is this:
https://en.wikipedia.org/wiki/FingerWorks
For whatever it's worth/if it helps with this journey - the trackpad on the surface book/surface laptops is the closest I've seen to the mac trackpads. I'm assuming it's some combination of hardware and software. From stricly a tracking/responsiveness perspective, I would say they're dead even. I like the multi-finger click options better on MacOS - I'm sure it would be trivial for Microsoft to implement if they wanted to.
A few years ago I was dual booting Arch on a 2013 Macbook Pro and couldn't for the life of me get the trackpad working nicely as it would on MacOS. Up until then I'd made the assumption that Apple trackpads felt the way they did mostly due to hardware. When writing code I'm using vim and am keyboard focused but I've become really used to browsing websites and docs using the trackpad on MacOS.
Edit: some formatting
Edit: some formatting
with my work enforced MBP most of the time i want to right click i end up clicking and triggering an unintended consequence just because i have my two fingers too close. On linux i never had this happen even on the cheapest touchpads.
Am I just the minority who finds touchpad on my GNU/Linux system reasonably functional and bug-free?
With a tool like Fusumu (https://github.com/iberianpig/fusuma) I am using three finger and four finger gestures just fine!
With a tool like Fusumu (https://github.com/iberianpig/fusuma) I am using three finger and four finger gestures just fine!
Can we also talk about pinch and zoom (e.g. image viewer or browser)? It seems that gesture is totally artificial for desktop Linux (we have it on Android though) and there are not even API interfaces existing for that trackpad gesture.
Hoping all Linux input libraries will get a lot more attention and funding in the future :)
Hoping all Linux input libraries will get a lot more attention and funding in the future :)
No way this is just a matter of paying a freelancer $50K. If that was it then System76 would have done it and someone would be rich from selling a closed source driver already.
And software doesn't even touch the problem that most of what's wrong with non-Mac touchpads is the universally lousy hardware.
And software doesn't even touch the problem that most of what's wrong with non-Mac touchpads is the universally lousy hardware.
This is a solved problem, isn't it? On my Dell M6800 with Ubuntu 16.04, the touchpad experience is very poor, I avoid using it. On my (Linux based after all) Chromebook Pixel (anno 2013) it's fine, never been tempted to connect a mouse.
Perhaps I should clarify: the difference is also a difference in usage: on the Chromebook I use the trackpad almost exclusively to select the current window or scroll its content, rarely set the cursor or highlight some text to be copied (the latter is already more challenging than with a mouse, I'd say). I haven't attempted to use a CAD program using the touch pad yet. So the touchpad works mostly fine for what a Chromebook is useful for, it's no replacement for a mouse on a workstation.
Perhaps I should clarify: the difference is also a difference in usage: on the Chromebook I use the trackpad almost exclusively to select the current window or scroll its content, rarely set the cursor or highlight some text to be copied (the latter is already more challenging than with a mouse, I'd say). I haven't attempted to use a CAD program using the touch pad yet. So the touchpad works mostly fine for what a Chromebook is useful for, it's no replacement for a mouse on a workstation.
Hardware-wise, I'm extremely satisfied with Blade Stealth late 2019 one. However, (on popOS) there's a slight issue with palm rejection. I occasionally activate it with my palm. Is there a way to make rejection more aggressive?
I have a pretty decent trackpad experience on linux. grated it has been a little glitchy but not as much anymore..
in any case I blame propietary vendors for preventing better open source support.
in any case I blame propietary vendors for preventing better open source support.
If anyone is curious to see what people think about Linux touchpads currently, here are some of the preliminary results with 9000 responses counted thus far:
https://public.amplenote.com/HbcoZf/touchpad-results-prelim
Average satisfaction looks to be around 2 of 5. People are excited about multi-touch, especially the double finger right click.
https://public.amplenote.com/HbcoZf/touchpad-results-prelim
Average satisfaction looks to be around 2 of 5. People are excited about multi-touch, especially the double finger right click.
A few comments here have mentioned that MacBook touchpad development is tied to iPhone touchscreen R&D. This might be stating the obvious, but could a similar effort be made by leveraging Android touchscreen R&D and code for Linux? [1]
[1] https://source.android.com/devices/input/touch-devices
[1] https://source.android.com/devices/input/touch-devices
I'm just curious what exactly the deficiency is on touchpads with Linux? I have a fairly commodity Acer laptop (Swift 3 w/ Ryzen APU), and the touchpad is accurate, sensitive (no noticeable lag at all), two finger scrolling works, tap to click works with one, two and three fingers, etc... I haven't changed any settings except sensitivity and whatnot in the standard Ubuntu settings GUI.
[deleted]
Since the site is slow, here's a direct link to the Github page to Sponsor the project.
They want to hire a developer to fix the issues identified by the survey.
https://github.com/sponsors/gitclear
They want to hire a developer to fix the issues identified by the survey.
https://github.com/sponsors/gitclear
Given how much developer-contempt there is for the new touchpads, its amazing to me that the opposite of this has not been tried by hardware hackers already (as far as I know).
That is, hacking in an old tactile (non-touchpad) keyboard into the top section of the latest Macbook Pros.
That is, hacking in an old tactile (non-touchpad) keyboard into the top section of the latest Macbook Pros.
- Take the Linux Touchpad Experience Poll: https://www.gitclear.com/polls/linux_touchpad_experience
- Become a sponsor on GitHub: https://github.com/gitclear/libinput (GitHub matches every donation up to $5k, so your $5 can become $10)
- Get paid $50/hr to work on libinput: http://archive.is/FGHTT (link to archive of the original article ty danso)