Configurer un écran tactile
Compatibilité
Ce tutoriel a été testé avec le matériel et logiciels suivants :
- contrôleur d'écran tactile eGalax
- eeepc asus 1000
- tous périphériques de saisie connecté et détecté par le noyau et le pilote evdev (ce pilote est installé par défaut sur les principales distributions linux).
Prérequis
- les droits administrateurs
- aucun prérequis pour le pilote de périphériques d'entrés evdev. Il s'agit du pilote par défaut pour les périphériques de saisie sur les principales distributions Linux et il est normalement déjà installé.
Généralités
evdev est un pilote générique Xorg installé par défaut pour les interfaces d'entrée de Linux. Il supporte donc tous les périphériques d'entrée pour que le noyau les reconnaissent, y compris la plupart des souris, claviers, tablettes et écrans tactiles. La plus grande difficulté sera de le configurer pour qu'il gère adéquatement votre écran tactile.
Il vous suffit donc de brancher votre écran tactile, le plus souvent à un port usb (ce port peut-être interne comme dans le cas d'un ordinateur portable ou externe) si ce n'est pas déjà fait.
Vérifier votre écran tactile
La deuxième étape, une fois le périphérique branché, est de vérifier qu'il est bien détecté par le système. Ouvrez une fenêtre du terminal et en ligne de commande :
xinput list
Vous aurez la liste des périphériques détectés par evdev :
⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Microsoft Microsoft® Nano Transceiver v2.0 id=11 [slave pointer (2)] ⎜ ↳ Microsoft Microsoft® Nano Transceiver v2.0 id=12 [slave pointer (2)] ⎜ ↳ eGalax Inc. Touch id=13 [slave pointer (2)] ⎜ ↳ eGalax Inc. Touch id=14 [slave pointer (2)] ⎜ ↳ ETPS/2 Elantech Touchpad id=18 [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)] ↳ Microsoft Microsoft® Nano Transceiver v2.0 id=10 [slave keyboard (3)] ↳ CNF7129 id=15 [slave keyboard (3)] ↳ Asus EeePC extra buttons id=16 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=17 [slave keyboard (3)]
Dans cet exemple, je sais que le contrôleur pour mon écran tactile est eGalax. Il figure deux fois sous l'identification ID 13 et ID 14 dans ce cas. Cela ne créera pas de problème, mais il faudra en tenir compte lorsque nous ferons des essais de configuration.
Comme vous le constatez, ce pilote gère un bon nombre de périphérique. C'est pour cette raison que dès qu'un périphérique est mal configuré, il peut entrer en conflit avec un autre et créer des comportements aberrants du curseur ou bien de votre souris à titre d'exemple. Je vous suggère donc de toucher le moins possible à votre écran tactile pour le moment. Vous devrez peut-être fermer et ré-ouvrir votre session pour retrouver un usage normal de vos périphériques. Vous pouvez au besoin débrancher un périphérique temporairement ou même le désactiver en ligne de commande.
Activer ou désactiver un périphérique
Prenons l'exemple que nous désirons désactiver l'écran tactile. Normalement il suffit d'exécuter la commande xinput dans une fenêtre de terminal. La commande xinput a des effets temporaires. Vous retrouverez l'état original de votre système en redémarrant votre ordinateur.
xinput -set-prop "eGalax Inc. Touch" "Device Enabled" 0
Mais lorsqu'un périphérique possède deux ID, vous devez remplacer le nom par le numéro d'identification pour spécifier le bon périphérique (en cas de doute, faites les commandes avec les deux numéro d'identification, soit ID 13 et le ID 14 pour notre exemple) :
xinput -set-prop 14 "Device Enabled" 0
Lorsque vous désirez réactiver votre périphérique, utiliser la même commande et remplacez simplement le 0 par un 1.
xinput -set-prop 14 "Device Enabled" 1
Maintenant que nous savons que notre écran tactile est bien détecté et actif, nous pouvons essayer notre écran tactile.
Comportement de l'écran tactile (axes X et Y)
Il est très fréquent que le pointeur de la souris ne suivent pas immédiatement la direction du mouvement de votre doigt et que l'axes des X et/ou des Y soient inversés. Il faut donc vérifier le déplacement du pointeur de la souris selon l'axe des X et des Y. Voici les commandes que vous devrez utiliser pour vos essais :
Si l'axe des X est inversé :
xinput set-int-prop 14 "Evdev Axis Inversion" 8 1 0
et le retour à la valeur par défaut :
xinput set-int-prop 14 "Evdev Axis Inversion" 8 0 0
pour inverser l'axe des Y
xinput set-int-prop 14 "Evdev Axis Inversion" 8 0 1
Si les deux axes sont inversés :
xinput set-int-prop 14 "Evdev Axis Inversion" 8 1 1
À présent, vous êtes en mesure de vous assurer que la direction du pointeur suivent plus ou moins la bonne direction. Nous passerons donc à l'étape de la calibration.
Calibration de l'écran tactile
Cette étape consiste à définir les coordonnées de 4 points précis de l'écran pour permettre au système de bien gérer le pointeur de la souris. Ces coordonnées peuvent varier grandement d'un système à un autre, en fonction de vos configurations matérielles et logiciels.
Pour lancer cet outil en ligne de commande, il faut lancer l'outil 'ts_calibrate'. Si il ne trouve pas le périphérique à configurer, vous pouvez le lui spécifier en passant par la variable d'environnement TSLIB_TSDEVICE :
export TSLIB_TSDEVICE=/dev/input/eventX ts_calibrate
Il est même possible que deviez estimer temporairement les premières valeurs pour pouvoir utiliser l'écran tactile durant le processus de configuration. De mauvaises données provoque souvent des comportements aberrants du curseur de la souris et même de d'autres périphériques.
Utilisation de Calibrate Touchscreen
Il s'agit d'une étape plutôt délicate car malheureusement, l'outil Calibrate Touchscreen n'est pas toujours parfaitement efficaces. Vous devrez peut-être recalibrer votre écran plusieurs fois de suite pour arriver à obtenir les valeurs optimales. De plus, cet outils ne configure pas votre écran tactile, il ne fait que générer un rapport dans une fenêtre de terminal. Ce sera à vous de trouver vos coordonnés dans ce rapport et de les utiliser comme dans l'exemple ci-dessous :
Warning: multiple calibratable devices found, calibrating last one (eGalax Inc. Touch) use --device to select another one. Calibrating EVDEV driver for "eGalax Inc. Touch" id=14 current calibration values (from XInput): min_x=1969, max_x=49 and min_y=169, max_y=1874 Doing dynamic recalibration: Setting new calibration data: 1982 21 165 1874 --> Making the calibration permanent <-- copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' Section "InputClass" Identifier "calibration" MatchProduct "eGalax Inc. Touch" Option "Calibration" "1982 21 165 1874" EndSection
Encore une fois, la commande xinput vous sera utile pour essayer les valeurs que vous aurez trouvé. le format de la commande xinput est le suivante :
xinput set-prop --type=int --format=32 VOTRE_ID "Evdev Axis Calibration" X_min X_max Y_min Y_max
dans notre exemple :
- 14 est le ID du l'écran tactile
- 21 est le minimum de l'axe des X
- 1982 est le maximum de l'axe des X
- 165 est le minimum de l'axe des Y
- 1874 est le maximum de l'axes des Y
xinput set-prop --type=int --format=32 14 "Evdev Axis Calibration" 21 1982 165 1874
Mais si nous exécutons la commande précédente tel quel, nous pourrions avoir un problème puisque dans notre exemple l'axe des X est inversé. En effet si l'axe des X est inversé, nous devons inverser les coordonnées au besoin. Calibrate inverse correctement les coordonnées dans son rapport à la condition que vous ayez bien configurer votre axe des X et des Y, ce qui n'est pas toujours le cas durant les essais. Il faut donc être vigilant, sinon vous pourriez chercher longtemps la cause du problème. Voici donc la bonne commande pour notre exemple qui inverse uniquement l'axe des X :
xinput set-prop --type=int --format=32 14 "Evdev Axis Calibration" 1982 21 165 1874
Normalement, à cette étape, vous avez réussie à configurer les fonctions de bases de votre écran tactile et vous êtes enfin récompensé pour votre effort et votre patience. Malheureusement il reste encore une étape, il faut configurer le fichier du pilote evdev afin de rendre vos configurations permanentes. Vous pourriez également choisir de créer un script qui sera lancé lors du démarrage de votre ordinateur. Les deux méthodes sont abordés ci-dessous. Pour notre part, la méthode alternative utilisant un script s'est avérée plus satisfaisante.
Configurer le pilote evdev
La troisième et dernière étape vise à rendre permanent toutes les configurations que vous avez validés grâce à vos essais avec la commande xinput. Il faut donc modifier (avec les droits administrateur) le fichier /usr/share/X11/xorg.conf.d/10-evdev.conf
Vous devez rechercher la section spécifique à votre écran tactile :
Section "InputClass" Identifier "evdev touchscreen catchall" MatchIsTouchscreen "on" MatchDevicePath "/dev/input/event*" Driver "evdev" EndSection
Vous devez ensuite spécifier les options qui correspondent à vos besoins (n'oubliez pas d'inverser les coordonnées si vous avez inversé l'axe des X et/ou des Y).
Les options pouvant vous être utiles sont :
- Option SwaptAxes "0 ou 1"
- Option InvertX "0 ou 1"
- Option InvertY "0 ou 1"
Cette option est naturellement obligatoire :
- Option Calibration "minX maxX minY maxY"
Leur valeur peut-être 0 pour false et 1 pour true. Le symbole # au début d'une ligne met en commentaire la ligne dont vous n'avez pas besoin, mais il semble préférable d'effacer les lignes inutiles à moins d'être certain qu'elles n'affectent pas le comportement de evdev.
Section "InputClass" Identifier "evdev touchscreen catchall" MatchIsTouchscreen "on" MatchDevicePath "/dev/input/event*" Driver "evdev" Option "InvertX" "1" Option "Calibration" "1982 41 165 1874" EndSection
Méthode alternative
Cette méthode consiste à créer un fichier script qui sera lancer au démarrage de chaque session utilisateur et idéalement, au démarrage de l'ordinateur. Avec cette méthode, vous n'avez pas besoin de configurer le fichier 10-evdev.conf tel que décris précédemment.
Pour créer le script qui configurera votre écran tactile lors de l'ouverture de session :
Créez le fichier touchscreen.sh en ligne de commande :
sudo gedit /etc/profile.d/touchscreen.sh
Dans ce fichier, copier les lignes de commandes xinput qui vous ont servit précédemment à tester les configurations de votre écran tactile. À titre d'exemple, sur un eeePc utilisant un contrôleur eGalax, le fichier ressemble à ceci :
#!/bin/bash xinput set-int-prop 14 "Evdev Axis Inversion" 8 1 0 xinput set-int-prop 14 "Evdev Axis Calibration" 32 66 1979 147 1869
Sauvegarder le fichier et fermer gedit.
En fonction des périphériques USB connectés, l'écran tactile n'est pas toujours énuméré avec le même identifiant. Voici comment rendre permanente la configuration avec un contrôleur d'écran Microchip AR1100.
#!/bin/bash # script : /etc/profile.d/touchscreen.sh # Find the device ID. The typical line returned by 'xinput --list' looks like : # | > Microchip Technology Inc. AR1100 HID-MOUSE id=8 [slave pointer (2)] # we want the number after the '=' sign. ID=`xinput --list | grep "AR1100" | sed -e 's/.*id=\([0-9]*\).*/\1/'` xinput --set-prop --type=int --format=32 $ID "Evdev Axis Calibration" 69 3998 131 3971
Remplacez la chaîne de la commande grep par la chaîne obtenue avec :
xinput --list
Il sera utile de le rendre exécutable :
sudo chmod +x touchscreen.sh
Sauvegardez votre fichier et redémarrez votre session. Normalement, votre écran tactile fonctionne parfaitement une fois la session lancé.
Mais vous vous en rendrez compte rapidement, l'écran tactile ne sera pas configuré lorsque vous changez d'utilisateur ou que vous n'êtes pas dans une session active. Une solution consiste à appeler le fichier de script que nous venons de créer au démarrage de gnome ou de votre interface préféré.
La solution proposé ci-dessous a été élaboré pour lancer le script de configuration de votre écran tactile sous gnome 3. Pour Unity, un sous-répertoire similaire existe mais nous ne l'avons pas testé.
Toujours en mode superutilisateurs, vous devez modifier le fichier d'initialisation de l'interface Gnome comme suit :
Éditez le fichier de configuration
sudo gedit /etc/gdm/Init/Default
Ajouter le code suivant à la fin du fichier, mais juste avant la commande Exit 0. Le code à ajouter vérifie si xinput est présent sur votre ordinateur et si oui, il exécute votre script de configuration pour votre écran tactile.
# Calibre l'écran tactile au démarrage if [ -x /usr/bin/xinput ]; then /etc/profile.d/touchscreen.sh fi Exit 0
Sauvegardez et redémarrez votre ordinateur. Vous devriez pouvoir utiliser l'écran tactile sitôt que le pointeur de la souris apparaitra à l'écran.
Liens
Après avoir lu la documentation appropriée pour votre matériel, si vous souhaitez plus de détails sur le fonctionnement de la section « Configurer votre pilote evdev » de evdev.conf (notamment des explications sur les différentes options), allez voir les pages suivantes de la documentation de X.org :
evdev (en anglais seulement)
FAQ
Q : Après modification du fichier edev.conf, l'ordinateur ne redémarre pas normalement en mode graphique.
R : Une erreur dans le libellé d'une option tel qu'une faute de frappe peut suffire à créer ce problème. La solution la plus simple est de démarrer l'ordinateur avec le cd d'installation et de corriger le fichier. Si la partition de votre système n'est pas visible au démarrage, vous pouvez utiliser l'application GParted pour la monter car il faut se faciliter la vie ;0)
Q : Axes des X ou des Y est inversés.
R : Voir les commandes ci-haut concernant l'axes des X et Y.
Q : L'écran tactile apparaît en double dans la liste des périphériques.
R : Tenez en compte lors de vos essais, mais il est généralement inutile et même nuisible d'essayer d'en éliminer un sur un système propre.
Q : Le pilote du fabriquant ne fonctionne pas.
R : Vous en n'avez pas besoin et ce pilote risque d'interférer avec le pilote evdev. Au besoin, il vous faudra refaire une installation propre de Ubuntu si evdev ne détecte pas votre écran tactile.
Q : L'écran ne réagit pas au touché.
R : Il est possible que les coordonnées actuelles soient trop éloignées des valeurs optimale. Il est possible que l'écran tactile soit désactivé. Il est possible qu'un autre périphérique soit temporairement en conflit (essayé tout les périphérique pour trouver lequel est en conflit et le désactiver temporairement).
Q : Un bouton de la souris ou le pavé tactile ne fonctionne plus normalement après avoir touché l'écran.
R : Essayez la touche échap et les différents boutons de votre souris. Si l'ordinateur ne revient pas à la normale, le plus simple est de redémarrer votre session. La cause peut-être des coordonnées pour les axes x et y trop éloignées de leur valeur optimale. Vous pouvez aussi désactiver temporairement un périphérique.
Q : Existe-t-il un outil capable de configurer et calibrer mon écran tactile en une seule opération?
R : L'abandon de l'ancien fichier xconf.conf et les récentes évolutions de gnome et unity ont rendu la plupart des outils propriétaires inopérant. Si toutefois vous en connaissez un qui fonctionne mieux que xinput-calibrator (Calibrate Touchscreen), je serai heureux de mettre à jour ce tutoriel.
Auteurs : eeeLuc,