Linux touchpad: preliminary project funding, survey results
bill.harding.blog
bill.harding.blog
Perhaps someday I'll experience playing go without a mouse and risk of hypertension.
I'm typically not one to use the term - but godspeed, in this case!
Under which circumstances is disabling it on a software level insufficient?
I can't stand laptop touchpads on any OS (except Apple trackpads, which I admit are usable, but I don't own a macbook so this point is moot). I can't stand most laptop keyboards either. I use an external keyboard and mouse in every laptop, making them effectively "portable computers".
Fortunately, the trackpad flex cable only connects to the bottom pair of buttons, so unplugging the flex cable is a completely non-destructive process that leaves the trackpoint and mouse buttons completely functional and makes my laptop somewhat secure against other people trying to use it! I will admit that this non-destructive method lacks the catharsis that pliers could provide.
A few years back -- so I cannot blame the pandemic -- I was fed up with my old Dell XPS. It was originally a pretty awesome laptop, but it was reaching the end of its useful life and it had many quirks. One was a key that was acting weird. In a fit of rage -- and I trust you'll understand me -- I decided to remove the key to see what was the deal, and proceeded to disassemble the whole laptop to do so, tugging at cables, forcing the case, twisting things out of the way. Because YouTube tutorials weren't clear enough, I ended up destroying the laptop. I didn't even find the reason the key was acting up.
With the laptop re-assembled but clearly beat up, parts of it destroyed, my wife arrived, took a look and said:
"You know you could have removed the key without dismantling the laptop, right?" and proceeded to show me how. In my rage I hadn't even considered this.
I wanted to buy a new laptop, anyway!
Even based on the feedback, it seems that most people are okay with their touchpad experience and are more interested in advanced features like multitouch.
Having this said, for myself this is a tough sell. I'm concerned that I would donate and I won't be able to tell the difference between this and some placebo drivers.
Wayland with libinput has been a JOY to use compared to basically anything I've used in linux before.
I tried running an X based DE about 2 years ago on this machine and actually went back to running it in a VM in windows because the touchpad felt so shoddy.
No problems at all with the current setup. Can barely tell the different between my work Mac and the XPS.
From my view, this whole issue is resolved.
Two fingered scroll works by default
Sensitivity/Acceleration curves basically match OSX out of the box
Right click on two finger tap is easily enabled and feels good
Support for multi finger swipe (3/4 fingers) easily enabled and feels good
Palm detection is MILES better (I have huge hands and this is a serious problem)
---
Each of those was a serious issue 3 years ago trying to get things working through xinput (although again, I migrated to wayland about 1.5 years ago and have never looked back so maybe it's better now)
X and xinput give folks a TON of options, and in certain situations that's great. But most of the time (all of the time in my experience) it led to bad defaults and consistently broken settings after upgrades.
I genuinely enjoy the zero configuration approach Wayland has taken here with libinput.
I'm on a mac for work, and while I really disagree with Apple's philosophy, I can't argue that they provide a simple and fantastic touchpad experience. I get that by default on my current setup and it feels nice.
I genuinely enjoy most aspects of system management, but trial and error editing of magic numbers in an xorg conf file for my touchpad just sucked.
Reading through the comments it sounds like the real problem is Thinkpad trackpads suck for whatever reason and this is somehow getting extrapolated to "Linux trackpads suck".
How much of the surface of the Linux touchpad is clickable? I.e. how much of it depresses when you press on it, vs. the MacBook?
I’ve never seen a non-Apple touchpad that didn’t have a big dead zone in the back (closest to the display) 1/4 to 1/3 of the surface.
On the macbook pro I'm using clicks because tapping doesn't work as well as reliably, for example tap and drag.
Later edit - I tried comparing the clickable area, and indeed, the upper region is not clickable on my razer (TIL). I realized this only just now, because this not how I usually use touchpads.
I have to say I've never noticed that before. I always use tap-to-click (whether on macs or non-macs) and most of the time I click using the front 1/2 of the pad anyway. If I weren't using tap-to-click the dead zone would probably bother me though.
When I first got the machine, I spent weeks fighting with the driver, trying to figure out how a single number can represent four lines on two dimensions to define a region where palm-touch should be ignored. I still haven't gotten pointer precision where I'd like it; I simply know that getting within ten pixels is the best I can hope for without infuriatingly slow rocking and coaxing my finger around. It's disappointing to say the least.
Honestly what I'd like most, is a WINE-like shim to simply let me run the Windows driver in some sort of sandbox and take its mouse-events to the Linux input system. Synaptics has clearly done the work to make the thing behave the way I'd like, and it would be the coolest thing if identical settings were equivalent and portable between machines.
Finally, as a matter of personal preference, I found clicking the button on the touchpad is never a good experience - the pad is clickable, but only on its edge, or you could touch-click, but you need to constantly lifting your finger. The touch gestures are confusing as well, to this day I never figured out any of the gesture I could use. The device driver really should come with an animated tutorial. The only feature I found was scrolling at the edge or double-finger scrolling, but it's only useful if you want to scroll a few lines, rolling the entire page is a tiresome experience (unlike the middle-button scrolling on a TrackPoint).
As a result, I only use the TrackPoint on Thinkpad laptops. Although the TrackPoint is not completely free from the pointer acceleration issue in general on Linux (although I never found it to be an issue for me), the overall usability is much better because it doesn't have the physical design issues.
Even dumber is that Apple didn't do the obvious thing to make the giant trackpad pay off: Make the Pencil work on it! DUHHHH
I really don't think the trackpad is large enough for this to be broadly useful.
Now, if they'd just put a damn touch screen on their laptops...
Honestly I am not wanting for a touchscreen but if you are going to rant about how great “touch” is just swap the screen with an iPad and shut up.
While I’m ranting, the other year when I saw the Microsoft Surface Studio (https://duckduckgo.com/?q=microsoft+surface+studio&t=iphone&...) I thought, “10 years ago if you made me guess who made that machine I would have said Apple”
To a point where sometimes I prefer the track pad over a mouse.
Co-workers on the previous gen 15" pros also don't find this to actually be a solution. The issue is that Macbooks aren't a great investment for Apple, as the make more money in every other department, without anywhere near the upfront costs.
In more recent years I have noticed Windows machines have made some very good trackpads.
Not everyone has to be a developer - some of us may see better roles as funders, testers, project managers, etc.
Now I just realized that there is a github sponsor link, but it's recurring. I don't want recurring. I want to send $50 once.
follow the money. :)
I can afford a few bucks to help somebody to attempt to solve the problem. I'm even ok with failure as long as it's an honest attempt.
I would donate $0 for a stranger on the internet to try to fix it themselves.
I would donate $0 and advise others not to donate with an approach where there isn't even a developer driving this themselves ("Give us money, and we'll hire someone to fix it" approach), especially with the claimed problem, solution, and approaches.
With open source, it's easy to find people to do the fun, modular bits (acceleration curves, palm rejection, etc.). It's hard to find people to do the plumbing and the not-fun bits. If OP were to create a pipeline which:
* Supported the broad range of trackpads, tablets, styluses, etc. on the market
* Did this with clean abstractions and modular drivers (NOT wrappers around wrappers around wrappers of what other people have written, but the painful work of refactoring other people's code)
* Integrated with the desktop properly, potentially extending existing standards if necessary (NOT tried to replace the desktop with yet another standard no one supports)
* Handled the odd-ball cases (a touchscreen, a drawing tablet, a drawing display, AND a plain old monitor are plugged into a box. What happens?)
* Provided clean, simple, documented, pluggable APIs where people could tinker around with the fun stuff (anyone can make a new algorithm in Python and see it work in 5 minutes)
That would solve the problem.
For reference, their approach: "(1) evaluate which multi-touch features can be implemented with the least work 2) start to quantify the current nature of palm detection 3) measure how the acceleration curve of Linux touchpad compares to that of macOS. I have some ideas on how we might calibrate the acceleration curve to better match macOS, but it would be handy if anyone else has bright ideas on how they would attempt to quantify the touchpad acceleration curve on macOS (such that we can seek to match it here)."
I could be wrong about all of this, but that's what it would take for ME to donate. I guess the other approach is to accomplish something yourself and establish a track record. I WILL instead donate to DIGImend, where a lone developer seems to heroically be successfully bringing tablet support to Linux. That's an example of a track record.
https://www.patreon.com/bePatron?c=930980 https://liberapay.com/spbnick/donate https://www.buymeacoffee.com/spbnick
I'm sure this will go -5, since most critical posts do, but I find critical feedback to be more important than positivisty.
edit: Just donated to DIGImend.
The libinput project and pipeline was developed as a way of pursuing these goals, but it doesn't even have all the features of the legacy synaptics driver. It's not hard to see where the work should be going: start with bringing libinput up to feature parity (and fork the project if maintainers won't accept your changes upstream), then go further from there.
I personally disagree that device quirks should be straightforward for the end-user. The end-user shouldn't even care about this, the point is to make it so they don't have to mess with config files or a hardware database at all.
They may want to care because not every device will be in the hw database at the outset. Or the existing description may be incomplete, and fail to account for something that libinput supports. Good hardware support starts from users "scratching their own itch" by experimenting with "advanced", less-strictly-supported options to reach the best combination for their hardware, and perhaps their niche use cases. Testability is a red herring because only a few advanced options will ever be applicable; the issue is that they're different options for different cases.
In libinput, people who understand the problem and are willing to work with the developers and contribute upstream can edit the hardware quirks. The maintainer has also blogged about this: https://who-t.blogspot.com/2018/06/libinput-and-its-device-q...
1) Giving drivers ways to expose additional functionality through extensions (a thin pass-through)
2) Giving abstract APIs which allow transformations between the input and the output
3) Having the mess live outside. The maintainer maintains interfaces, but not the exponential explosion of one-of-features and quirks.
Examples of such architectures include themable / programmable window managers (e.g. Enlightment/xmonad/etc.), Photoshop/gimp filters/extensions, or EMACS.
Whether or not this is a good idea is a different question. I don't have an opinion there. I definitely would have had time playing with something like this as a teenager. I just expect things to work as an adult with adult responsibilities. A lot of this comes down to target audience, resources available, and other questions which I have zero insight into.
If that were true, there wouldn't be crowds of people telling that palm rejection in Linux sucks balls. Seriously.
As someone who did dabble in libinput for my own needs, I probably qualify to tell you where exactly you can shove your $250 and your condescending ignorant attitude, and how deep you can shove it, too, along with the horse you rode in on.
> If that were true, there wouldn't be crowds of people telling that palm rejection in Linux sucks balls
Reading comprehension. Or intentionally selective misquoting. I'm not sure which one.
I said: "Provided clean, simple, documented, pluggable APIs where people could tinker around with the fun stuff (anyone can make a new algorithm in Python and see it work in 5 minutes)"
Point me to that, and I'll eat my words. My claim is that IF you provide all the plumbing and infrastructure, people will do the fun stuff. Plumbing isn't fun, though.
In either case, I don't think an inability to read "qualifies [you] to tell [me] where exactly [I] can shove [my] $250 and [my] condescending ignorant attitude, and how deep [I] can shove it, too, along with the horse [I] rode in on." It qualifies you for remedial third-grade reading classes. :) I highly recommend them.
I think I'm perfectly qualified to decide where to spend my own money, and it just went to DIGImend.
Reverse engineer the drivers and platform frameworks?
Edit: I'd gladly donate $2 or $3 per month.
Doesn't anyone own a table for eating where you can use your laptop as well?
I've been owning laptops for 12 years now and never used it on my lap. The only times I saw people use laptops on their laps is on TV.
If I wanted a computer I could only use at a desk with a mouse, I'd have bought a desktop.
You're right, though. I try to avoid doing that whenever possible.
With libinput I have found that multi-touch gestures work really well we are just missing application support. It seems that this project doesn't aim to work on applications at all so for me it seems like they are barking up the wrong tree. For example I would love to have Firefox wired up to linux three-finger swipe gestures for forward/back (and I bind down -> Scroll To Top and up -> Close tab).
The quality of trackpads outside of Macs used to annoy me to no end, but my 2018 zenbook with libinput isn't that bad. It's like 80% of the way there for a quarter of the price.
That's great, this is one of the few things left that held back Linux desktop, and it wasn't even that bad with some tweaking but it shouldn't need tweaking. Gnome has made drastic improvements in recent years as well.
Now if only companies would fund proper open source graphics drivers then there would be no reason for developers to not use Linux. Otherwise you need to buy a laptop with Linux in mind and you'll be fine.
Performance in various Steam games (native as well as emulated via Proton) has not been a disappointment.
That said, previously had an NVidia card that worked okay with Ubuntu, but required enabling some proprietary drivers. It worked fine, but was an extra hoop to jump, and using proprietary drivers sticks in my craw.
If I did anything on my desktop that relied on CUDA, I suspect I’d be stuck with using the proprietary NVidia drivers.
(Background to my ignorance: While I do (very) occasionaly use MacOS, I usually default to the terminal as it's more familiar... and probably spend most (60-70%) of my time connected to linux or unix-like systems via cli/ssh... from a Windows system.)
Are we talking touch gestures or something? Or multi-finger things? Are they really that massively different? Surely a touchpad is a touchpad? (Not counting those awful things without proper buttons).
Large tracking surface. No dead zones, which can't be touched or tapped. Fantastic palm rejection. Gestures that work reliably, and never over or under-detect fingers.
Its not really to say that the Apple trackpads are better at their best than the other vendors, as much as it is that the other vendors often behave in unpredictable ways. I used to have a Thinkpad which worked every bit as well as my current Macbook trackpad when it worked right, but which would frequently fail to recognize a finger during a scrolling gesture, couldn't be clicked on the portion closest to the keyboard, and occasionally the palm rejection just wouldn't work. The minor annoyances over time add up to a much more frustrating experience.
I've seen all this across many laptops running Linux and Windows, including Macs, which leads me to believe that that the issue software.
Yes, macOS is definitely more consistent in terms of UI toolkits, of course.
Stick to GTK apps (with libinput on your system of course) and everything should be great :)
In Ubuntu right now: Firefox seems pretty intuitive, one trackpad-height worth of finger movement results in roughly one screen-height worth of window movement. That's great.
But LibreOffice Calc, for the same amount of finger movement in the upward direction, scrolls about 3 screenfulls up. And bizarrely, for the same amount of finger movement in the downward direction, scrolls about half a screen.
Discord desktop app (which I assume is Electron like everything else), scrolls about 1.5 screens per touchpad-worth of finger movement. That's acceptably close to Firefox and not disorienting.
Gedit scrolls about 2 screens per touchpad.
Arduino IDE scrolls about 2 screens per touchpad.
How on earth can these be different? And how do you even start to fix that?
Looking forward to a driver that fixes those for you...
- super smooth. Scrolling and everything just feels right. They do a lot of low level software magic to make that happen. Off topic: If you ever try to reimplement a scroll view on iOS you will see how much effort is needed to make it smooth - even if you have access to all the same APIs
- biiiig trackpad. I find this especially important when I have a big external monitor plugged in. I can easily move the mouse across two screens without lifting the finger. And very good palm recognition to avoid accidental presses
- the haptic feedback is amazing. The entire surface is stiff and the feeling of a button click is done entirely in software + haptic feedback. Once you are used to it every other trackpad just feels old and cheap (same with iPhones and taptic engine actually)
- Gestures and what you can do with them (OS X spaces!) is really well done. On many other systems a gesture will only work via on/off states. On Mac you have continuous gestures (you can undo/go back at any point) and that makes a big difference in terms of how fluid and smooth interactions will feel
GNOME 3 does this correctly (but spaces are vertical), I think KDE Plasma too, and I have personally implemented this gesture in Wayfire :)
thank you, that's a great pointer in case I look into that some more. Found https://github.com/koekeishiya/yabai/issues/148 which might be a good entry point for me
This kind of software is completely foreign to me. Private APIs and all these tricks for macOS integration. Very interesting
Also, is there a way to make a one-time donation rather than an ongoing monthly pledge?
Last time I tried libinput, I couldn't disable acceleration on touchpads. "Flat" acceleration profile still had acceleration.
The way MacBook touchpads work always irked me, always felt off. But maybe it's necessary for MacBooks with their enormous tachpad surfaces.
The really thing I want is * left click on the left side of the touchpad * right click on the right side of the touchpad * right and bottom area to scroll (with ONE DAMN FINGER)
As a person who just wants the MacOs experience, I'll gladly support the fact that you should be able to make it work the way you want too.
Oh, and, 'tap to click' should be default.
You're definitely in the minority on that.
> Oh, and, 'tap to click' should be default.
Okay, now you're just trolling.
The one thing i love about Apple touch pads is 'natural scrolling'. What a beauty.
It's unfortunately distressingly common in software, but especially Linux GUIs, to fix one thing by breaking three others instead of identifying a better framework to fix the root cause. The Linux kernel does seem to be good at that last part, but not the desktop projects.
I keep meaning to try KDE Neon or switch back to Mint or something, but I have very little desire to mess with my OS these days.
That's because there are a shitload of them, there's way more than just the big players KDE and Gnome. Then the stack is highly complex with technology in the mix that is decades old (X11 dates back to 1987, that stuff is older than me!), and political infighting between competing (corporate or personal) interests doesn't help this either.
Android has multitouch solved, but at the cost of building everything from scratch and lots of stuff still being kept in proprietary firmware blobs for touch controllers. And there is only one Android stack, not two dozen...