web-dev-qa-db-fra.com

Impossible de déplacer la souris sur de courtes distances à l'aide du pavé tactile

J'ai récemment un nouveau Lenovo Y50 et j'utilise Ubuntu 14.04. Sur mon précédent Dell XPS 17, le pavé tactile avait une excellente réponse même lorsque je bougeais légèrement le doigt - en déplaçant mon doigt sur une très courte distance, je pouvais déplacer la souris pixel par pixel, ce qui était très utile pour, par exemple, saisir les bordures de fenêtre étroites. Cependant, sur cette nouvelle machine, la souris ne répond pas tant que mon doigt n’a pas déplacé mon doigt d’environ un demi-centimètre; la souris sautera alors d’une dizaine de pixels environ. Une fois que la souris bouge de cette manière, je suis capable de la déplacer de manière arbitraire à des distances précises en déplaçant mon doigt plus lentement. J'aimerais avoir cette précision serrée même si je ne déplace pas déjà la souris. (Remarque: ce problème ne se produit pas lors de l'utilisation d'une souris USB.)

Je pensais que la désactivation de noise cancellation dans xinput pourrait être utile, alors j’ai réglé les valeurs d’annulation du bruit sur zéro, mais cela n’a pas aidé. La détection de paume est également mise à zéro. Est-ce que quelqu'un sait comment atteindre la précision de la souris pour les petits mouvements du pavé tactile?

Je vous remercie!

Pour référence, xinput properties:

$ xinput list-props 'ETPS/2 Elantech Touchpad'
Device 'ETPS/2 Elantech Touchpad':
    Device Enabled (155):   1
    Coordinate Transformation Matrix (157): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (278): 1
    Device Accel Constant Deceleration (279):   1.750000
    Device Accel Adaptive Deceleration (280):   1.000000
    Device Accel Velocity Scaling (281):    12.500000
    Synaptics Edges (282):  127, 3061, 112, 1973
    Synaptics Finger (283): 1, 1, 0
    Synaptics Tap Time (284):   180
    Synaptics Tap Move (285):   10
    Synaptics Tap Durations (286):  180, 180, 100
    Synaptics ClickPad (287):   1
    Synaptics Middle Button Timeout (288):  0
    Synaptics Two-Finger Pressure (289):    282
    Synaptics Two-Finger Width (290):   7
    Synaptics Scrolling Distance (291): 45, 45
    Synaptics Edge Scrolling (292): 0, 0, 0
    Synaptics Two-Finger Scrolling (293):   1, 1
    Synaptics Move Speed (294): 1.000000, 1.750000, 0.052507, 0.000000
    Synaptics Off (295):    0
    Synaptics Locked Drags (296):   0
    Synaptics Locked Drags Timeout (297):   5000
    Synaptics Tap Action (298): 2, 3, 0, 0, 1, 3, 0
    Synaptics Click Action (299):   1, 3, 0
    Synaptics Circular Scrolling (300): 0
    Synaptics Circular Scrolling Distance (301):    0.100000
    Synaptics Circular Scrolling Trigger (302): 0
    Synaptics Circular Pad (303):   0
    Synaptics Palm Detection (304): 0
    Synaptics Palm Dimensions (305):    1000, 1000
    Synaptics Coasting Speed (306): 20.000000, 50.000000
    Synaptics Pressure Motion (307):    30, 160
    Synaptics Pressure Motion Factor (308): 1.000000, 1.000000
    Synaptics Resolution Detect (309):  1
    Synaptics Grab Event Device (310):  1
    Synaptics Gestures (311):   1
    Synaptics Capabilities (312):   1, 0, 0, 1, 1, 1, 1
    Synaptics Pad Resolution (313): 32, 32
    Synaptics Area (314):   0, 0, 0, 0
    Synaptics Soft Button Areas (315):  1594, 0, 1709, 0, 0, 0, 0, 0
    Synaptics Noise Cancellation (316): 0, 0
    Device Product ID (271):    2, 14
    Device Node (272):  "/dev/input/event5"

Pour référence, synclient paramètres:

$ synclient
Parameter settings:
    LeftEdge                = 127
    RightEdge               = 3061
    TopEdge                 = 112
    BottomEdge              = 1973
    FingerLow               = 1
    FingerHigh              = 1
    MaxTapTime              = 180
    MaxTapMove              = 100
    MaxDoubleTapTime        = 180
    SingleTapTimeout        = 180
    ClickTime               = 100
    EmulateMidButtonTime    = 0
    EmulateTwoFingerMinZ    = 282
    EmulateTwoFingerMinW    = 7
    VertScrollDelta         = 45
    HorizScrollDelta        = 45
    VertEdgeScroll          = 0
    HorizEdgeScroll         = 0
    CornerCoasting          = 0
    VertTwoFingerScroll     = 1
    HorizTwoFingerScroll    = 1
    MinSpeed                = 1
    MaxSpeed                = 1.75
    AccelFactor             = 0.0525072
    TouchpadOff             = 0
    LockedDrags             = 0
    LockedDragTimeout       = 5000
    RTCornerButton          = 2
    RBCornerButton          = 3
    LTCornerButton          = 0
    LBCornerButton          = 0
    TapButton1              = 1
    TapButton2              = 3
    TapButton3              = 0
    ClickFinger1            = 1
    ClickFinger2            = 3
    ClickFinger3            = 0
    CircularScrolling       = 0
    CircScrollDelta         = 0.1
    CircScrollTrigger       = 0
    CircularPad             = 0
    PalmDetect              = 0
    PalmMinWidth            = 1000
    PalmMinZ                = 1000
    CoastingSpeed           = 20
    CoastingFriction        = 50
    PressureMotionMinZ      = 30
    PressureMotionMaxZ      = 160
    PressureMotionMinFactor = 1
    PressureMotionMaxFactor = 1
    ResolutionDetect        = 1
    GrabEventDevice         = 1
    TapAndDragGesture       = 1
    AreaLeftEdge            = 0
    AreaRightEdge           = 0
    AreaTopEdge             = 0
    AreaBottomEdge          = 0
    HorizHysteresis         = 0
    VertHysteresis          = 0
    ClickPad                = 1
    RightButtonAreaLeft     = 1594
    RightButtonAreaRight    = 0
    RightButtonAreaTop      = 1709
    RightButtonAreaBottom   = 0
    MiddleButtonAreaLeft    = 0
    MiddleButtonAreaRight   = 0
    MiddleButtonAreaTop     = 0
    MiddleButtonAreaBottom  = 0
3
Michael Tingley

Mon Lenovo t540p présentait les mêmes problèmes avec le profil d’accélération par défaut = 1 (en fonction du périphérique).

Cela semble être lié à l'accélération du pointeur de XOrg et "profil d'accélération" . Si vous définissez le profil d'accélération du périphérique sur -1 (aucun), le symptôme de point mort semble disparaître bien que le curseur de la souris se déplace sur de très petites distances à l'écran, ce qui le rend très précis mais relativement inutile.

Je suis passé à un profil d'accélération linéaire (AccelerationProfile 6) et j'ai constaté une amélioration immédiate. L'hésitation initiale du mouvement est toujours là, mais le curseur ne saute pas comme auparavant.

Des recherches supplémentaires sur la cause du "point mort" sont justifiées, mais cela peut être dû au comportement du microprogramme. Le page de manuel synaptics mentionne la suppression du bruit du microprogramme qui peut être difficile ou impossible à contrôler à l'heure actuelle:

Annulation de bruit

Le synaptics a une annulation de bruit intégrée basée sur l'hystérésis. Cela signifie que les coordonnées entrantes déplacent en réalité une zone de dimensions prédéfinies de manière à couvrir les coordonnées entrantes, et que seul le centre de la boîte est utilisé en entrée. Évidemment, plus la boîte est petite, mieux cela vaut, mais la probabilité de mouvement du bruit augmente également.

Modification du profil d'accélération et de la configuration associée

Voici un script que j'utilise pour modifier les paramètres de mon système:

#!/bin/bash
DEVICE="SynPS/2 Synaptics TouchPad"
xinput --set-prop "$DEVICE" "Device Accel Profile" 6
xinput --set-prop "$DEVICE" "Device Accel Constant Deceleration" 12
xinput --set-prop "$DEVICE" "Device Accel Velocity Scaling" 20

Une fois que vous avez trouvé les paramètres qui vous conviennent, vous pouvez choisir de les ajouter à votre fichier /etc/X11/xorg.conf.d/51-synaptics-quirks.conf (copié à partir de /usr/share/X11/xorg.conf.d) ou de créer un nouveau fichier .conf distinct avec un nom tel que 99-your-config-file-name.conf.

Option "AccelerationProfile" "6"
# May want to set "ConstantDeceleration" and "VelocityScale" or other 
# values here as well
7
Inactivist

Je pourrais résoudre le problème pour moi (ThinkPad T460s) en exécutant:

$ synclient HorizHysteresis=0
$ synclient VertHysteresis=0

Utilisation du logiciel de configuration synaptics synclient.

Ces paramètres ont déjà été définis sur 0 dans la question initiale par @MichaelTingley, mais dans mon cas, ils ont été définis sur 28. Leur réglage à zéro a éliminé la nécessité de déplacer le doigt un peu avant que la souris ne bouge réellement.

Ces paramètres peuvent être définis de manière permanente en ajoutant ceci à votre /etc/X11/xorg.conf.d/70-synaptics.conf:

Section "InputClass"
    Identifier "touchpad"
    Driver "synaptics"
    Option "HorizHysteresis" "0"
    Option "VertHysteresis" "0"
EndSection

Et grâce à la réponse complète de @Inactivist qui m'a orienté dans la bonne direction.

0
twall