Even more interesting is when I see my partner try to do something on my Mac using a trackpad, he seems... apprehensive? Like he is so afraid of doing the wrong thing and for me this trackpad has never done something I didn't want it to do. Like without even thinking about it while I was re-reading this comment, I had fingers just resting on my trackpad.
It has to be a combination of software and hardware. Likely shared software and hardware.
Like is wrist detection on the trackpad the same as the wrist detection on an iPad?
I believe that the 3D Touch tech that was once in the iPhone is the same tech that is in the track pad and the Apple Watch.
We saw them use the same (or similar) tech on the iPhone home button when they removed the physical button.
Is the multitouch functionality of the trackpad the same technology as in iPhones and iPads?
I am genuinely curious about some of these because they feel like the same technology from the outside looking in and it would explain a lot about why it works as well as it does.
And yeah on the ROI, I mean they sell a $130 external trackpad... that I had zero qualms about buying. Because when using my MacBook Pro as a laptop I heavily rely on gestures. Those gestures only work if the trackpad is as perfect as it can be. But those gestures is also software.
3D touch was only in the iphones for a few years, it was too expensive so they cut it in favor of the haptic touch they have now. The macbook trackpad is nice but honestly I prefer the old 2012 one they had with the actual physical button you could tweak the pressure of with a screwdriver. It seems a lot more ergonomic to have some actual give in the device instead of just jamming your finger onto an unmoving slab of glass. You don't even realize how hard it is you are pressing onto these things until you try testing your muscle memory with the computer off; its sort of alarming.
Which I always found unfortunate, it had some really nice uses like not needing to wait when holding down for the OS to register and being able to pull up a context menu, slide up, and release to select the menu item all in one motion. I was sad when it was removed, but I also get it.
I get the idea of a physical trackpad, and I do remember when that was the thing. I honestly don't even notice that the trackpad is not physically moving. It simulates the feel enough that if I didn't know it was not moving I would think it was. You are right it is shocking when you try to use it while it's off and it's like... oh right. But I just am not in that situation often. (However when Mac freezes and it "clicks" multiple times since it did not properly register ealrier, that's honestly kinda wild... but infrequent).
But I also like not needing to think, I need to press on a specific part of the trackpad for it to properly register. I vividly remember only the bottom half really registering and the higher you went the shallower the press was.
You can adjust the pressing force required in software, and the glass does in fact depress under your finger. It’s cushioned - that’s how they detect pressure.
This I think goes back to the first unibody MacBooks from around 2008.
and a comment a few years ago by me: https://news.ycombinator.com/item?id=23274577
I think I'll never "get" drag&drop on MacBook touchpads. Every time I try to do it, I accidentally open the file info, or the touchpad is too small to actually reach the place where I want to drop the file to. It is absolutely doing things I don't want it to do. I absolutely dread having to use the touchpad. (that applies to other laptops too, though)
What I always just do is click with my thumb and move around with my other fingers. As long as my thumb stays down it stays selected. Then just a few quick swipes with my finger gets whatever it is I am selecting where I want to go.
Same works for windows and anything you click and drag. Admittedly there is a quirk here that I have noticed, if for some reason I click and try to drag with the same finger, I then can't switch to dragging around with a different finger.
But personally I treat my thumb just resting no the track pad as my click finger and move/gesture with my other fingers.
It would be a bit uncomfortable to do for long periods, since my thumb has to hold down with clicking force.
It just came so naturally because I’ve used Macs for years. But I’ve noticed on Linux and Windows laptops (even Windows on an Intel MacBook) this approach doesn’t work. I find it so frustrating when I have to use a trackpad with any other OS, I completely understand all those users carrying around a mouse to use with their laptop, and why they look at us like we’re nuts!
That presents an interesting problem. The older physical click trackpads had a physical thing to encourage a specific use of it. Now that the device doesn’t care where you click, there is no longer something there to naturally find using it in this way.
With tap-to-click, my touchpad is completely silent.
Nowadays, sometimes Finder gets confused when you use 3-finger drag, and it doesn't work with sliders in the newer control center released years ago.
For selecting text, the trackpad is large enough for nearly any selection.
But ok so for me, I basically am always resting my thumb (I am right handed if that helps visualize) on the bottom-ish part of my trackpad. So so when I am moving my mouse I have 2 fingers on it. My thumb is just sitting there and my index is moving around.
My thumb is basically my clicking button. It doesn't have to be, but for me it is. It also doesn't have to be at the bottom, I can click anywhere which is nice when I am quickly going from my keyboard to my trackpad and need to click something.
So because I click with my thumb and move with my other finger(s). I can click to drag, select, whatever it is that I am doing with my thumb. And them move with my other finger. With my thumb staying down, I am free to pickup and move my finger as many times as I need. I can pickup my finger for as long as I need to and it will stay selected for as long as my thumb is still there "pressed".
With acceleration that Mac uses, with just a few quick swipes I can easily move a window between 3 monitors.
Since the trackpad is also not physically moving when I "click", it is just pressure sensitive. It also isn't a strain to keep my thumb down.
This is how I first used a trackpad 20+ years ago and I never felt the need to change. I tried some of the newer ways to click and drag and they all seemed worse. Tap to click is the first thing I disable on any laptop, that’s what my thumb is for.
Most natural to use the track pad is to curl my right hand towards me with my wrist still touching the macbook. One finger feels decent, but already 2 fingers feels a bit off to me. And 3 fingers even worse. It's really stretching my wrist at that point. My wrist is always positioned on right of the trackpad, but putting 3 fingers on the trackpad is putting it at an uncomfortable angle.
Even with one finger I think I have to bring my wrist quite away from the usual position though, off the laptop with its bottom. But three fingers feels uncomfortable even when I do that.
That one is an older magic trackpad, if it ever dies I'll upgrade to the newer one.
Anyway, that's the keyboard/touchpad layout I would use too. The only difference is that I like touchpads with physical buttons. Three of them because I use Linux and pasting text with the middle button is great.
I agree that physical buttons are nice. The older magic trackpads actually are physical buttons, but they're on the underside of the trackpad, so the disadvantage there is you don't feel the button on the surface.
I also hate how I have to constantly turn of the mouse acceleration at random times using CLI.
Another thing that feels really weird to me is the cmd button location.
On windows I would use ctrl + c and v, it's easy to use my pinky finger, but with mac I have to twist my thumb and index finger.
I don't know. I just can't get into it. All of those little actions that are smooth for me otherwise feel like quite a chore and a turn off.
In the settings you can also flip the modifier keys around, like control and command. Though that could lead to other weird things like trying to do control+c in the terminal. I usually use my ring and index, or middle finger and index. If you're using pinky for control, why switch to the thumb when you can use a closer finger that would be over command with your hand in the same position?
I will say the command+c does get a bit cramped, but I think command+v feels better than the stretch of control+v.
And another random grievance - what is the point of only showing X, - and the other icon when you hover on them. It's just weird decision to me. The Red > Yellow > Green thing.
1. Magic Keyboard with no "fn" button.
2. Macbooks own keyboard with FN button. Which really messes with me, because my pinky expects the left most button to be the CTRL action button.
All of it messes with my brain so hard - it makes those little actions hurt me almost every time.
And as you said, different sets of terminals drive me just so crazy.
I might try the settings, but I also overall hate the MacOS settings, as it seems it's all just so obscure and weirdly limited, like someone has given me those random options that do not adhere to me at all. As mentioned previously, no easy ability to turn off acceleration, which keeps gaslighting me and not feeling right even after using CLI to turn it off.
My solution has been to opt just for a mouse, but Magic Mouse feels extremely terrible and awkward to hold. I have Logitech MX Master 3 - which feels nice, but not with Macbook. It sometimes randomly starts to skip and lag, I have to reset it. And it still feels like at times some force is working against me when I'm trying to move the mouse.
I still feel it just somehow working against me even if I have turned off the acceleration, despite it working well with Windows.
And then the MacBook animations, which feel horrible. The jumping up down thing, feels just annoying. The genie effect, terrible, the having to move the app to install it and then no loading indicator, horrible. I know I can turn off the Genie, yes, but it feels so cheesy and cheap animations.
I can honestly list countless things more that I hate about MacOS, but feel so smooth on Windows.
Spotlight feels better with latest MacOS version, but previous ones I always write something, and it just changes moment before, or it gives me irrelevant result. Because I either use spotlight to open the correct app or Windows btn, which is very responsive and always opens what I want.
The search for correct app should be realtime. Also I'm not going to go into window management....
Then one of the very common things I have to do, taking a screenshot from part of a screen and putting it in a clipboard to share with someone. I have to use I think 4 fingers?? And then another click. And all of those 4 fingers in such an awkward position.
lol, yeah, the screenshot keyboard shortcut is crazy (3 fingers). It took me a while to get the muscle memory down, but once I did I liked the flexibility of it way more than Windows (at least at the time which just had print screen, while Apple could do the whole screen, a selection, or a window).
I suppose these days spotlight can open the screenshot utility, although I never think to do that since I've got it down. It's worth going in there at least once, as you can change some settings, like not showing that little thumbnail, automatically saving to the clipboard instead of a file... stuff like that, depending on your needs.
I had the benefit of using OS X since version 10.2, so each year when stuff came out I could just learn those things. If I was starting now it would take me forever to find all the random little stuff and where various settings are hidden away. I don't even know where I'd go to try and learn it all. I'd probably be frustrated as well.
The only terrible thing about Windows is development, but right now it feels like I'm almost satisfied with WSL2. In the past for my side projects I used to do dualboot.
But also I somehow like Windows design and animations so much better. Another thing about MacOS I can't get hang of is the menubar below and how the windows adjust to it. And it is especially confusing with multiple monitors setup.
I've been trying to "Wing It" to understand MacOS a lot, which I admit, and it hasn't really worked, but it feels like Windows works for me without putting in effort or having to watch any YouTube videos. And I don't think in my youth I watched any tutorials, it's just something that I learned naturally. Then is it my age, but I wasn't that old when I started with MacOS.
Something like even the "Finder" icon bothers me. What is this weird happy, artsy smile, and why can't it just be something that resembles folders? It's just so random, everything about MacOS feels so "random" for me.
Plenty of icons I can't understand, and sometimes the hover text appears on what they mean, sometimes it doesn't. Idk.
Control still gets used fairly often under macOS though, so it needs to be easy to reach, and my solution is to remap Caps Lock to Control which is pretty comfy. If this remap weren’t possible under Linux and Windows too I think I’d go insane using them.
I have to use side of my thumb to press the CMD kind of.
Maybe it has to do with hand size, finger/joint length, etc?
Because I think I have pretty much average male hands, but if I have to do CMD and C, with this natural state position, I have to hit the CMD with pretty much the nail of my thumb sideways, unless I rotate my wrist a lot.
when i'm in programming mode, i'm in emacs on the homerow
You need decent hardware to be sure, but Asashi Linux on Macbooks is a horrific experience, unless you plug in a mouse. It seems like it is mostly software.
external mouse is much more fun to use
I use an external Apple Magic trackpad on a Windows desktop. It's a good and smooth experience.
Apple is different because they have a product that is not comparable to other PCs, or they want you to believe that, thus they can put the price tag they want on it. Want they spend 100$ on a trackpad, they can, but a PC manufacturer can't.
Beside that, I think also the reason why PC manufacturer didn't invest on them is that most PC have Windows on them, and native multitouch trackpad gestures on Windows is rather a new thing (even on Linux, by the way, it started being supported as smoothly as macOS only with Wayland). Thus why have an hardware that supports something than in the end the OS that most people is using doesn't support?
While I agree that these metrics can be subjective at times, I believe there are some fairly well-established features that dictate whether something is, objectively, a good product. In the case of a trackpad, gestures such as pinch to zoom are arguably an essential (for me at least), as well as stepless scrolling, configurable pointer acceleration configuration, and a reasonable size.
In the case of a keyboard, sure -- that's a whole other kettle of fish. I quite like the one on my Dell XPS, but I'm sure some others wouldn't.
However, I think you've downplayed how much a keyboard matters here: for me, it makes or breaks a laptop (or a USB keyboard, of course). When the laptop is on, I'm spending a good 70% of my time using the keyboard. Therefore, I would argue it is one of the most important things to get right.
I've come across good keyboards, bad ones, and ones that are just OK -- as an example, the more sponge-like ones on Logitech media keyboards do not make a good experience. In my experience, you have to try a keyboard to know whether you like it, but you can filter out plain terrible ones from other online reviewers' experiences.
I'm typing this on my work windows laptop, which can tick all these boxes!
But the experience is still terrible. While the acceleration and such are fine enough for my use, I still get the feeling there's some lag between my finger movement and the pointer on the screen. There are things which I loved on my 11 yo mac which still don't exist on windows, like "drag hold" which only holds for a little while. On windows, it either doesn't hold at all, or holds forever. But this is purely a software issue.
Funnily enough, Linux with X11 on this very same laptop runs circles around windows, and has none of these issues.
I've never had any issue with palm detection on either OS, but I'm not sure if it's because it works well, or because of the size and position of the touchpad.
However, despite the poor performance on Windows, I still find it usable for random "office" use, and never felt the need to cart around a mouse when I'm not at my desk.
This is a big one. Something I found really impressive, even on the first iPhone in 2007, was that it felt like my finger was moving the display itself, rather than performing a gesture to elicit an action. I feel the same way about the macOS trackpad, it feels almost connected to what is on screen. Other systems usually have that gesture/response feeling, which doesn't feel good natural to use.
It's impossible to be in sync anyway, unless you avoid VSYNC, and then you'll have tearing ans at best halve the delay. There are limits to these things that not even "Apple" can violate.
And first iPhone sure was not faster than SE.
Maybe with some 120+Hz refresh rate, and some SW tricks, you can get close to what you're talking about. First iPhone did not have that.
Never handled an SE, though, but I doubt it's worse.
> Response time 35.5 ms
So at 60 fps, that's 2 frames delay + some. (and this is just display response time and doesn't include the content rendering, double buffering, and the input lag)
Here's the input lag for phones from similar era as the SE 1st gen: https://blog.gamebench.net/touch-latency-benchmarks-iphone-x... (88ms)
Another set of numbers: https://danluu.com/input-lag/
You can move your finger quite far in 80ms.
Why can't they?
You can't really put "better touchpad" on a label... or can you?
That's a real problem in many situations: users are often under-estimated (they are also often dumb, which doesn't help).
Apple doesn't put "better touchpad" on their labels either. It's just very very obvious that they're better.
Exactly. Everyone knows Apple has better touchpad, but nobody knows that about some random PC manufacturer. How will they signal that he has better touchpad in order to justify the higher price?
There are plenty of PC manufacturers that aren't "some random PC manufacturer". ThinkPad, Asus, Acer, HP, Dell. They are known brands that can easily maintain reputations.
I would also wager that the sort of customers who are willing to spend more for interface refinements like an excellent touchpad already use Apple hardware at a higher rate than the general population, further shrinking customer demand for good PC touchpads.
Of course, I don't think anyone would expect an Apple level touchpad on a budget Windows laptop. But they don't even seem to be on premium Windows laptops.
You're probably right that premium Windows laptops are a super niche market so there isn't much incentive for touchpad manufacturers to cater to it. That's one huge advantage Apple has. If they want a product that no manufacturers want to make, they can just make it themselves.
Yeah, from that my conclusion is that the market for Windows laptops with really excellent touchpads is simply not large enough to be worth pursuing. My guess is that the increase in revenue between a "good enough touchpad" and "really excellent touchpad" is nowhere near enough to cover the astronomical costs of developing one.
On the other hand, MacBooks are basically the only laptops with a large enough touchpad to be comfortable, I don't know if there's some other secret sauce Apple algorithm in the firmware that contributes to the experience, but to me the perfect combination is with a MacBook running Linux, which is what I've been using for about 12 years now.
This is surprisingly tough to google, but apparently at least some Apple laptop touchpads are 13cm wide, and my Framework 13" touchpad is 11.5x7.66cm (and making it any taller would increase the size of the whole chassis).
Fwiw I also have an apple mouse, and the touch based scroll feels unpredictable, and the mouse a bit slow too.
I have an external Apple touchpad and I got the Boot Camp drivers for it working on my gaming PC. I keep it to the left of my keyboard with my mouse on my right to alternate hands for RSI reasons and because even Windows has a lot of features that work best via trackpad gestures.
Unfortunately the companies prone to do that are the ones that go out of business. When you get the huge resources like the tech giants you have that luxury, but as a startup you don't.
The problem is, that on modern Linux environments, there is no clear responsibility for where scroll handling code belongs. Especially Kinetic / Inertial scrolling is handled way different than in macOS.
There is libinput (for handling and redirecting input events)
There is the display server
There is the compositor
There is the window manager
There is the app layer (every App, like Firefox, Gimp,
Currently kinetic scrolling is implemented on the App layer, every app has to handle the scrolling events manually to provide kinetic scrolling. This is not the case in macOS... the kinetic scrolling / rubber banding is handled within the OS.
In my opinion, the scrolling code could belong into the compositor, so that not every app developer has to write code to handle the scrolling, but still prevent unwanted effects like kinetic scrolling transfer between windows. Additionally, the kinetic scrolling approach is not configurable in Gnome... some touchpads / screens are scrolling way to fast, some are too slow...
I filed an issue[1] on cosmic in hope they'll get it right, but I don't have too high hopes that this is of much interest. On Fedora it works ok-ish with a little hack[2] called libinput-config.
[1]: https://github.com/pop-os/cosmic-epoch/issues/204
[2]: https://gitlab.com/warningnonpotablewater/libinput-config.gi...
[3]: https://stackoverflow.com/questions/38619717/need-help-disse...
Example: If you where scrolling in a window, the driver kept sending scroll events for a short time to simulate kinetic scrolling. Now, if you moved the cursor to another window, the other window started scrolling, because of the simulated events.
This is not the case on macOS. Changing window focus doesn't change the scrolling. So, while working from a user perspective (in my opionion this would have been better, than NO kinetic scrolling at all), technically, it is a bug / unsolvable behaviour :-), because this problem cannot be solved on the driver level - there is no reference to the current focussed "window" / active element.
That's probably the reason why they thought: This must be solved at App level, which was the worst decision they could make. Putting the effort on the shoulders of App developers instead of solving it at one place leads to so much wasted developer time, that could have been put into new features or solved issues. I was shocked about how nobody seemed to notice that.
However, they are not "hobby" at all. Peter Hutterer is awesome and he understands the problem very well - but as a single developer it's hard to convince a whole community, that partly does not even (want to) understand the problem. And he's responsible for libinput, not for the compositors - so it's clearly not his fault.
I think the problem lies in separated responsibilities. They are trying to keep the projects (driver, compositor, window manager) separated / independent, but in this case, the problem is spanning the whole stack.
This is such a trivial thing to fix, you just stop sending scroll events when the cursor moves.
Peter has done a great job on libinput for the most part, but he is 100% wrong about inertial scrolling (and button remapping, among a few other things).
Maybe you're right. However, this should not about individual persons / projects... this is more about that I'm still uncertain, why so many experts cannot get this thing right by just working together finding a suitable solution :-) There must by more than one way of solving this.
I'd argue that he is right about the fact, that the "driver" (libinput) should not send "simulated" events, that are not really there. Whereas the cursor movement should defintely stop the scrolling behaviour, the driver is not the place to care about this, I think it is more a compositor / window manager thing, but I'm not an expert.
However, if he would implement an opt in solution (2 config options) for lets say:
libinput.simulateKineticScrolling=1
libinput.kineticScrollingSpeed=0.22
a lot of people would be really happy, but this probably is a really dirty hack.scrolling itself is a simulated event. So is any two-finger gesture that isn't directly represented as an affine transform from one pair of coordinates to another.
As long as they are marked as being synthetic, why not?
If you mark them with a "this is a synthetic event" bit, the compositor/windowmanager has all the information it needs to decide whether or not to ignore the event (because, for example, the pointer moved out of one window and into another).
The driver generates the synthetic events, the compositor/windowmanager decides whether or not to drop them. Done.
However, they are not "hobby" at all. Peter Hutterer is awesome and he understands the problem very well - but as a single developer it's hard to convince a whole community
Wait what?
I'm pretty sure Hutterer was the one who pushed it into the App layer. He's the maintainer of libinput, and refused to do kinetic scroll within libinput (like the libsynapse driver did for X11). If he wanted to do it centrally in libinput there's nobody else to block him from doing that -- he can just do it.
I'm not sure what he did and I'm not trying to do fingerpointing. I thought he just pushed it away from libinput stating that it's the wrong place to handle it and wanting to keep libinput as "clean" as possible - even if this might be a questionable argument in this case.
To answer one of your other comments...
> If you mark them with a "this is a synthetic event" bit, the compositor/windowmanager has all the information it needs to decide whether or not to ignore the event (because, for example, the pointer moved out of one window and into another).
Yeah, this would be one of the many possible partial solutions. Don't get me wrong, I'm totally fine with this suggestion, but let's think that through:
libinput implements "simulated" events algorithm for intertial scrolling. It also would probably need a config setting for "speed" or "intensity". Nevertheless, this would not help without changes in at least one of the other layers I mentioned (Compositor, Window Manager, Apps) to either ignore or handle these events. In my opinion the App layer is the wrong place, because so every App developer / maintainer who want's to support inertial scrolling had to implement it AGAIN for his personal app which would create a tremendous amount of additional effort and different implementations acting differently. Not a great user experience...
So, the (additional) implementation has to be done somewhere between libinput and the App layer, which means either compositor or window manager.
Now, if an implementation in one of these layers is inevitable to get it working, why should it be implemented in libinput? Issues would spread over two projects, instead of one and getting pushed back and forth. This is of course my personal opinion.
Instead NOBODY implemented it and App developers and Framework Developers (QT, GTK, etc.) put in the effort to workaround this problem. That just feels wrong to me.
I wish at least one project just had shown good will to do it, in my opinion it would have been better to implement it everywhere (with optional disable) instead of nowhere, but I think it's just a too heated topic to solve it easily :-)
Yes, certainly. But it's basically one or two lines of code with zero configuration knobs:
if (ev->is_synthetic && focus_changed_since_last_nonsynthetic) return;
Compare this to the current state of affairs, where every toolkit/compositor/app has to reimplement momentum scrolling on its own. That is multiple pages of fairly tricky code and several configuration knobs -- all of them replicated (differently) in each different thing that sits on top of libinput.why should it be implemented in libinput?
Because libinput is the "narrow waist" in the input stack.
Doing this in libinput puts all the new configuration knobs, and all but one or two lines of code ("if focus changed then drop") in the one place where they can live without having to be duplicated.
Any higher up the stack and you end up replicating this functionality.
Issues would spread over two projects, instead of one and getting pushed back and forth.
I don't think so. If the problem is that a marked-as-synthetic event is/isn't being dropped when it shouldn't/should, that's the problem of some layer above libinput. Any other problem is libinput's. I know nobody wants to own these problems, but we can't make them disappear -- somebody has to own them. If they are owned at or below the libinput layer we can fix each bug once and be done. If we fix them anywhere above the libinput layer we will end up having the same bugs occur in multiple independent implementations and they will have to get fixed independently.
in my opinion it would have been better to implement it everywhere (with optional disable) instead of nowhere
I don't agree with this either. This "multiple reimplementations of the exact same thing" is becoming entrenched! We could get stuck in this situation, permanently. This isn't a question like "what should a titlebar look like" where different toolkits can legitimately have different opinions about it.
In my opinion the App layer is the wrong place
I agree.
Some part of this has to be done somewhere at-or-above the compositor layer, since those are the only layers that are aware of focus changes. Unfortunately there seems to be no traction for e.g. wayland to require that all compositors do this. So the replication gets amplified even further by pushing it up into every compositor or toolkit. That's why it's so important to limit the size of the bit that gets pushed up the stack to being two lines of code.
Perhaps a viable compromise would be to insert a new layer above libinput. For argument's sake, call it "libgesture" (*). It's responsible for consuming libinput events and emitting synthetic events like momentum scrolling. It would have exactly the same API as libinput, except events would have an additional `is_synthetic` field. I've actually built something similar to this (but at the kernel evdev level) for my own use.
Perhaps that would make everybody happy.
(*) This is unrelated to `libei` -- I have this sinking feeling that many apps (especially chromium) will reject any event that smells "emulated" to them "because muh bots" or something stupid like that. Trying to use libei for this is likely to backfire once the chromium devs decide that "emulated" means "bad for Web Environment Integrity". The indicator for gesture-synthesized events like momentum scrolling really needs to be completely separate from any marker indicating that the event was in any way emulated.*
> Perhaps a viable compromise would be to insert a new layer above libinput.
Since I think this probably will never get integrated in libinput, this might be the best solution for everyone - also opt in. Unfortunately I don't think anyone is ever gonna implement it in a way that everyone can agree on.
However, if someone would implement patches for libinput as well as e.g. mutter that work flawlessly, are documented and gain acceptance, this would put a lot of pressure on all other projects to integrate this.
If you have such patches and they are open source, you surely would have my support. I would definetely use it...
> There is the compositor
> There is the window manager
What kind of Schrodinger Way11 world is that? X11 has display server and window manager (and window manager doesn't deal with mouse movement), and Wayland has a compositor.
However, you are right, there is no such thing like display server AND compositor.
> and window manager doesn't deal with mouse movement
And that's causing one of the problems I described above, when changing window focus while scrolling. The driver just sends scrolling events, regardless of the window focus, so it keeps scrolling, when you trying to "simulate" kinetic scrolling.
That's insane but you're right. Firefox on Ubuntu had awful trackpad scrolling 10 years ago and it's still bad. How do you make an OS where the main pointing device on half of the market sucks and assign that low priority?
Anyway, it's nice to have different settings that suit different people.
1) It's too fast. My Android phone also scrolls like XINPUT2 but it's got a smaller acceleration. But maybe it's what you say about getting used to it.
2) That would work in Firefox and every other window would still scroll in the other way. That's really bad and works against getting used to a specific scrolling behavior. I don't get it: the scrolling behavior should be managed at a level below every application. All the scrollbars should behave in only one way, except the random application that implements its own logic because of some important reason. So I would expect a system wide setting for XINPUT2 or traditional scrolling.
If you want it to not scroll further you need to stop scrolling before lifting you fingers. That should be pretty easy to get used to.
The interesting thing: Some Distributions have smooth scrolling (or interial scrolling / kinetic scrolling) by default (Fedora, Ubuntu) and some don't. Those who have enabled it, have no speed setting, so most of the time it's way to fast. I tinkered around a very long time with libinput-config to get it right and now it's acceptable. But it is still waaay better on macOS.
It is NOT a hardware issue though. I tried "hackintosh" on my T460s, and the touchpad experience is nearly as good as on a MacBook, so it is mostly software / OS.
Please don't perpetuate the awful terminological confusion around this issue.
Because Linux isn't "an OS". It's a kernel made by one set of developers, combined with a bunch of operating systems made by a second set of developers, which pick and choose compositors/window managers/etc. often made by a third set of developers. Each of these sets of developers are pretty good at solving bugs that live entirely in their "domain", but when there's an issue which crosses these interface boundaries, there is nobody to "assign priority", never mind actually work to fix it.
(Not to mention, systemd demonstrates that trying to solve these kinds of pan-system problems earns you little gratitude but tons of vociferous hatred, so people are not inclined to do it.)
I also think that the App developers should not have to shoulder this. App developers have way better things to do than care about touchpad events... like fixing issues and developing new features. I don't see where smooth scrolling should be an App feature...
And Qt apps will scroll differently than the GNOME project's apps which will scroll differently than other Gtk apps. It really feels disorganized and unfinished.
Just goes to show that people can prioritise but come to very different conclusions
If you like a trackpad, you have a Mac, for the same reason. I don't know if it's the hardware or the firmware, might be some of both, but no one else ships a laptop with an acceptable response curve.
I stick with the Apple ecosystem for a few reasons, but this is a big one. Even when I'm at the desktop with keyboard and trackball, I'll reach over to the laptop sometimes to pinch, or three-finger swipe, just because it's the easiest way to express my intention. The context switch from using the keyboard to using the mouse is a fairly complete one for me, which is to say I tend to spend long stretches doing one or the other. I don't place any value on staying on the home row while switching. I do place considerable value on proper pointer and scroll acceleration, reliable recognition of gestures, and input rejection when my palm or thumb happens to rest on the trackpad. Any non-Apple laptop trackpad I've tested completely fails one or all of these.
Weird fanboyism. I've migrated from nubs to touchpads because Lenovo ruined Thinkpads, and I'm perfectly fine without a Mac thankyouverymuch.
I have a ThinkPad with a track point and don’t use it opting instead to use the trackpad. Before the ThinkPad I had a MacBook Pro. I find neither trackpad better or worse than the other.
Apple's touchpad is far superior - it allows for really precise gestures as well as high speed coarse gestures, just varied by the speed of moving.
I think the trackpoint can be great, but more adaptation is required and most people aren't willing to go through it.
My dad also ended up with some sort of tendon injury that he attributed to the using the trackpoint on his laptop all day, every day, which I've never experienced, but it has always been in the back of my mind.
Rant: On my T480 - an extremely popular, flagship Thinkpad - the trackpoint is unusable out of the box on Linux - it crawls at a snails pace unless I manually max out the sensitivity in sysfs, and also fiddle with xinput (no configuration is possible on Wayland). What is worse, infuriatingly, the curve seems to frequently change whenever libinput is updated, requiring me to go and find another set of fiddles to bring it roughly into line. This is clearly not the output of a structured, empirical, research-based approach to the issue, but of someone just fucking around with the constants for one reason or another. It does not feel like telepathy, and it makes my wrist hurt in short order if I overuse it (luckily the laptop also has a generous touchpad).
I dunno, maybe it's better on Windows. But I'd be amazed if anyone cared enough to make sure that 90s usability research was still valid, on modern variants of trackpoint sensors and modern high resolution screens.
I would guess that these are probably a bit more expensive than your run of the mill trackpad from e.g. Synaptics that ends up in the typical laptop.
I’ve experienced the reverse with macOS running on generic laptops via hackintoshing. Potato trackpads are still potatoes under macOS.
And now with the modern Macs, I prefer the trackpad over a mouse even on a desk. Never would've thought it before.
Compare to linux, where they have zero influence over any of the hardware involved, and are expected to support every single hardware combo possible.
But yes, it's mindboggling how bad trackpads are on PCs. I've had corporate Lenovo T-series, X1 Carbon, and Yoga for more than a decade, and while things have gotten slightly better I still need an external mouse
I may need to travel a lot by bus to my new job, and I'm now actually considering a Mac again even though Excel/PowerPoint is horrible due to missing hotkeys
Also, at 15×9 cm, it has over 5 times the area of the teensy trackpad on my old ThinkPad R61, which is just 5.5×4.8 cm.
Selecting text is a pain in the ass on mac as the cursor moves when you release the press on the touchpad.
No issue on thinkoads as you just use the separate physical left mouse button.
So basically, two separate philosophies took two roundabout paths to suit both their needs. It took some doing, but booting up KDE or GNOME in Wayland should "just work" with good trackpad gestures. Both desktops did a good job integrating it, IMO.
> They even sell Bluetooth trackpads for desktops it’s so good.
I use one! When they make one with USB-C charging I'll start recommending it to others again. =)
Pretty much everything besides Force Touch works, too. Multitouch gestures where you rotate or pinch your fingers, Bluetooth connectivity, it's all perfectly usable. The cherry on top is that KDE even has a little mouse-acceleration switch right in the Trackpad settings, no terminal commands required. I'd actually say the trackpad experience on modern Linux is great.
Touchpad, touch screens and input devices are actually VERY difficult to get all the details right because you're dealing with material properties, differences that show up in manufacturing and even the geometry of the end user (small hands, big hands, wet hands, etc) among other factors.
Apple takes on the responsibility of their internal hardware (SoCs, all embedded boards, materials) AND software (embedded, OS, drivers, etc). They have a culture of caring about details and do a tremendous amount of R&D on these related details, at the design and manufacturing level, before releasing their product.
In contrast, almost all PCs are made by "integrators" (i.e. Dell, HP, Lenovo, etc) who take mostly off-the-shelf or semi-customized components, "integrate them" (I use it in quotes because often, as we know, products will ship with broken ACPI, EFI, broken drivers, etc) and put it out there. The drivers usually come from a hardware vendor who has little incentive to get "details" right, they will be lightly modified and then the OEM will shoehorn that into a semi-customized OS image and the device ships.
Further, traditional vendors like HP or Dell are under pressure to keep churning out "the next" iteration of their HW, so they don't really go back and improve drivers or firmware unless they are forced to.
On the Linux, FreeBSD and open-source side, you have an army of dedicated volunteers who often take highly sub-par or questionable hardware and work (often in the dark, or through reverse engineering) to make things reliable and add polish. The fact that things work "as well as they do" under modern Linux or *BSD is a miracle and mostly the result of individuals who care. There might be a few individuals at an OEM who care, but by and large the culture is not "we should make the most amazing product and provide documentation and support to the open-source community" and more "if they can get it figured out, good for them".
A more practical detail is the fact most touchpad ICs are made by Alps or Synaptics. And these devices include things like 'palm rejection' and other advanced features that haven't been enabled until somewhat recently because the IC vendor might not have shared the details with the people working on the open-source drivers.
You see nearly the same pattern with Android phones, how long before the next phone gets pushed out? Did they really fix the weird bugs that caused the previous phone to overheat, or the celluar link to drop calls unexpectedly? Fix the fact the satellite GPS doesn't work 1 out of 8 times?
Apple isn't perfect by any means, in fact I find the most current versions of macOS to be VERY user hostile but sadly most OEMs superficially copy Apple (i.e. moving to only ONE or TWO USB-C ports on a modern laptop) and miss the key point of making hardware & software actually working well together and openly supporting something other than Windows.
The circle of enshittification, plain and simple.
Windows itself is the worst culprit, given that it took until (IIRC!) Windows 10 to arrive at a sensible gesture API and before that it was a hit-and-miss involving custom drivers for every model and barely any unification for gestures.
That in turn led to software for Windows never even utilizing the benefit of multitouch, and so in turn hardware manufacturers weren't pushed either because why invest effort when it's useless anyway?
On top of that, hardware build quality sucks on everything Windows. It's almost exclusively really small (i.e. half a cigarette pack) touchpads, recessed 2mm or more into the hardware, and full plastic that stains after less than half a year of moderate usage. In contrast, MacBooks ship with touchpads literally larger than the hands of someone who has worked in construction, and they're made out of glass that is nearly flush with the casing, so no dirt or anything even has a chance of accumulating.
(I don't even care about Linux at that point, where the hot mess of display drivers, window managers, UI frameworks and whatnot makes the complexity of "getting it right" even worse)
On the other hand Linux is still very unstable and uncomfortable. My Linux Mint Cinnamon was behaving unstable in prosaic cases, like entering PIN into my built in Wireless WAN.
I would love to see MacBook open for extension and interoperability
Here's one https://en.wikipedia.org/wiki/FingerWorks
I remember another one for the iPod interface but don't want to put that much research into it.
I think it comes down to patents and getting a bunch of small things just right... which you can do if you're Apple and you own the full stack, but is much more difficult supporting all the rest of random hardware.
Patents?
Bud's comment: "Over 20 years ago, actually. The glass trackpads Apple made in 2002 were essentially identical to today's, albeit quite a bit smaller."
I also don't use any gestures. I hate moving my hand down to the trackpad at all if i can avoid it and the entire OS seems built around you using the dumb gestures.
One factor is that many customers don't demand this kind of refinement, and of those who do many of them already use Macs.
Another is that it's not primarily a technical problem, but an organizational one. These kinds of interface refinements require coordinating across hardware, drivers, OS, toolkit, and applications. It would be hard for any one person to own that problem in Open Source Software.
Is this it? An unknown ROI?
>the highly uncertain ROI for trying to align touchpad acceleration has prevented us from proposing a system change to the default Linux settings.
I can only speak for myself, but I gave up using trackpads on anything that isn’t a MacBook many years ago. Very occasionally I’ll try them and have always been disappointed. This prevents me from buying any laptop that isn’t a Mac and prevents me from running any OS that isn’t macOS on a laptop. I can’t be the only person who prioritizes the quality and feel of input devices when choosing a system. If this can make or break sales and adoption, it seems like the ROI would be pretty good. Even if we are just talking about Java app, if I’m using an obviously Java app that feels like a clunky Java app, I’ll usually find an alternative app that doesn’t feel horrible to use.
I’m glad progress is being made, but I struggle to understand why it’s still a problem at all when it’s been so good for so long with Apple. They even sell Bluetooth trackpads for desktops it’s so good.