rynbrd / xf86-input-mtrack

Xorg Multitouch Trackpad Driver
GNU General Public License v2.0
357 stars 58 forks source link

Stops working after extended inactivity #131

Open scarint opened 5 years ago

scarint commented 5 years ago

So far as I can tell, after extended inactivity (away for the day or night), my touchpad stops working. Often, it just stops responding to movements, but still registers clicks. My USB mouse works fine. Once it had my cursor in the wrong position on the screen (mouse clicks happened elsewhere, could use buttons animate as I hovered over something else).

I'm running Manjaro with kernel 4.20.3-1, Mate desktop. Running NVidia free drivers. Happened with the proprietary NVidia drivers as well.

Asus ROG Strix GL703V laptop. Restsarting X doesn't solve the problem, the only thing I've found that will do it is a reboot; I'm not even sure it's an mtrack problem, but it seemed similar to issue #74, but the discussion there hasn't helped me.

I haven't noticed any difference in the outputs below immediately after a reboot or when the touchpad has quit working.

I typically don't suspend during the day when I leave, but have noticed the same behavior after resuming from suspended state.

Also, possibly related, the palm detection doesn't always work, but it seems that when it does, it exhibits all the behavior above: it stops responding to everything except clicks.

~ >>> xinput                                                                   
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=11   [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver Consumer Control    id=13   [slave  pointer  (2)]
⎜   ↳ ITE Tech. Inc. ITE Device(8910) Consumer Control  id=17   [slave  pointer  (2)]
⎜   ↳ ELAN1200:00 04F3:3090 Touchpad            id=19   [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)]
    ↳ Asus Wireless Radio Control               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)]
    ↳ Logitech USB Receiver Keyboard            id=12   [slave  keyboard (3)]
    ↳ Logitech USB Receiver System Control      id=14   [slave  keyboard (3)]
    ↳ USB2.0 HD UVC WebCam: USB2.0 HD           id=15   [slave  keyboard (3)]
    ↳ ITE Tech. Inc. ITE Device(8910) Keyboard  id=16   [slave  keyboard (3)]
    ↳ ITE Tech. Inc. ITE Device(8910) System Control    id=18   [slave  keyboard (3)]
    ↳ Asus WMI hotkeys                          id=20   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=21   [slave  keyboard (3)]
    ↳ Logitech USB Receiver Consumer Control    id=22   [slave  keyboard (3)]
    ↳ ITE Tech. Inc. ITE Device(8910) Consumer Control  id=23   [slave  keyboard (3)]

~ >>> lsusb                                                                    
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 0b05:1869 ASUSTek Computer, Inc. 
Bus 001 Device 004: ID 13d3:5666 IMC Networks 
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 046d:c537 Logitech, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

~ >>> lspci                                                                    
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 05)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x16) (rev 05)
00:08.0 System peripheral: Intel Corporation Xeon E3-1200 v5/v6 / E3-1500 v5 / 6th/7th Gen Core Processor Gaussian Mixture Model
00:14.0 USB controller: Intel Corporation 100 Series/C230 Series Chipset Family USB 3.0 xHCI Controller (rev 31)
00:14.2 Signal processing controller: Intel Corporation 100 Series/C230 Series Chipset Family Thermal Subsystem (rev 31)
00:15.0 Signal processing controller: Intel Corporation 100 Series/C230 Series Chipset Family Serial IO I2C Controller #0 (rev 31)
00:16.0 Communication controller: Intel Corporation 100 Series/C230 Series Chipset Family MEI Controller #1 (rev 31)
00:17.0 RAID bus controller: Intel Corporation 82801 Mobile SATA Controller [RAID mode] (rev 31)
00:1c.0 PCI bridge: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #5 (rev f1)
00:1c.5 PCI bridge: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #6 (rev f1)
00:1c.6 PCI bridge: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #7 (rev f1)
00:1d.0 PCI bridge: Intel Corporation 100 Series/C230 Series Chipset Family PCI Express Root Port #9 (rev f1)
00:1f.0 ISA bridge: Intel Corporation HM175 Chipset LPC/eSPI Controller (rev 31)
00:1f.2 Memory controller: Intel Corporation 100 Series/C230 Series Chipset Family Power Management Controller (rev 31)
00:1f.3 Audio device: Intel Corporation CM238 HD Audio Controller (rev 31)
00:1f.4 SMBus: Intel Corporation 100 Series/C230 Series Chipset Family SMBus (rev 31)
01:00.0 VGA compatible controller: NVIDIA Corporation GP106M [GeForce GTX 1060 Mobile] (rev a1)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5229 PCI Express Card Reader (rev 01)
04:00.0 Network controller: Intel Corporation Wireless 8265 / 8275 (rev 78)
05:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961

/etc/X11/xorg.conf.d >>> ls                                                    
00-keyboard.conf  10-mtrack.conf.b   50-touchpad.conf
10-mtrack.conf    10-mtrack.conf.b1

10-mtrack.conf

# https://github.com/p2rkw/xf86-input-mtrack
# https://williambharding.com/blog/technology/toward-a-linux-touchpad-as-smooth-as-macbook-pro/
Section "InputClass"
    MatchIsTouchpad "on"
    Identifier "Touchpads"
    MatchDevicePath "/dev/input/event*"
    Driver "mtrack"
    # Sensitivity controls how fast your cursor will move. 1 is the default
    Option "Sensitivity" "1.1"
    Option "FingerHigh" "5"
    Option "FingerLow" "5"
    Option "IgnoreThumb" "true"
    Option "ThumbRatio" "70"
    Option "ThumbSize" "25"
    Option "IgnorePalm" "true"
    # This ignores tap-to-click, which causes more problems than benefit in my experience
    Option "TapButton1" "0"
    Option "TapButton2" "0"
    Option "TapButton3" "0"
    # If you want a middle-click, then "ClickFinger2" should be value "2"
    Option "ClickFinger1" "1"
    Option "ClickFinger2" "1"
    Option "ClickFinger3" "3"
    Option "ButtonMoveEmulate" "true"
    Option "ButtonIntegrated" "true"
    Option "ButtonEnable" "true"
    # "ButtonZonesEnable" means that your trackpad gets divided into three equal sections, where clicking any third of the touchpad sends the click code in "ClickFingerX". Since I didn't want middle-click, the left two thirds of my touchpad are left click, and the right third is right click:
    Option "ButtonZonesEnable" "true"
    Option "ClickTime" "25"
    # Ensures that bottom 5% of touchpad doesn't register taps
    Option "EdgeBottomSize" "5"
    Option "SwipeLeftButton" "8"
    Option "SwipeRightButton" "9"
    Option "SwipeUpButton" "0"
    Option "SwipeDownButton" "0"
    Option "SwipeDistance" "700"
    # ScrollCoast makes touchpad feel a bit more Mac-like, although it coasts in chunks and isn't relative to speed at which two finger scroll was happening
    Option "ScrollCoastDuration" "600"
    Option "ScrollCoastEnableSpeed" "0.05"
    # ScrollUpButton 4 and ScrollUpButton 5 sets up Macbook-like natural scroll. If you want to scroll down by swiping your fingers down, set ScrollUpButton to 4 and ScrollDownButton to 5
    Option "ScrollUpButton" "4"
    Option "ScrollDownButton" "5"
    Option "ScrollLeftButton" "7"
    Option "ScrollRightButton" "6"
    # Without this option set to a high value, there are types of click+hold-and-move functionality (most easily reproed by click and then move up-right) that get ignored
    Option "Hold1Move1StationaryMaxMove" "1000"
    # Smaller ScrollDistance translates to faster scrolling. ScrollDistance of 10 scrolls a long page in one swipe.
    Option "ScrollDistance" "22"
    Option "ScrollClickTime" "12"
    Option "ScrollSensitivity" "0"
EndSection
scarint commented 5 years ago

After further testing, it seems to behave better if I don't leave remmina running, though it does start acting up after resuming from suspension, first with jerky movement, then not responding to movement at all, but clicks still register.