Vous êtes ici: La documentation de Slackware-fr » Thématique Installation » Articles, Installation » Driver synaptics: le bonheur des touchpads pour ordinateurs portables

Driver synaptics: le bonheur des touchpads pour ordinateurs portables

Auteur: Wedge

Introduction

Vous venez d'acquérir un ordinateur portable et vous avez (bien entendu …) installé une Slackware dessus.

Votre nouveau matériel est prêt à l'emploi, mais il y a un tout petit hic tout de même: impossible de manipuler les barres de défilement (aussi appelés ascenceurs par certains) verticales et horizontales ! C'est tout de même un peu rageant de devoir à chaque fois à cliquer sur les petites flêches haut/bas pour faire défiler un texte sur votre éditeur ou votre navigateur préféré. Il serait tellement simple de faire glisser doucement le doigt sur le bord droit du touchpad pour faire défiler le texte … He bien c'est possible !!!

Tout ceci grace à un petit driver à installer et à configurer correctement: synaptics. Je me propose donc ici de vous expliquer où le trouver, comment l'installer et le configurer.

De plus, je vous proposerais ici de créer un package Slackware que vous pourrez réinstaller au besoin.

Récupèrer le driver

La première chose à faire, est bien entendu de télécharger le driver.

Voici l'adresse du site où vous pourrez le trouver: Site officiel du driver synaptics

Récupérez-y la dernière version des sources (au moment où j'écris cet article: 0.14.6)

Compiler et installer le driver

Vous disposez maintenant d'un fichier archive comme celui ci synaptics-0.14.6.tar.bz2

Une fois cette archive “explosée” et “détarée”, entrez dans le répertoire synaptics-0.14.6 pour pouvoir compiler le driver.

Bien sur, notre premier réflexe sera d'aller consulter le fichier INSTALL afin de savoir exactement ce qui est nécessaire au bon déroulement de la suite des évènements.

[wedge@chimaera ~]$ cd synaptics-0.14.6
[wedge@chimaera synaptics-0.14.6]$ less INSTALL
[...]
Requirements
------------

1. You need X include files. On RPM based systems, they are usually
included in the XFree86-devel package. On Debian systems, you need
to install the packages x-dev, libx11-dev and libxext-dev.

2. For use with kernel 2.6.x you need to enable synaptics touchpad
support when configuring the kernel (CONFIG_MOUSE_PS2). You also
need support for the evdev interface (CONFIG_INPUT_EVDEV). If you
compile evdev as a module, make sure it is loaded before starting
the X server, as it will not be auto-loaded.

[...]

On apprend alors que les fichiers includes de X sont nécessaires. Il faut donc avoir installé le package xorg-server (pour ma Slackware 12.0, il s'agit de xorg-server-1.3.0.0-i486-2). De toute façon, si vous fonctionnez en mode graphique, vous n'avez même pas à vous poser la question ;-)

On apprend aussi qu'il faut avoir activé certains supports au niveau du noyau: MOUSE_PS2 et INPUT_EVDEV (je suppose ici que vous disposez d'un noyau 2.6, si vous avez encore un noyau 2.4, consultez les fichier README et INSTALL de manière plus approfondie). Nous allons donc vérifier que ces supports sont activés:

[wedge@chimaera ~]$ grep MOUSE_PS2 /usr/src/linux/.config
CONFIG_MOUSE_PS2=y
[wedge@chimaera ~]$ grep INPUT_EVDEV /usr/src/linux/.config
CONFIG_INPUT_EVDEV=y

Si vous voyez un n à la place du y, c'est que votre noyau n'a pas été configuré avec les supports requis, il va donc falloir le recompiler après les avoir activés. Pour la recompilation, je vous laisse consulter les autres tutoriaux prévus à cet effet.

Si vous voyez des y partout, c'est tout bon, on va pouvoir passer à la compilation. Il suffit de taper make:

[wedge@chimaera synaptics-0.14.6]$ make

La compilation est plutôt rapide et se passe logiquement sans encombre. Ensuite, on passe à l'installation, en mode root bien entendu:

[wedge@chimaera synaptics-0.14.6]$ su
password:
[root@chimaera synaptics-0.14.6]# make install
install -D synclient /usr/local/bin/synclient
install -D syndaemon /usr/local/bin/syndaemon
install --mode=0644 -D synaptics_drv.o //usr/X11R6/lib/modules/input/synaptics_drv.o

Et voila, le driver est installé ! Mais pour pouvoir indiquer au serveur X que vous voulez l'utiliser, il va falloir effectuer quelques petites modifications au niveau du fichier de configuration de X: le fameux /etc/X11/xorg.conf (là encore, je suppose que vous utilisez xorg, pour les utilisateurs de XFREE86, la manipulation devrait être la même sauf le nom du fichier: /etc/X11/XF86CONFIG).

Modifier xorg.conf

On va donc, comme le dit le titre, modifier le fichier xorg.conf:

[root@chimaera synaptics-0.14.6]# vim /etc/X11/xorg.conf

Allez jusqu'à la section InputDevice et modifiez la comme suit :

Section "InputDevice"
    Identifier     "Mouse[1]"
    Driver         "synaptics"
    Option         "Name" "Synaptics;Touchpad"
    Option         "Protocol" "explorerps/2"
    Option         "SHMConfig" "on"
    Option         "Device" "/dev/input/mice"
    Option         "HorizScrollDelta" "0"
    Option         "InputFashion" "Mouse"
    Option         "Vendor" "Sysp"
    Option         "ZAxisMapping" "4 5"
    Option         "Emulate3Buttons" "on"
    Option         "Buttons" "5"
EndSection
Dans la version précédente de ce tutoriel, je vous avais présenté une section “InputDevice” beaucoup plus fournie, cela était dû à l'utilisation de la version non modulaire de xorg (version inférieure à 7.0).

Désormais, une bonne partie de ces options n'est plus nécessaire, mais je vous les laisse tout de même dans la liste ainsi que leurs explications :-P:

  • Driver: le driver … synaptics, bien entendu ;-)
  • Identifier: le nom que vous avez défini pour votre pad, attention, il faut que ce nom soit le même dans cette section et dans la section ServerLayout pour la ligne InputDevice “Pad” “CorePointer”. Ce nom est totalement arbitraire, à vous de mettre ce que vous voulez.
  • Option “Device”: le périphérique de votre pad, par défaut c'est /dev/psaux
  • Option “Protocol”: le protocole de transfert d'informations, pour une souris classique, ça serait Imps/2, ici j'ai mis explorerps/2
  • Option “SHMConfig”: permet l'utilisation de la mémoire partagée pour la configuration automatique
  • Option “LeftEdge”: l'abcisse du bord gauche
  • Option “RightEdge”: l'abcisse du bord droit
  • Option “TopEdge”: l'ordonnée du bord supérieur
  • Option “BottomEdge”: l'ordonnée du bord inférieur
  • Option “FingerLow”: la pression maximum en dessous de laquelle le driver suppose qu'on n'appuye plus sur le pad
  • Option “FingerHigh”: la pression minimum au dessus de laquelle le driver supponse qu'on appuye sur le pad
  • Option “MaxTapTime”: le temps maximum (en ms) en dessous duquel le driver interprete un “tap” sur le pad
  • Option “MaxTapMove”: le nombre de mouvements maximum en dessous duquel le driver interprete un “tap” sur le pad
  • Option “EmulateMidButtonTime”: le temps maximum (en ms) en dessous duquel le driver interprete un clic “bouton du milieu”
  • Option “VerScrollDelta”: distance de déplacement minimum du doigt pour faire un scroll vertical
  • Option “HorizScrollDelta”: distance de déplacement minimum du doigt pour faire un scroll horizontal
  • Option “MinSpeed”: facteur de vitesse minimum pour le déplacement du curseur
  • Option “MaxSpeed”: facteur de vitesse maximum pour le déplacement du curseur
  • Option “AccelFactor”: facteur d'accélération pour le déplacement du curseur
  • Option “EdgeMotionMinSpeed”: facteur de vitesse minimum pour le scroll
  • Option “EdgeMotionMaxSpeed”: facteur de vitesse maximum pour le scroll
  • Option “UpDownScrolling”: génère un évènement équivalent à l'évènement 4/5 d'une souris à roulette (active le scroll)
  • Option “CircularScrolling”: active le scroll circulaire (en cas d'ascenceurs diagonaux … o_0)
  • Option “CircScrollDelta”: distance de déplacement minimum du doigt pour faire un scroll circulaire
  • Option “CircScrollTrigger”: la région à partir de laquelle le scroll circulaire commence (de 0 à 8 en fonction de la région)

Bien entendu, il est possible de modifier toutes les valeurs de ces options (et d'en ajouter d'autres, voir man synaptics pour un listing complet).

Voila, enregistrez les modifications, relancez le serveur X (Ctrl+Alt+BkSpc), ouvrez un utilitaire graphique qui dispose d'ascenceurs horizontaux et verticaux (par exemple kwrite dont le retour à la ligne automatique serait désactivé, sur un gros fichier texte, du genre … /var/log/Xorg.0.log) et faites glisser doucement votre doigt sur le bord droit, puis sur le bord inférieur du pad … magique !!! :-)

Création du package

Maintenant, passons à la phase de création du package Slackware. Ce package pourra ensuite être réinstallé ultérieurement en cas de mise à jour, de réinstallation, de suppression involontaire etc …

Vous allez voir, c'est tout simple, nous avons déjà tous les outils à disposition ! En effet, Patrick Volkerding, dans sa grande bonté, a eu l'ingénieuse idée de créer un script makepkg qui permet de transformer le contenu d'un répertoire en archive .tgz prête à être installée.

Commençons déjà par retourner dans le répertoire des sources de synaptics et installons le driver et ses outils dans un répertoire temporaire qui se trouve dans notre répertoire personnel:

[wedge@chimaera synaptics-0.14.6]$ make DESTDIR=${HOME}/syn-pack install
install -D synclient /home/wedge/syn-pack/usr/local/bin/synclient
install -D syndaemon /home/wedge/syn-pack/usr/local/bin/syndaemon
install --mode=0644 -D synaptics_drv.o /home/wedge/syn-pack//usr/X11R6/lib/modules/input/synaptics_drv.o
install --mode=0644 -D manpages/synclient.1 /home/wedge/syn-pack/usr/local/man/man1/synclient.1
install --mode=0644 -D manpages/syndaemon.1 /home/wedge/syn-pack/usr/local/man/man1/syndaemon.1
install --mode=0644 -D manpages/synaptics.5 /home/wedge/syn-pack/usr/local/man/man5/synaptics.5
[wedge@chimaera synaptics-0.14.6]$ cd ${HOME}/syn-pack
[wedge@chimaera syn-pack]$ ls
usr/
Attention toutefois, l'option DESTDIR= n'est pas toujours disponible dans les Makefile, si ce n'est pas le cas, il faudra trouver une astuce pour pouvoir installer les fichiers dans un répertoire temporaire …

Quel est le résultat ? Nous avons installé une “copie locale” de tous les fichier et répertoires nécessaires à synaptics dans un autre répertoire que celui de destination classique. Bien entendu, le système ne va pas aller cherchez les utilitaires ou le driver dans ce répertoire, nous allons simplement l'utiliser pour construire le package. En effet, un package n'est rien d'autre qu'une archive contenant l'architecture des répertoires et fichiers.

Quand on installe ensuite le package, on ne fait rien d'autre que d'extraire cette archive à la racine du système afin de placer cette architecture au bon endroit …

Mais finis les bavardages, continuons:

[wedge@chimaera syn-pack]$ mkdir -p etc/X11
[wedge@chimaera syn-pack]$ cp /etc/X11/xorg.conf etc/X11
[wedge@chimaera syn-pack]$ ls -R .
.:
etc/ usr/

./etc:
X11/

./etc/X11:
xorg.conf

./usr:
local/ X11R6/

./usr/local:
bin/ man/

./usr/local/bin:
synclient* syndaemon*

./usr/local/man:
man1/ man5/

./usr/local/man/man1:
synclient.1 syndaemon.1

./usr/local/man/man5:
synaptics.5

./usr/X11R6:
lib/

./usr/X11R6/lib:
modules/

./usr/X11R6/lib/modules:
input/

./usr/X11R6/lib/modules/input:
synaptics_drv.o
[wedge@chimaera syn-pack]$ makepkg -c n -l y synaptics-0.14.6-$(uname -m)-1wed.tgz

Le résultat est un archive synaptics-0.14.6-i686-1wed.tgz qu'il suffira ensuite d'installer quand cela sera nécessaire via la commande installpkg (en mode root, bien entendu …).

Plus besoin de recompiler, nous avons notre package. Stockez le bien au chaud dans un répertoire Packages de votre répertoire personnel.

Supprimez les répertoire source et temporaire :

[wedge@chimaera syn-pack]$ mkdir ${HOME}/Packages && mv synaptics-0.14.6-i686-1.tgz ${HOME}/Packages && cd
[wedge@chimaera ~]$ rm -rf syn-pack synaptics-0.14.6

Conclusion

Et voila, c'est fini, vous pouvez utiliser votre pad tranquilement, et vous savez maintenant créer un package Slackware à partir du résultat de la compilation de sources d'un programme.

Bon courage et à bientôt ! :-D

Tags

installation/articles/driver_synaptics.txt · Dernière modification: 2010/08/26 20:14 (édition externe)