xf86-input-mtrack icon indicating copy to clipboard operation
xf86-input-mtrack copied to clipboard

Help with scroll coasting not working

Open djhoese opened this issue 6 years ago • 4 comments

I just built and install mtrack from this master branch. I was able to get almost every basic use I wanted to work except scroll coasting. Scrolling was originally very slow but reduced the scroll distance and that seemed to help. I've tried a few different things, but I can't seem to get the scroll to continue no matter how fast I do the scroll or the distance that I do it. I tried looking at the source code, but got lost since it looks like some of the options are hardcoded and the configured ones seem (?) to be ok.

Anyone have ideas?

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SYNA1202:00 06CB:CD65 Touchpad            id=12   [slave  pointer  (2)]
⎜   ↳ PS/2 Synaptics TouchPad                   id=15   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ Sleep Button                              id=10   [slave  keyboard (3)]
    ↳ BisonCam,NB Pro: BisonCam,NB Pr           id=11   [slave  keyboard (3)]
    ↳ Intel HID events                          id=13   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=14   [slave  keyboard (3)]
$ xinput list-props 12
Device 'SYNA1202:00 06CB:CD65 Touchpad':
        Device Enabled (184):   1
        Coordinate Transformation Matrix (186): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        Device Accel Profile (318):     0
        Device Accel Constant Deceleration (319):       1.000000
        Device Accel Adaptive Deceleration (320):       1.000000
        Device Accel Velocity Scaling (321):    10.000000
        Trackpad Disable Input (322):   0
        Trackpad Sensitivity (323):     1.000000
        Trackpad Touch Pressure (324):  5, 1
        Trackpad Button Settings (325): 1, 0
        Trackpad Button Emulation Settings (326):       0, 1, 100, 0
        Trackpad Button Emulation Values (327): 0, 1, 1, 1, 1, 2, 0
        Trackpad Tap Settings (328):    25, 120, 400
        Trackpad Tap Button Emulation (329):    1, 3, 2, 0
        Trackpad Thumb Detection (330): 0, 0
        Trackpad Thumb Size (331):      25, 70
        Trackpad Palm Detection (332):  1, 0
        Trackpad Palm Size (333):       40
        Trackpad Gesture Settings (334):        10, 100
        Trackpad Smooth Scroll (335):   1
        Trackpad Scroll Settings (336): 50, 20, 0
        Trackpad Scroll Buttons (337):  5, 4, 7, 6
        Trackpad Swipe Settings (338):  1, 0, 1000
        Trackpad Swipe Buttons (339):   1, 1, 1, 1
        Trackpad Swipe4 Settings (340): 700, 300, 0
        Trackpad Swipe4 Buttons (341):  0, 0, 0, 0
        Trackpad Scroll Coasting (342): 0.100000, 500.000000
        Trackpad Edge Scroll Settings (343):    105, 20, 0, 4, 5, 6, 7
        Trackpad Edge Sizes (344):      0, 10, 0, 0
        Trackpad Scale Distance (345):  150
        Trackpad Scale Buttons (346):   12, 13
        Trackpad Rotate Distance (347): 150
        Trackpad Rotate Buttons (348):  14, 15
        Trackpad Hold1Move1 Stationary Settings (349):  20, 1
        Trackpad Hold1Move1 Settings (350):     1, 0, 1000
        Trackpad Hold1Move1 Buttons (351):      1, 1, 1, 1
        Trackpad Drag Settings (352):   1, 350, 40, 200, 500
        Trackpad Axis Inversion (353):  0, 0

Edit: This is PopOS (Ubuntu) 19.04 with KDE.

djhoese avatar Sep 06 '19 16:09 djhoese

Did you set the ScrollCoastDuration to a high enough value? Try setting your ScrollCoastEnableSpeed to something like .3

        Option          "ScrollCoastDuration" "1000"
        Option          "ScrollCoastEnableSpeed" ".3"

mips171 avatar Nov 10 '19 11:11 mips171

I had it set to 0.3 for EnableSpeed and the duration to 500. I bumped it to 1000 and yeah it feels a little better.

Edit: Can't get it to work with Konsole, will have to look that up.

djhoese avatar Nov 10 '19 22:11 djhoese

You can try bumping ScrollCoastDuration, I believe values over 1s will give you that coasting feeling. What we need now is a way to more gradually ramp up and down the coasting speed, i.e. overcome initial friction (a weight value?), inertia coasts you, then friction slows you back down. This should also make it so slow scrolling moves you less, which is intuitive because you are overcoming the weight of the object. Imagine you are pushing a loaded cart on rails, give it a light push it moves only a little, maybe even not at all, but push it harder and keep pushing it and it will keep going until it slows down under it's own weight or it hits the end of the track or, in our case, the content.

For now you can try my Macbook Pro 2013 config. https://github.com/p2rkw/xf86-input-mtrack/pull/95

mips171 avatar Nov 10 '19 22:11 mips171

I was completely wrong I think. Turns out for me I had libinput also running. I moved the mtrack.conf file to a higher priority than libinput and now things are much different (better). In my case libinput was at 40-libinput.conf, so I moved mtrack to 30.

Try something like this on your system: mv /usr/share/X11/xorg.conf.d/50-mtrack.conf /usr/share/X11/xorg.conf.d/30-mtrack.conf

mips171 avatar Nov 11 '19 08:11 mips171