Hacker News new | past | comments | ask | show | jobs | submit login
Linux touchpad: preliminary project funding, survey results (harding.blog)
224 points by wbharding on May 19, 2020 | hide | past | favorite | 169 comments



Perhaps the only thing other than a certain leviathan that I loathe in Linux, is the touchpad. I have butchered laptops as a result of touchpad induced madness. I've tried synclient and other tweaks to no sufferable avail. My present laptop has the touchpad removed by pliers. I used the term "madness" sincerely. I think the present situation might be eligible for a place in the wiki for Unethical Human Experimentation. Of course, Linux is not entirely to blame; the physical quality has declined immensely for most touch/clickpads.

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!


> My present laptop has the touchpad removed by pliers.

Under which circumstances is disabling it on a software level insufficient?


An emotional one.


I like your honest answer.

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".


Now there's something you don't see every day.


I love this and your subsequent responses. I want to share one of my own.

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!


My ThinkPad has two sets of buttons - one with a middle mouse button below the spacebar, and one with just left and right click below the trackpad that practically hangs off the bezel.

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.


By the way, modern touchpads support HID feature reports to disable surface and buttons. Usages 0x57 / 0x58 in the Digitizer page. The Linux driver is aware of those but uses them only to ensure that everything is turned on. I think that it really should expose an interface for a user to control those bits.


Have you considered (if you’re in a position to) purchasing a tablet to use as an oversized trackpad? My Wacom has come in a handy a few times I didn’t want to use the pen and I forgot my mouse somewhere (my laptop trackpad is not great).


I've set easy keyboard shortcuts to enable/disable the touchpad, and that has been working for me. But I understand how you feel, the palm rejection is especially terrible, no matter how I try to tweak it.


[flagged]


Thanks for the psychoanalysis. Two of what you mentioned are inevitable. The exercise part is taken care of by the default settings which require multiple laps to impel the indolent pointer across the screen, and finally, I meditated deeply during the excision. See; you're a pretty astute therapist after all.


Thanks for the chuckle.


For people that are highly invested in their work, the computer is more than just a tool, it is an extension of themselves as it is their link to their deep-seated passion. I feel for the author as I have had to deal with terrible technology hampering me at bad moments as well. I wonder what is preventing them from trying something like a Mac. I have three computers under my desk (Windows, Mac, and Linux) and I always find Mac to be the least bad experience(although all three are regressing in my opinion).


Years ago when I had to switch from Linux to Mac for work, the different keyboard shortcuts for simple things like copy, paste, word left, move selection with cursor, etc. killed me. There are ways to change some of them, but Electron apps and various websites have hard coded emulations of the defaults.

My coworkers simply refused to empathize with my frustration, but it's seriously like having a malfunctioning limb when a neurally deeply learned technology starts failing you.

Imagine a nightmare where when you try to open your hand and it closes, you try to move your arm outward and it smacks you in the face, you try to look down and your eyes instead flail randomly, and your legs are moving in slow motion while the monster is hunting you down.


Now imagine coming from years of Mac use to Linux or Windows, and discovering to your horror that because the modifier key on those platforms isn't cmd but ctrl you cannot do many of the default shortcuts you're used to in the terminal.


Yep, Apple really nailed it with that choice. Not only can you use GUI key combos in the terminal, but also you can use terminal line editing key combos in the GUI. That's something that seems like it ought to be possible in Linux, but afaik it is not.


One thing one my wish list of things that will probably never happen is an extensible EMACs, Jupyter hybrid with a full on highly extensible dependently typed programming language. By keeping the specification of the components as abstract as possible, one could reinterpret the same code to give a completely different and customizable user experience. Probably with a lens based GUI toolkit for interactive widgets.

I have no idea if it is possible, and maybe I should be the change I want to see in the world.

EDIT: I realize now this doesn't quite follow the conversation, but I wanted to get the thought out somewhere.


OK, I'll bite that sandwich.

Can you expand some of these points? I fail to understand (I need an ELI5, first principles)

I think I get the premise, EMACs/Jupyter hybrid with ext. prog. lang. (+1 for typed).

> By keeping the specification of the components as abstract as possible, one could reinterpret the same code to give a completely different and customizable user experience.

Custom UX is my pet peeve, has been forever since the 1990s. I have intuitions but no clear understanding of what you mean here. Does that essentially mean decoupling model/view, a more modular or stateless metaphor?

> Probably with a lens based GUI toolkit for interactive widgets.

lens? (impossibly hard for me to Google what that generic word refers to, I just tried)

————

I'd like to 'get' to the essence of the paradigm you're suggesting. What the 'magic' is, its endgame, what it 'feels' or looks like.


Maybe they're referring to this? https://en.wikibooks.org/wiki/Haskell/Lenses_and_functional_...

As for the "abstract specification", I interpret it as decoupling the view from the model too, but maybe expressing how you can represent the model? Like "option" being representable by a dropdown or radius buttons. I don't know, I agree it's vague.


So there are sort of several ideas floating in my head. Keep in mind, these are very loose and I am talking way out of my league here.

I said lenses, but the more general term is optics (still vague and unsearchable, I know). A certain representation of optics was popularized in Haskell by Edward Kmett partly as a way to solve the record access problem, but they are way more useful then that.

Lenses, in a context of programming, can sort of be seen as a vast purely functional generalization of l-values.

When you are manipulating affordances in a user interface, you can view it as manipulating part of larger state. That is something that fits very well into the framework of optics. A simple example would be a color picker using different color models. HSV and RGB are both views of the same object. A slider for each of hue, saturation, value, red, blue and green can be seen as a lens from color to a magnitude. By adjusting the slider, you change the state.

Some parts of a user interface are dynamical systems, i.e. evolve over time based on state and locally available actions. One can imagine a platformer game with changing player position, or a media player with a slider. FRP delves into this, but I'm not too familiar with the literature. I am vaguely aware that lenses can be connected to dynamical systems, but I don't understand it at all.

As far as reinterpreting code. In Haskell and typed functional programming in general, there is this tower of different abstractions you can use to describe different levels of reified computation (Functors, Applicatives, Arrows, Monads). You also get effects systems, which make it more tractable for the layman that doesn't want to read ω+1 monad tutorials.

In these abstractions, one can make "free" constructions, which sort of have the flavor of making the thing as syntactic as possible while still following the laws that must be upheld by the abstraction. This makes it possible to write code separately from the way it is interpreted.

I only have a vague feeling that these concepts will fit well together. Perhaps my head is too far in the clouds.

EDIT: As far as model view separation, that it is. But the idea is to stratify it even further. You have your larger state of the whole application in which you can increasingly select parts of the whole and manipulate them. The lens part not only captures the translation from the model to the view, but also from actions on the view to the model.


Replying because its too late to edit EDIT: I'm struggling to find the source connecting lenses to dynamical systems. I might have misremembered, and was pretty tired, so take that with a grain of salt.


That's a lot to take in, let me get back to you a bit later.

Extremely interesting, I must say at first glance. You're definitely technically stronger than me in most of these topics, I'll have to work on it a bit to clarify some of these concepts.

Thanks for an insightful and candid thinking out loud. Much appreciated. I wish other people would chime in as well to further the discussion, I'm afraid I won't be able to elaborate much technically but rather speak high-level UX concepts. What's interesting is that your general approach seems to answer an essential problem (and opportunity!) in systems whose complexity far exceeds human cognition (that's what I get from the 'lens', not what's on Google about it but the object in your head you call as such; it is sometimes hard to explain such things in a word, rather takes a book chapter).

Thanks again, I'll revisit this WE.


How would Emacs with a typed programming language work with function redefinition?

One of the benefits of the environment is I can change code very easily and see the changes quickly. But with types I'm not sure how you'd change the signature of a function and get it to recompile if it's already used elsewhere.


That's one thing I have been thinking about. I think Haskell and other statically typed functional programming languages would benefit from a more interactive REPL like experience for "non-pure" programming where you are sort of changing the wheels on a moving car.

This has a very reactive flavor, so I think you could have a sort of functional reactive approach where your hot-swappable definitions are represented as behaviours over time.

How to make that get out of your way until you actually want to swap things out, I have no clue. I think it will involve some sort of effect system, but I'm not sure if that will solve the problem.


I realize now that you were talking about changing types, which I didn't factor in. I guess what would happen is you would cascade the hot swapping, reloading anything which depends on the function for which the type has changed.


I can't speak to Windows but at least on Linux that's entirely determined by your desktop environment and terminal emulator. For example, KDE offers near complete configurability of keyboard shortcuts including the ability to specify different sets of active shortcuts based on an application being open or in focus. Taking it even farther, you can use xmodmap (deprecated but simpler) or xkb (full functionality but more complicated) to completely redefine how physical keypresses are translated into software events.

You can do virtually anything on Linux if you're willing to invest the time.


Yeah, I've set it up before but there's always a program or two that doesn't pick up the settings. And you still don't get the ctrl-<letter> line editing tools in text boxes like you do on Mac OS, so I feel it's more trouble than its worth.


Luckily I haven't run into that, but then I'm not using any commercial software currently and the stuff in the official repositories tends to work the way you would expect it to. Generally your settings should work pretty much independently of any program you happen to be running - xkb in particular is processing the key events at quite a low level.

Regarding the line editing tools you mentioned that sounds to me like something built in to the native UI toolkit (I'm just guessing here though). Reconfiguring how physical keys are interpreted can obviously only do so much. I'd never heard of those shortcuts before and they sound like a really useful feature.


Huh, last time I tried it, I think firefox had trouble picking up my settings. I think that was more than five years ago though, so it's likely things are better now. :)


I didn't have that much trouble switching initially.

However, when I have a task that requires continually switching between Mac and Windows machines, it gets annoying. Double that frustration again when I'm using a Windows VM on a Mac.


I also spend many hours per day on the computer, both for work and leisure, and for this reason I have invested money and time finding high quality: chair, desk, monitors, headphones, mouse and keyboard.

I understand that not everyone has the luxury of space for a full WFH setup but I can't imagine doing 8-10 hours per day with only a 14" laptop at the kitchen table. This is why, for me, a Mac quality trackpad experience on Linux is closer than a nice-to-have than a necessity.


Interestingly I've been using a 12" laptop as my daily driver with a crappy chair, desk and earbuds and no monitor for over two years and I've had no cardiovascular problems so far. Stressed people are quick to blame their environment (tools and whatnot) but fail to take a hard look at themselves.


Genes and your body's physical characteristics have a lot to do with it. I have a slipped disk in my neck from bad posture related to using missized chairs and desks while looking down at a 12" laptop for years and I'm not even 30 yet.

The combination of slouching your shoulders forward to keep your hands together and face-down for typing on a small keyboard, and looking down exacerbate such problems, faster for some than others—unless you happen have the build of a horse jockey.


Same here, except it's an 11" MacBook air! And I'm old enough to remember Clinton's presidency well.

I think some of us are lucky to have a flexibility gene activated. I have a 24" display I sometimes plug it into, but I've been working off this setup for a few months and it's fine.


Age?

:->


Old enough to be mindful about the health consequences of worrying about the wrong things and not worrying about the right things.


I'm merely asking because the things I could get away in my 20's and things I can get away with in my 40's appear to be wildly different, and I don't seem to be an outlier in this respect :)

(mind you, for me second monitor is about sanity/efficiency, not ergonomics; but a well adjusted chair, keyboard and mouse make a stunning difference to my fingers & wrists these days)


But there are many alternatives. My suggestions are one such alternative. Getting a Mac is another. Or using a mouse. Or switching to a keyboard-only workflow. None of them need to involve killing yourself because a crappy touchpad driver is between you and your "deep-seated passion".


Says the guy using a Mac, the best touchpad within 5 parsecs.


Actually such an aggressive response (from the GP, not you) is precisely the kind of thing I'd expect from someone who has an easy life. I live in pretty crappy conditions, including a crappy computer with crappy touchpad drivers. I just refuse to let such mundane things give me hypertension.


I have an old X1 Carbon that I use at the grunge travel laptop, like throw it in the backpack in a paper bag and go for a hike level of grunge.

Its trackpad is junk, phantom movements, zero palm rejection. I coded up some lock scripts so that it locks out the buttons if the cursor is moved. I fantasize about DeepTrack, the AGI that will finally give me trackpad bliss on a Linux desktop.


You might want to give the latest fedora a try, we've got the same model and it's flawless for me.


I can hardly tell the difference between my razer stealth linux touchpad and my workprovided macbook.

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.


I'm in exactly the same spot with a (reasonably old 2017 model) Dell XPS.

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.


What is the difference between wayland + libinput and X + libinput precisely?


Maybe it's just time and continued development on libinput, but the differences I found are:

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.


Yeah I don't have a problem with either my Asus Zenbook or my HP Envy.

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".


I can hardly tell the difference between my razer stealth linux touchpad and my workprovided macbook.

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.


That's a physical limitation because the touchpad hinges from the back. No new touchpad driver is going to fix that.


And the Apple touchpad doesn't hinge at all! The "click" reaction you get when you press it is simulated by a set of force sensors and an actuator that vibrates the trackpad to simulate a click.


Apple trackpads used to hinge 10 years ago.


Actually, they used to sell a trackpad that did that until last year!


iPad pro still does.


The trackpad on the Magic Keyboard doesn't have a hinge at the back, there's a single button under the center and a lever that runs under the sides which actuates the button and makes the physical click movement: https://www.ifixit.com/News/41291/dang-the-ipad-pro-magic-ke...


Testing my (several years old) XPS 13, perhaps the back 1/4 is noticeably harder to click than the rest, and the very back 5-7 mm is unclickable.

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.


Well, I'm using tap to click which is what I prefer.

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.


Do you click with your "aiming" finger? I usually have tap-to-click turned on and do tap that way, but on any touchpad, MacBooks primarily until recently, I always click with my thumb on the bottom quarter, where older touchpads had a separate button. Is this only because I started on those old-style touchpads?


I started on trackpads with the separate buttons, but now click with my index finger. I’ve found that the longer I’ve used the MacBook touch pads (and especially since they went fully non-mechanical) the more I dislike other touch pads.


What environment and config produces that result for you? I can definitely tell the difference under KDE, libinput and good old X.


This is still the most frustrating thing about Linux for me. I have two Thinkpads, a T460 running Windows from my employer, and a T560 running Ubuntu as my personal. Their touchpad hardware is, of course, identical. The experiences couldn't be more different.

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.


Am I the only one who finds the Synaptics trackpads on many laptops are simply a nightmare in itself regardless of the operating system due to the physical design? Not all Synaptics trackpads are created equal, on some machines, the surface friction just doesn't feel correct, making the pointer acceleration difficult to control. I know I was probably using it wrong and I should've spent an hour tweaking the parameters in the Synaptics Windows Driver, but I don't really know what's the best for me. Even worse, some Synaptics trackpads have cheap plastic that worn out after a year or so, creating an uneven friction, making the navigation a difficult experience. I know I could replace it, but making the touchpad as a consumable item is not a good design. Also, on many ultralight machines, the available space is simply too small to have an adequate space for plamrest.

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.


The trackpad on Macs is one of the major reasons I stick with Mac laptops.


Same, despite the overheating issue with my model, and the copious amount of OS issues with the more recent releases, I’ve yet to find a laptop that comes close to Apple’s track pad.

To a point where sometimes I prefer the track pad over a mouse.


You’ve probably already heard about this, but there has been a large discussion about how charging from the traditional left side of 15” (and I believe 16”) MBPs results in heat and fan issues. A lot of people have had improved results just by switching power to the right.


Not for me on 16" 2019 Pro, the fans spin right up as soon as I start a Slack call and the base starts to melt rocks after about 15 mins.

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.


That is just ridiculous.


Not more than the previous keyboards which can't handle a spec of dust under the keys.


Currently using a third-party 'mag-safe' adapter and after changing to the recommended side, have had much less issues with heat


if what you have told me is true, you will have gained my trust


This was on HN about a month ago [0].

[0] https://news.ycombinator.com/item?id=22957573


If you have a machine more than a year old, take the bottom cover off and clean the fans. It really helped my 2018 MacBook Pro.


Except it's way too big now, resulting in spurious cursor-jumps, erroneous right-clicks... it's dumb.

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


> 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...


I remember yelling at my computer screen during some Apple announcement while some VP pontificated about how touch is the natural, convenient, intuitive, superior etc. approach all while ignoring the GIANT SCREEN.

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”


I remember years ago after I had switched to Apple using a Windows laptop and I thought, “How is this trackpad even acceptable?”

In more recent years I have noticed Windows machines have made some very good trackpads.


This is one of the reasons I like WSL, it uses the windows drivers for things but I get the Linux user land (and much of the kernel with WSL2).


So are you backing the project then?


I read everything I could about what the project aims to accomplish, and none of it sounds like the things I find frustrating. Making it "more like a Mac" will not solve a single one of my issues. Palm touch ranked super low and pointer precision wasn't even mentioned. So, no.


> There's currently a gaping chasm between the 35 sponsors who have supported the project on GitHub so far (thank you!!!) and the 309 poll respondents who indicated they would donate to this cause.


I answered the poll, and said I would pay $50 for this, but never received any follow up (and I think I provided my email, I usually do in polls if they give the option).

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.


I am in exactly the same position. Happy to donate $100 once, but mot happy to sign up to a recurring subscription.


I would also donate 25-50$ to this, but once or twice. No recurring please


You can sign up, pay once, then cancel.


Why should the onus be on me to make sure I don't pay more money than I want? I can't stand this 'just subscribe then cancel' mentality. I would like the option for a one time payment for things without having to fuck around starting and cancelling subscriptions. It's just ridiculous.


> Why should the onus be on me to make sure I don't pay more money than I want?

follow the money. :)


So many companies made unsubscribing too hard that I wouldn’t even try it with github.


I just did this, and it's very easy. After you cancel, GH even puts up a multiple-choice "why did you cancel?" survey, and one of the options is "wanted to make a one-time donation".


Perhaps they should make that an official option at that point…


The poll respondents did not indicate they would be willing to donate to the cause. They indicated they would be willing to donate to "fix it". There is a very big difference between paying to fix a problem and paying for a stranger to work on a project that may end up fixing the problem one day.


Honestly at this point I wouldn't care. Give me a kickstarter link with a the poll author as the champion, and I would insta send 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 think a successful way to do this is Neovim's BountySource which was perfectly run, imho. There was a "if it hits $x tarruda will work on it" thing which is all I wanted.



But who is that guy and how would the money be used? From his profile it doesn't seem like he is a Linux developer.


I'm someone who's highly interested in this and am not a linux developer either. He's been trying to evangelize this effort for years.

Not everyone has to be a developer - some of us may see better roles as funders, testers, project managers, etc.


He's not, but he's going to hire a developer who can develop this. The full donation will go to said developer.


Well, let me put it this way. I would donate $250 to fix it. I think that's how much working support for touch, trackpad, and pen input would be worth it to me.

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.


> If OP were to create a pipeline which: ... That would solve the problem.

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.


Forking libinput is unwise and would likely not be productive choice. The maintainer of libinput and the synaptics driver are the same person, and he has blogged several times about why the synaptics driver was a mess and was impossible to test and maintain. https://who-t.blogspot.com/2016/04/why-libinput-doesnt-have-...


First of all, whether a "hardware database" is a better place for a device-specific option than a "config file" is just semantics; what actually matters is that supporting device-specific quirks should be straightforward for the end-user. As for user-facing options, if the maintainer thinks they are 'too expensive' to maintain in the code, that means the existing architecture of that code is misguided and should be refactored.


It was already refactored, into libinput. The issue with testability is not about the code being badly architected. The fact is if you have 100 config options and 1000 supported hardware devices, you must test all possible options and now your test matrix has something on the order of 2 ^ 100 * 1000 cases to go through. This combinatorial explosion is unsustainable.

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.


I can come up with architectures which avoid the combinatorial explosion of test cases. Most of these hinge on two pieces of architecture and one of organization:

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.


> The end-user shouldn't even care about this

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.


It's not a red herring. Those advanced options still need to be tested and maintained. If no one tests and maintains those options, they will break and users will complain again and you're right back where you started. The idea is that it's better to just remove them instead of creating a false expectation that they're going to work. I personally would agree with that decision, at least in this case anyway.

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...


> 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

Reverse engineer the drivers and platform frameworks?


> With open source, it's easy to find people to do the fun, modular bits (acceleration curves, palm rejection, etc.).

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.


>> With open source, it's easy to find people to do the fun, modular bits (acceleration curves, palm rejection, etc.).

> 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.


Ahh, the ol' conversion funnel. Applies any time you want to separate someone from their money.


For me the problem is that the minimum of $5 per month is just too much. I would like to see this work done, but not for $60 a year (plus fees?). I fall into the category of being alright with the state of my trackpad, so $60 is just more than I will give.

Edit: I'd gladly donate $2 or $3 per month.


Damn, for $60 you can get one bangin' mouse to carry with you and problem solved.


Maybe so, but there'd still be so many problems left! And they need money too.


I can't use a mouse on my lap, though.


Just out of curiosity, why do you need to do work on your lap? The posture is really bad and unhealthy.

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.


I use my laptop on my lap or in bed all the time. I own a couple of perfectly fine mice, but the reason laptops have touchpads built into them in the first place is that they're not always well suited to mice.

If I wanted a computer I could only use at a desk with a mouse, I'd have bought a desktop.


The main example I can think of is when I'm not home--sometimes it's nice to be able to use my laptop in a not-very-accommodating public space, like on the bus.

You're right, though. I try to avoid doing that whenever possible.


Off topic but did anyone else notice that this entire blog post is actually hosted on a site called amplenote? With uMatrix enabled, the wordpress blog just shows an empty post with a broken iframe. Is this a common architecture? What's the purpose?


On my system the iframe is really small but the content is in there. I've seen a bunch of sites doing this recently and it's quite annoying.


Just to be clear my settings deliberately block iframes by default until I allow them. I just thought it was odd that the whole Wordpress blog is literally window dressing.


My guess would be that it allows the author to push notes from his note taking software to his blog directly.


I've used a mac occasionally and there are really only two features I miss from the trackpad level: - Add a finger to click. This is very useful to be able to click without stopping dragging your finger. - The acceleration curve for pointing feels more natural. This was surprising to me because I use Linux primarily but I feel like I hit targets slightly more on MacOS.

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).


I guess it helps not to get used to "better experiences" just judging by the comments here. I bought a laptop and and have dual boot but use linux primarily. Every time I'd have to use Windows, it would be a serious frustrating pain in the ass. A lot of these things I am 999% convinced are just based on familiarity than actual ergonomics.


Well, the Mac trackpad is an absolute joy to use..

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 the main problem with suse, rh, Ubuntu, ibm etc contributing to linux. they pay designers doing a job on their macbooks or windows. Ubuntu went as far as forking the WM and suse for the longest time looked like every application was a windows installation wizard.


Looks like the number of contributors have doubled since this post hit the frontpage.

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.


Re GPU: Running a desktop with a shiny new AMD 5700-xt, and it has been pretty excellent. Only nit to pick is that I had to add a small bit of configuration to enable FreeSync support with my monitor.

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.


I'm faintly curious, how does the MacOS "Touchpad Experience" referenced in question #1 differ from the Windows one? (Or any other OS?)

(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).


You'd think "surely a touchpad is a touchpad", but the reality for most heavy users is that Apple really does have an experience substantially better than most in this area.

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 noticed that two-finger scrolling, which should be one of the easiest things to get right, is wrong on basically anything that's not MacOS. Windows and Linux arbitrarily insist on 3-line scrolling in a lot of apps. Even when pixel scrolling is technically available, it works poorly. It appears small movements are ignored, and then once you've hit some sort of distance threshold the scroll "jumps" to register the whole movement. There's weird delays where you need to "un-touch" the pad before you can transition from moving the cursor to scrolling. The scroll gets "dropped" after a while even though I still have two fingers on the pad.

I've seen all this across many laptops running Linux and Windows, including Macs, which leads me to believe that that the issue software.


Actually on Windows, 3 line scrolling is a configurable default in the control panel. On X/Linux, on the other hand, is where it's hard-coded to 1 line and there is no way to change it to 3 without having undesired side effects (such as scroll events being fired 3 times).


But no matter what you set it to, an inch of scroll motion on the trackpad results in a different number of screen-inches of window movement, between different apps.

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?


They all use different UI toolkits, some are gtk, some are java UIs, some are electron-based apps. So that's why - it's a higher level problem that is unfortunately inherent to desktop fragmentation which is hard to avoid on linux.


> Windows and Linux arbitrarily insist on 3-line scrolling in a lot of apps

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 :)


> Large tracking surface. No dead zones, which can't be touched or tapped.

Looking forward to a driver that fixes those for you...


much much much better:

- 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


I've done some reverse engineering of the macOS Spaces implementation and it is really all the way through the stack; Dock creates animation transactions and everything in WindowServer to make it work. You really need deep integration to have something like that be smooth and work well.


any chance there is a writeup on this anywhere?


I don't think I have enough for a writeup; I was actually looking into how Dock manages spaces so I have a bunch of general information on the SkyLight/CoreGraphics API. In short Dock grabs trackpad events and creates "SLSTransactions" to animate the windows around, but if there's anything in particular you're curious about I can try to go look that up specifically.


> SLSTransactions

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


Yeah, window managers are generally the biggest consumers of that set of APIs (although even yabai only uses very few of the ones available). If you have more questions feel free to ask, although of course as these are all private APIs I may not have correct/any answer for you.


> Gestures and what you can do with them (OS X spaces!) is really well done

GNOME 3 does this correctly (but spaces are vertical), I think KDE Plasma too, and I have personally implemented this gesture in Wayfire :)


The touchpad on my Lenovo X1 Extreme has a noticable delay (maybe 300ms) of when it starts working after I used the keyboard. Instead of real palm detection, it gets into some kind of sleep mode.


I've been using Ubuntu since 2009, two HP laptops and zero problems with the touchpad. I used the first one with Windows for two years and the touchpad behaved better with Ubuntu than with Windows. I think the improvement was two finger scrolling instead of sliding on the right edge. I used only Ubuntu on the second laptop so I can't do any comparison but I never felt anything wrong with the touchpad. HP nc8430 and ZBook 15 first gen.


After using a Steam Controller for a couple of years, I would love to use its trackball-emulation feature with my laptop touchpad. Would anyone else like to see this feature experimented with?


I'm a little unclear on how close to the funding goal this is. As far as I can tell, the goal is $10k total, but the current funding level shown is per month. Does it just mean that work can't begin until the accrued balance reaches $10k?

Also, is there a way to make a one-time donation rather than an ongoing monthly pledge?


I just hope that libinput matches the xorg synaptics driver before it is deprecated. On every major OS release, I try the live cd to check if the touchpad with libinput is on par with synaptics, but it isn't there yet.


libinput has been far ahead of xorg synaptics since forever.


As a touchpad-ignorant person (I have not used Macbook touchpad, so I don't know what I'm missing) Linux touchpad support had always seemed fine to me until distros started using libinput by default.

Last time I tried libinput, I couldn't disable acceleration on touchpads. "Flat" acceleration profile still had acceleration.


If you're happy with the current state on linux...don't ever use a macbook trackpad. It'll ruin you.


Interestingly, I seem to have had the opposite experience of many people in this thread. On windows, the touchpad driver uses this annoying tray application, defaults to "tap = click" (does anybody seriously like this behavior on trackpads with physical buttons?), and also includes some easy to trigger gestures I often hit causing my windows to do something stupid. On linux the drivers have always "just worked", felt like similar mouse movement/scrolling to windows, and didn't come with tap to click or gestures I never used.


Color me stunned that people are so dissatisfied with their touchpads in Linux. 0-3 lines of options in my config have made me perfectly content with every touchpad I've ever used in Linux.


Care to share? Would be really appreciated


I am away from my laptop for the time being, unfortunately. But it's generally a bit of pointer acceleration and enabling two finger scrolling, if I have to configure anything at all.


My god. I hope Ubuntu is not going to jump on this quickly. My current setup with Synaptics and just two manual tweaks is perfect for me.

The way MacBook touchpads work always irked me, always felt off. But maybe it's necessary for MacBooks with their enormous tachpad surfaces.


The donation link seems fairly buried under the comments, but here it is again: https://github.com/sponsors/gitclear


So am I the only one that really hate multitouch.

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)


Of course not. But as much as you hate it, I love it, and it turns out most of the work needed to have things our own way is shared.

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.


This project is now up to 75 supporters and $800 monthly sponsor estimate, which should be a good enough starting point to start talking to devs. Thanks a bunch, HN!


As one of the people that said I'd donate to this cause and setup my first GitHub sponsorship for this project, I'm very excited!


Honestly, I hate the Apple touchpad experience. I love Linux touchpad experience, except for when there are multiple drivers available and depending on which one is being used, my settings change.

Oh, and, 'tap to click' should be default.


>I hate the Apple touchpad experience

You're definitely in the minority on that.

> Oh, and, 'tap to click' should be default.

Okay, now you're just trolling.


I really do like tap-to-click. I may be in the minority. After checking the numbers again, I'm definitely in the minority on HN. But, no, I'm not trolling. Tap-to-click is sooooooo nice. I can use all touch pads the same whether or not they can be clicked all over. I don't have to click (which makes a sound). I know that sound may not annoy everybody, but i was once recording audio, and every file started with a 'click' sound ... until i enabled tap-to-click. And i have never looked back.

The one thing i love about Apple touch pads is 'natural scrolling'. What a beauty.


Will Linux fix their mouse support as part of this project?


Came here to say the same thing. Every Linux distro release the mouse finds a new way to break -- different acceleration profile, impossibly slow followed by impossibly fast, etc. -- and I have to update my fix_mouse.sh autorun script to scan for whatever the new xinput parameter names are.

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.


Never had an issue before. What distro and window manager are you using? I'm running Arch with Sway and no issues whatsoever with the mouse.


Kububtu with a Logitech G500s set to ~2000dpi and a 250Hz or 500Hz report rate. I had similar issues with other DEs and login managers in the past.

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.


> The Linux kernel does seem to be good at that last part, but not the desktop projects.

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...


Q3 bars go 2 1 3 4 5.


No multitouch!?


Yeah, didn't get that. Multitouch is definitely there. Not all gestures though.


It very much depends on what hardware you have currently.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: