Touchpad Synaptics

De ArchwikiFR


Cet article détaille l'installation et la configuration des drivers des touchpad Synaptics (et ALPS) que l'on trouve sur la plupart des PC portables.

Vérification

Afin de vérifier que vous avez bien un touchpad Synaptics vous pouvez lancer la commande suivante :

dmesg | grep -i Synaptics

Si rien n'est retourné, c'est que vous n'avez pas de touchpad Synaptics. Si vous avez une sortie ressemblant à celle-ci, vous en avez un :

[    5.690741] Synaptics Touchpad, model: 1, fw: 7.0, id: 0x280b1, caps: 0xd04711/0xe0040d/0x20000
[    5.733273] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio4/input/input11

La plupart des touchpads sont en PS/2, mais certains sont en USB. Pour savoir, faites :

lsusb | grep -i Synaptics

Si vous avez un touchpad synaptics USB, vous obtiendrez quelque chose, par exemple :

Bus 001 Device 006: ID 413c:8162 Dell Computer Corp. Integrated Touchpad [Synaptics]
Note: Vous pouvez également installer hwinfo et examiner la sortie de:
hwinfo --mouse

Sur des ordinateurs portables de plus de 5 ans, votre touchpad peut aussi être sur un bus ISA. En fait, si vous avez un touchpad sur un ordinateur x86 récent qui n'est pas un Apple, il y a de fortes chances que ce soit un synaptics.

Installation

Les drivers Synaptics sont disponibles dans le paquet xf86-input-synaptics du dépôt [extra]

pacman -S xf86-input-synaptics

Configuration

Lors de l'installation du paquet, un fichier de configuration, /etc/X11/xorg.conf.d/50-synaptics.conf, est installé avec les paramètres suivants:

Fichier: /etc/X11/xorg.conf.d/50-synaptics.conf

<pre<noinclude></noinclude> style="padding: 0.25em; margin: 0 0 0.50em 0; background-color: #F7F7F7; border: thin dashed #7F7F7F; border-top: none"> # Example xorg.conf.d snippet that assigns the touchpad driver # to all touchpads. See xorg.conf.d(5) for more information on # InputClass. # DO NOT EDIT THIS FILE, your distribution will likely overwrite # it when updating. Copy (and rename) this file into # /etc/X11/xorg.conf.d first. # Additional options may be added in the form of # Option "OptionName" "value" # Section "InputClass" Identifier "touchpad catchall" Driver "synaptics" MatchIsTouchpad "on" Option "TapButton1" "1" Option "TapButton2" "2" Option "TapButton3" "3" # This option is recommend on all Linux systems using evdev, but cannot be # enabled by default. See the following link for details: # http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html MatchDevicePath "/dev/input/event*" EndSection Section "InputClass" Identifier "touchpad ignore duplicates" MatchIsTouchpad "on" MatchOS "Linux" MatchDevicePath "/dev/input/mouse*" Option "Ignore" "on" EndSection # This option enables the bottom right corner to be a right button on # non-synaptics clickpads. # This option is only interpreted by clickpads. Section "InputClass" Identifier "Default clickpad buttons" MatchDriver "synaptics" Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0" # To disable the bottom edge area so the buttons only work as buttons, # not for movement, set the AreaBottomEdge # Option "AreaBottomEdge" "82%" EndSection # This option disables software buttons on Apple touchpads. # This option is only interpreted by clickpads. Section "InputClass" Identifier "Disable clickpad buttons on Apple touchpads" MatchProduct "Apple|bcm5974" MatchDriver "synaptics" Option "SoftButtonAreas" "0 0 0 0 0 0 0 0" EndSection </pre<noinclude></noinclude>>

Le driver Synaptics dispose d'une multitude d'options pour configurer les différents comportements de votre touchpad. Heureusement, celles-ci sont explicites et bien documentées dans la documentation officielle.

man synaptics

Voici un exemple de configuration possible:

Section "InputClass"
     Identifier "touchpad catchall"
     Driver "synaptics"
     MatchIsTouchpad "on"
            Option "TapButton1" "1"
            Option "TapButton2" "2"
            Option "TapButton3" "3"
            Option "VertEdgeScroll" "on"
            Option "VertTwoFingerScroll" "on"
            Option "HorizEdgeScroll" "on"
            Option "HorizTwoFingerScroll" "on"
            Option "CircularScrolling" "on"
            Option "CircScrollTrigger" "2"
            Option "EmulateTwoFingerMinZ" "0"
             ...autres lignes...
EndSection

Pour en arriver à déterminer ce type de configuration, xinput et synclient sont les outils appropriés.

xinput

Selon votre modèle, le touchpad peut supporter plus ou moins de fonctionnalités. xinput (présent dans xorg-xinput que vous devriez déjà avoir installé :-) ) peut vous permettre de voir lesquelles. Pour trouver le nom de votre touchpad (X doit être lancé):

xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=13   [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)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ USB2.0 UVC 1.3M WebCam                    id=10   [slave  keyboard (3)]
    ↳ Asus EeePC extra buttons                  id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]

Puis sa configuration actuelle et ses caractéristiques:

xinput list-props "SynPS/2 Synaptics TouchPad"

Par exemple:

Device 'SynPS/2 Synaptics TouchPad':
       Device Enabled (135):   1
       Coordinate Transformation Matrix (137): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
       Device Accel Profile (256):     1
       Device Accel Constant Deceleration (257):       2.500000
       Device Accel Adaptive Deceleration (258):       1.000000
       Device Accel Velocity Scaling (259):    12.500000
       Synaptics Edges (260):  1775, 5505, 1648, 4602
       Synaptics Finger (261): 25, 30, 256
       Synaptics Tap Time (262):       180
       Synaptics Tap Move (263):       243
       Synaptics Tap Durations (264):  180, 180, 100
       Synaptics Tap FastTap (265):    0
       Synaptics Middle Button Timeout (266):  75
       Synaptics Two-Finger Pressure (267):    282
       Synaptics Two-Finger Width (268):       7
       Synaptics Scrolling Distance (269):     110, 110
       Synaptics Edge Scrolling (270): 0, 0, 0
       Synaptics Two-Finger Scrolling (271):   1, 0
       Synaptics Move Speed (272):     1.000000, 1.750000, 0.036160, 40.000000
       Synaptics Edge Motion Pressure (273):   30, 160
       Synaptics Edge Motion Speed (274):      1, 442
       Synaptics Edge Motion Always (275):     0
       Synaptics Off (276):    0
       Synaptics Locked Drags (277):   0
       Synaptics Locked Drags Timeout (278):   5000
       Synaptics Tap Action (279):     0, 0, 0, 0, 1, 2, 3
       Synaptics Click Action (280):   1, 1, 1
       Synaptics Circular Scrolling (281):     1
       Synaptics Circular Scrolling Distance (282):    0.100000
       Synaptics Circular Scrolling Trigger (283):     0
       Synaptics Circular Pad (284):   0
       Synaptics Palm Detection (285): 0
       Synaptics Palm Dimensions (286):        10, 200
       Synaptics Coasting Speed (287): 20.000000, 50.000000
       Synaptics Pressure Motion (288):        30, 160
       Synaptics Pressure Motion Factor (289): 1.000000, 1.000000
       Synaptics Grab Event Device (290):      1
       Synaptics Gestures (291):       1
       Synaptics Capabilities (292):   1, 0, 1, 1, 1, 1, 1
       Synaptics Pad Resolution (293): 136, 80
       Synaptics Area (294):   0, 0, 0, 0
       Synaptics Noise Cancellation (295):     27, 27
       Device Product ID (296):        2, 7
       Device Node (297):      "/dev/input/event10"

La ligne Capabilities indique ici:

  • 1: le périphérique a un bouton gauche physique
  • 0: pas de bouton du milieu physique
  • 1: un bouton droit physique est présent
  • 1: support de détection à deux-doigts
  • 1: support de détection à trois-doigts
  • 1: configuration possible de la résolution verticale
  • 1: configuration possible de la résolution horizontale

synclient

synclient est fourni avec xf86-input-synaptics et vous permet de configurer à la volée votre touchpad lors de votre session graphique. Consultez man synclient et man synaptics pour connaître les options et leurs valeurs possibles.

Astuce: Certaines options de synclient, comme le debug en temps réel, nécessitent d'avoir activé le mode SHM au niveau de /etc/X11/xorg.conf.d/10-synaptics.conf :
Section "InputClass"
      Identifier "touchpad catchall"
      Driver "synaptics"
      MatchIsTouchpad "on"
...autres lignes...
      Option "SHMConfig" "on"
...autres lignes...
EndSection

Pour connaître la configuration actuelle de votre touchpad:

synclient
Parameter settings:
   LeftEdge                = 1775
   RightEdge               = 5505                                                                             
   TopEdge                 = 1648                                                                             
   BottomEdge              = 4602                                                                             
   FingerLow               = 25                                                                               
   FingerHigh              = 30                                                                               
   FingerPress             = 256                                                                              
   MaxTapTime              = 180                                                                              
   MaxTapMove              = 243                                                                              
   MaxDoubleTapTime        = 180                                                                              
   SingleTapTimeout        = 180                                                                              
   ClickTime               = 100                                                                              
   FastTaps                = 0                                                                                
   EmulateMidButtonTime    = 75                                                                               
   EmulateTwoFingerMinZ    = 282                                                                              
   EmulateTwoFingerMinW    = 7                                                                                
   VertScrollDelta         = 110                                                                              
   HorizScrollDelta        = 110                                                                              
   VertEdgeScroll          = 0                                                                                
   HorizEdgeScroll         = 0                                                                                
   CornerCoasting          = 0                                                                                
   VertTwoFingerScroll     = 1
   HorizTwoFingerScroll    = 0
   MinSpeed                = 1
   MaxSpeed                = 1.75
   AccelFactor             = 0.0361598
   TrackstickSpeed         = 40
   EdgeMotionMinZ          = 30
   EdgeMotionMaxZ          = 160
   EdgeMotionMinSpeed      = 1
   EdgeMotionMaxSpeed      = 442
   EdgeMotionUseAlways     = 0
   TouchpadOff             = 0
   LockedDrags             = 0
   LockedDragTimeout       = 5000
   RTCornerButton          = 0
   RBCornerButton          = 0
   LTCornerButton          = 0
   LBCornerButton          = 0
   TapButton1              = 1
   TapButton2              = 2
   TapButton3              = 3
   ClickFinger1            = 1
   ClickFinger2            = 1
   ClickFinger3            = 1
   CircularScrolling       = 1
   CircScrollDelta         = 0.1
   CircScrollTrigger       = 0
   CircularPad             = 0
   PalmDetect              = 0
   PalmMinWidth            = 10
   PalmMinZ                = 200
   CoastingSpeed           = 20
   CoastingFriction        = 50
   PressureMotionMinZ      = 30
   PressureMotionMaxZ      = 160
   PressureMotionMinFactor = 1
   PressureMotionMaxFactor = 1
   GrabEventDevice         = 1
   TapAndDragGesture       = 1
   AreaLeftEdge            = 0
   AreaRightEdge           = 0
   AreaTopEdge             = 0
   AreaBottomEdge          = 0

Par exemple, pour activer le défilement horizontal à deux doigts:

synclient HorizTwoFingerScroll=1
Astuce: Si une option persiste à rester à 0 en dépit de vos réglages, c'est que le touchpad ne gère pas cette fonctionnalité.

Une fois vos réglages trouvés, il ne vous restera qu'à les fixer dans /etc/X11/xorg.conf.d/10-synaptics.conf. Ainsi:

Section "InputClass"
      Identifier "touchpad catchall"
      Driver "synaptics"
      MatchIsTouchpad "on"
...autres lignes...
      Option "HorizTwoFingerScroll" "on"
...autres lignes...
EndSection

Gnome

L'environnement de bureau Gnome a ses propres réglages qui, par défaut, surpassent ceux de X. Ils sont accessibles depuis le panneau de contrôle de gnome (gnome-control-center), rubrique «souris et pavé tactile» (ou par dconf-editor, dans /org/gnome/settings-daemon/plugins/mouse/).