7 ms·
Apple has put a lot of work and polish into its touchpad drivers, and it makes a huge difference; it's probably the largest single differentiator Macbooks have
by jimrandomh 8y ago
Apple has put a lot of work and polish into its touchpad drivers, and it makes a huge difference; it's probably the largest single differentiator Macbooks have over other manufacturers. Part of it is latency (which will probably also require some work on the graphics stack), part of it is handling all the corner cases correctly. (Improving latency probably also requires some work on the graphics stack, not just the touchpad drivers.)
A simple test which Macbooks pass, but Windows and Linux laptops fail: fling scroll down a web page, then press Cmd/Ctrl+W to close the tab before the fling scroll has stopped moving. On Macs this works correctly; everywhere else, it acts as though you're spinning an old-style wheel mouse while holding Ctrl, and zooms in repeatedly.
- seba_dos1 8y agoIt's because macOS implements kinetic scrolling in the toolkit, not in the driver (like xf86-input-synaptics and some Windows drivers do). The driver itself on macOS isn't really exceptional.
- layoutIfNeeded 8y ago>It's because macOS implements kinetic scrolling in the toolkit Which is the proper way to do it. Other vendors wanted to emulate macOS’s inertial scrolling but they had to stay compatible with all sorts of legacy APIs that only knew mouse events, so some of them cut corners and started sending these fake mouse events from the driver, to be the first on the market with “macOS-like scrolling”™. Of course this is very much a bolted-on solution, which leads to all sorts of nuisances like what’s described in the parent comment, and contributes to the general sad state of trackpad behaviour on Windows and Linux. They’ve pretty much cornered themselves, because fixing it would require a coordinated effort from the hardware/driver vendors, the OS vendors and the UI toolkit vendors. It’s just unlikely to happen unless you own the whole stack like Apple does.
- seba_dos1 8y agoNot really, at least not in the GNU/Linux case. The proper way is to do it in the driver (or in some HID abstraction of the operating system - so compositor maybe), but clearly differentiating such events in the client API, so it can be properly interpreted by clients and ignored when not relevant. Otherwise you fail to handle the case where you put your finger still to stop the scrolling steadily enough to not generate any cursor movement (libinput+GTK combo fails here, btw) and to fix that you have to move all gesture processing (including basic scrolling) to the toolkit, which is a bad idea in an environment where multiple toolkits can be used at once (basically a recipe for UX disaster).
- layoutIfNeeded 8y agoWell, at least Apple’s gesture handling API have a proven track record. You can’t abstract away gesture processing because it’s deeply intertwined with the UI logic. Inertial scrolling, rubber band effect, concurrent gestures with complex exusion rules between them, etc. If you try to abstract them away from the UI library, you’ll end up with a bloated meta-toolkit that still won’t cover all use cases, and is inflexible and prone to ossification.
- seba_dos1 8y agoApple's gesture handling API lives in a completely different environment. But I generally agree with you. It's up to client/toolkit to handle complex gestures. However, even Apple abstracts pointer movement and scrolling on input level, and that abstraction includes inertial scrolling. Rubber band effect doesn't really interwine input with UI logic (it can easily be entirely encapsulated in the widget itself) and for other gestures you're going to use some gesture-specific API anyway. The scrolling inertia is a function of the input, so the proper place to calculate it is on the OS side, not in the client/toolkit - it can be in toolkit only when the toolkit itself is a part of the OS. You don't have such toolkit in the GNU/Linux land.
- amluto 8y agoGNOME has never seemed afraid of changing the whole stack.
- ak217 8y agoI agree 100%, and I also think Force Touch doesn't get the attention it deserves. To me the 2015 Macbook Pro is the pinnacle of laptop engineering because it added the Force Touch touchpad. Being able to click anywhere on the pad and configure the strength of the haptic feedback is huge. Not having haptic feedback, or having to use a separate button, or having it vary from top to bottom depending on how far I am from the hinge, is no longer acceptable to me. Without Force Touch-like trackpad hardware, other laptops are still too far behind.
- seba_dos1 8y agoI have bought Magic Touchpad for its "Force Touch" quietness, but other than that, I find it to be more of a gimmick. It is slightly better than the hinge-pad of my Yoga 2 Pro, but it's not a life-changing experience. What is a deal-changer for me is the volume of its click sound, especially when configuring its force feedback engine on GNU/Linux to get even lower than what macOS allows ;)
- abacadaba 8y agothe game changing part is that it's actually totally viable to do real work with without a mouse. never felt that way when using a laptop before.
- seba_dos1 8y agoI've been an exclusive touchpad user for years already. This really isn't a big change - well, it could be if you move from a really crappy touchpad (and from my experience perceived crappiness is usually software's fault, although of course there are some bad apples in hardware too).
- Zephyreks 8y agoHaving used the Macbook trackpad... I don't understand the hype. As a trackpad, it's brilliant. But so what? On a table, I'd much rather use a mouse. The weirdly inaccurate precision, odd acceleration, and clumsy movement makes the trackpad feel off. There's no acceleration sweetspot and there's no sensitivity sweetspot that I could find.. On my lap, I don't usually have enough space to use a trackpad over say a trackpoint. It's a great solution, but it just doesn't solve any problem I have. I'd rather have a scroll wheel.
- ChuckNorris89 8y agoAre you sure? I just fling scrolled on my Acer's synaptics touchpad and pressing the Ctrl key while the page is rolling doesn't cause a zoom. Other specs: Acer VN17, Windows 10, Chrome I think it's because it's using the much more polished Windows 10 touchpad driver instead of the crappy synaptics one.
- jimrandomh 8y agoIt's been awhile since I've retested this on Windows; it may have been fixed recently, and it also might be touchpad-manufacturer specific.
- waiseristy 8y agoJust tried it on Win10 Chrome and Firefox. Chrome behaves correctly, Firefox zooms the page out
- em500 8y agoIn firefox you should tweak the settings of mousewheel.withcontrol.action in about:config. The default behavior is pretty terrible. https://support.mozilla.org/en-US/questions/1018310 https://support.mozilla.org/en-US/questions/1018310
- theDoug 8y agoOff-topic slightly but was curious- this works 'correctly' on my Pixelbook using its trackpad. Neat test/concept, though.
- MithrilTuxedo 8y agoI remembered this thread and came back to say the same about my Samsung Chromebook Plus. The screen scrolls the same too.
- zaat 8y agoMy ThinkPad X1 yoga passes the above test, on Windows 10. On Linux it is less definitive, but usually does.
- ktpsns 8y agoHave a Thinkpad X1 yoga, can confirm that this test works on Windows 10 but does not on standard Ubuntu linux. It's something which annoys me regularly, but one get's used with it, especially if one doesn't sit in front of a Mac daily ;-)
- lukeschlather 8y agoFor me it works in Google Chrome on either Windows 10 or Ubuntu, but Firefox does not work on either platform.
- cameronh90 8y agoI'm using default Ubuntu on a very cheap Lenovo Ideapad and it passes this test. Additionally, the touchpad works almost as well as my Mac, other than one significant annoyance: double finger right click is difficult, because it has a tendency to scroll the window as I try to press down, meaning I miss the thing I'm trying to right click. The touchpad drivers and input stack have come a very long way in Linux, if (BIG IF) you're running well supported hardware.
- sqldba 8y agoThanks for mansplaining the entire article.
- tw04 8y agoI just tried this on a surface go and a surface pro and can confirm they behave as expected. The tab closes, there is no zooming.
- fpoling 8y agoThis is just improper handling of an inertial scroll and zoom in applications, not something that OS deliver. On Mac the issue has been known for much longer and most applications adopted the proper API to detect that.
- imandride 8y agoBehaves as expected on both my XPS and SB.