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!