Score:1

Ubuntu on 2012 Macbook Pro - Pointer stops when extra pressure is applied to touchpad

fr flag

Any help would be greatly appreciated. I installed Ubuntu on a Macbook Pro, and everything is working well, with the exception of the touchpad.

The pointer moves only when I operate the touchpad with the absolute minimum amount of pressure.

By applying just a little extra tad of pressure, the pointer stops and gets stuck. By alleviating the pressure on the touchpad to the minimum, it starts moving again.

If I boot on Mac Recovery mode, the touchpad works fine and doesn't stop working based on the pressure of my fingers. And it's normal use, nothing out of the ordinary in terms of pressure applied on the touchpad.

I tried installing a few tools to change every setting possible for the touchpad, such as disable while typing, scrolling settings, etc, and wasn't able to get this to work properly. Any suggestions?

My version of Ubuntu is 21.10 | OS Type 64-bit | GNOME version 40.4.0 | Windowing System Wayland

Below is a short video showing the pointer getting stuck when the touchpad pressure increases. The video has libinput open measuring the touchpad pressure.

https://youtu.be/MqLGDbBO5Y4

And the output from libinput:

+---------------------------------------------+
| Thresh |   30   |  25  |  130   |  256   |                                    |
+---------------------------------------------+
| Touch  |  down  |  up  |  palm  | thumb  | min  | max  | p  | avg  |  median  |
+---------------------------------------------+
|  1750  |   x    |  x   |   x    |        |  25  | 241  | 0  | 174  |   177    |
|  1751  |   x    |  x   |   x    |        |  26  | 218  | 0  | 176  |   174    |
|  1752  |   x    |  x   |   x    |        |  22  | 212  | 0  | 155  |   155    |
|  1753  |   x    |  x   |   x    |        |  50  | 193  | 0  | 163  |   176    |
+---------------------------------------------+

Thanks so much in advance!


From what I'm seeing, it seems that what's going on is that palm detection is triggering super early, even when I have only one finger pressing slightly on the touchpad.

I'm trying to input a local-overrides.quirks file, but not sure how I make libinput actually read the quirks file. Is it just a matter of logging off and back in?

This is the .ini file I'm trying to have libinput read.

Not sure the syntax of MatchDMIModalias is good...

[Touchpad palm pressure override]
MatchUdevType=touchpad
MatchName=bcm5974
MatchDMIModalias=dmi:*svnAppleInc.:*pnMacBookPro9,2*
AttrPalmPressureThreshold=256

I wasn't able to figure out the local-overrides.quirks to work, so I edited the actual quirks file that libinput reads when it inializes.

I moved the palmpressurethreshold to the maximum, so now when measuring it, it doesn't trigger the palm anymore.

ModelAppleTouchpad=1
AttrSizeHint=104x75
AttrTouchSizeRange=150:130
AttrPalmSizeThreshold=700
AttrPalmPressureThreshold=255

Still, the pointer still freezes when I apply just a little more pressure to it. :'(


+---------------------------------------------+
| Thresh |   30   |  25  |  255   |  256   |                                    |
+---------------------------------------------+
| Touch  |  down  |  up  |  palm  | thumb  | min  | max  | p  | avg  |  median  |
+---------------------------------------------+
|   32   |   x    |  x   |        |        |  34  | 139  | 0  | 121  |   128    |
|   33   |   x    |  x   |        |        |  25  | 127  | 0  | 112  |   114    |
|   34   |   x    |  x   |        |        |  24  | 130  | 0  | 112  |   116    |
|   35   |   x    |  x   |        |        |  20  | 139  | 0  | 103  |   105    |
|   36   |   x    |  x   |        |        |  21  | 148  | 0  | 125  |   132    |
|   37   |   x    |  x   |        |        |  31  | 238  | 0  | 156  |   160    |
|   38   |   x    |  x   |        |        |  26  | 180  | 0  | 139  |   145    |
|   39   |   x    |  x   |        |        |  17  | 166  | 0  | 135  |   142    |
|   40   |   x    |  x   |        |        |  31  | 222  | 0  | 142  |   140    |
|   41   |   x    |  x   |        |        |  36  | 172  | 0  | 140  |   143    |
|   41   |   x    |  x   |        |        |  0   | 172  | 0  | 138  |   143    |

Still, the pointer keeps freezing when I apply just a tad more pressure, even without signaling the palm touch on the measure tool. :'(. Gotta keep investigating!


Yay!!! Fixed by breaking it!

So, even after adjusting the palm pressure threshold so the palm would never trigger, the pointer kept freezing when I applied some extra pressure on the touchpad. Very annoying. I tried many of hthe different boolean quirks such as ModelTabletModeNoSuspend, ModelTabletModeSwitchUnreliable, thinking that the extra pressure could be making linbinput think I was switching to tablet mode and disabling the touchpad somehow. Not successful.

Then I decided to throw the kitchen sink at it and made the boolean value "5", just to see if it was actually reading what I was writing. That led to a parse error on the quirk which prevented the entire quirk from running, and voila! The touchpad was working perfectly! That made me realize that one of the preset settings on the quirk is what was making the pointer freeze.

The guilty parameter was AttrPalmSizeThreshold. Somehow, this quirk freezes the pointer if it detects extra pressure, at least on my Macbook Pro 9,2. Removing it from the quirk made the touchpad work just fine! Great success!

in flag
The solution is going to depend greatly on which version of Ubuntu you're running. Could you [edit] your question to include: (0) the version of Ubuntu (1) the complete Terminal output of `sudo libinput measure touchpad-pressure`. This second item will have you test the pressure sensitivity of the touchpad. You may need to adjust a configuration file to solve the issue, and the numbers from `libinput` will help make this possible
fr flag
Hi Matigo, thank you so much for your reply. I updated the original post with the version and also a video of libinput monitoring the touchpad pressure. I'm going to look into how to update the config file for libinput. Any light you'd be able to shed here would be amazing!
fr flag
Added the output from libinput as well!
Someone avatar
my flag
What are your touchpad settings? Are correct drivers installed? Is there some specific time when this happens? Were you doing some specific task while this happened? Please [edit] to include all these details with some additional details!
fr flag
Hi Someone. The touchpad has been behaving like this since I first installed Ubuntu on this Macbook. If I launch Mac in recovery mode, the trackpad functions normally, though, which indicates that it isn't a hardware issue.
fr flag
Hi matigo and Someone, thanks so much for your help. Would you clarify, when you get a chance, on how I can make libinput "read" my quirks file? I added it to /etc/libinput/local-overrides.quirks, tried logging off and on, restarting, but when I run "libinput quirks list /dev/input/event7", I only get the same quirks, regardless of what I add to the override file. Thank you
mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.