HOW TO Tablette Wacom

Stefan Runkel
Traduit de l'anglais par Aurélia Girod

Version 1.0.6, 28 Mars 2000
Installation de tablettes graphiques Wacom (et pas seulement) sous Linux en console et/ou sous XFree86

1. Copyright

Copyright (c) 1999,2000 par Stefan Runkel Runkel@runkeledv.de

Ce document décrit l'installation de tablettes Wacom sous Linux.
Vous pouvez le distribuer soit sous les termes de la licence GPL version 2 ou supérieur, soit sous les termes du Projet de Documentation de Linux (LPD). Ces licenses devraient être applicables quelque soit l'endroit où vous avez obtenu ce document. Dernière remarque, depuis que le LDP n'autorise pas de modifications autre que les traductions, les versions modifiées ne peuvent être distribuées que sous la license GPL.

2. Introduction

Les tablettes graphiques sont aujourd'hui relativement bon marché. Elles sont d'un grand secours pour la retouche d'image. En plus de faire la même chose qu'une souris, elles proposent les caractéristiques suivantes :

Ce document s'adresse principalement aux produits Wacom, parce que j'en possède trois différents et que ces produits sont assez courants en Europe.

Cependant, je pense que ce doit être facile d'adapter ces explications pour d'autres produits.

J'ai écrit ce document car je n'en ai pas trouvé sur ce sujet qui contenait tout ce que je voulais savoir. J'ai donc rassemblé toutes les parties d'informations trouvées sur le Net dans ce HowTo. Considérant les questions de mes lecteurs, je sais que ce document aussi n'est pas complet et qu'il ne le sera jamais, mais je peux dire qu'il aidera beaucoup de gens et chaque nouvelle question complétera ce HowTo.

2.1 Nouvelles versions de ce document

La dernière version de ce document sera disponible sur http://www.runkeledv.de/linux.htm.

2.2 Opinions et corrections

Les commentaires, corrections et compléments sont les bienvenus. Contactez-moi à

Runkel@runkeledv.de ou à RunkelEDV@t-online.de

2.3 Remerciements

Je voudrais remercier tous les auteurs listés sur la section Plus d'informations / Documents utilisés ainsi que tous ceux qui ont répondu à mes questions par email. Ce HowTo reflète leur travail.

3. Les indispensables

Ce chapitre contient ce qui est nécessaire pour faire fonctionner votre tablette.

3.1 Matériel supporté

Premièrement, vous devez bien sûr avoir une tablette graphique. Celle-ci doit pouvoir se connecter au port série (RS232) de votre ordinateur car le support USB pour Linux est encore en développement. Au moment où ce doument est écrit (mars 2000), le support du noyau est commencé pour les nouveaux produits USB de Graphire et Intuos et cela fonctionne avec XFree. Gpm n'est plus maintenu, donc il ne faudra pas s'attendre à un driver USB pour ce logiciel.

Les tablettes Wacom suivantes sont supportées :

Les plus anciennes séries SD et HD ne sont pas supportées par XFree86 standard. Cependant, un driver modifié qui supporte ces périphériques ainsi que quelques produits OEM avec un écran intégré comme le Thinkpad 360 PE d'IBM et le Toshiba T200 est téléchargeable à l'adresse : http://hwr.nici.kun.nl/pen-computing/pen-computing-formats.html

3.2 Logiciel nécessaire

3.3 Logiciels supportés

Il existe un grand nombre de programmes basés sur la bibliothèque GTK. XInput est supporté par GTK ce qui le rend facile à utiliser.
Enfin, les applications suivantes supportent XInput :

4. Les tablettes qui replacent les souris en console

4.1 Les tablettes et Gpm

Le gpm démon Gpm supporte beaucoup de périphériques d'entrée incluant les tablettes. Si vous voulez avoir la liste du matériel supporté par votre Gpm, tapez :

gpm -t help
et vous l'obtiendrez.

Le driver Wacom de gpm 1.18.0 et inférieur semble aller pour les très vieux modèles artpad, mais la documentation n'en parle pas. Je l'ai testé avec les modèles ultrapad, penpartner, graphire et intuos mais ça ne marchait pas. J'ai réécrit le driver Wacom pour gpm et pour l'utiliser il faut au moins la version 1.18.2 de Gpm. Depuis cette version, l'ancien driver Wacom a été remplacé par mon driver Wacom pour les produits graphire, penpartner et ultrapad.

Cependant, si vous avez une vieille artpad, utilisez gpm < 1.18.1 et essayez :

killall gpm ; gpm -t wacom -m /dev/ttyS0
et ça devrait marcher.

Si vous possédez une graphire, utilisez plutôt gpm > 1.18.1 et pour le mode relatif (comme une souris) :

killall gpm ; gpm -t wacom -o relative -m /dev/ttyS0
pour le mode absolu (comme une tablette) :
killall gpm ; gpm -t wacom -o absolute -m /dev/ttyS0

Bien sûr, vous n'aurez que les boutons et le mouvement, la pression et la sensibilité ne sont pas implémentées parce qu'elles ne sont pas utiles dans les éditeurs de texte.
Il n'y a pas de support pour les boutons de fonction d'ultrapad et la roulette de graphire.

Si vous utilisez gpm et XFree86, il se peut que vous ayez des problèmes car normalement un périphérique peut être utilisé par un seul programme à la fois. Pour cela, il y a deux solutions :

5. Tablettes sous XFree

5.1 Version de XFree requise

Il faut au moins XFree la version 3.3.3.1 car elle a développé le support de XInput, le deuxième bouton fonctionne et il n'y a plus l'effet bloquant de la souris.

Si vous devez utiliser une version antérieure, Xinput est supporté depuis la 3.1.2.d.

Le support de XInput dans XFree est configuré dans un fichier appelé XF86Config. Dans la plupart des cas, ce fichier est placé dans /etc ou dans /etc/X11. Je vais présenter une très courte section de configuration et expliquer ce qui peut être changé et pourquoi.

5.2 Une partie de XF86Config

Section "Module"
# Wacom Device Driver
Load "xf86Wacom.so"
EndSection

Section "XInput"
# Settings for Wacom pen
  SubSection "WacomStylus"    # type of input device
    Port "/dev/ttyS0"         # Serial Port
    DeviceName "Pen1"         # Name, choose it free
    Baudrate 9600             # Usable only for intuos
    Mode Absolute             # Map Tablet Area to Screen
    AlwaysCore                # See text
    HistorySize 200           # Buffer size for motion events
  EndSubSection
EndSection

5.3 Section Module

XFree supporte XInput grâce à l'utilisation de modules. Le module pour Wacom s'appelle xf86Wacom.so. Il se place dans la section "Module" et ne doit apparaître qu'une seule fois par fichier XF86Config.

5.4 Différents types de dispositifs

Un dispositif peut être :

Les produits pentpartner et graphire ne reconnaissent que le type de dispositif mais ne peuvent pas les distinguer. Par exemple, vous ne pouvez pas utilisez deux crayons différents, un configuré en rouge et l'autre configuré en bleu ; tout ce que diront ces produits c'est : "J'ai reconnu une pointe de crayon", ou "J'ai trouvé une gomme", ou "J'ai trouvé une souris".

XInput décrit les types de dispositifs aux périphériques. Ces dispositifs sont ensuite spécifiés dans XF86Config comme une sous-section de la section XInput :

5.5 Noms de périphériques

Vous devez donner un nom à chaque périphérique configuré (vous pouvez choisir n'importe quel nom). Ce nom sera ensuite utilisé dans votre logiciel pour communiquer avec ce dispositif.

5.6 Port

XInput doit connaître le port série où se trouve votre tablette. Cela me permet d'utiliser deux tablettes différentes en même temps, par exemple une graphire connectée à /dev/ttyS0 et une penpartner connectée à /dev/ttyS1.

5.7 Les niveaux de déboggage (DebugLevel)

Ceci contrôle comment le driver Wacom fonctionne. Le niveau va de 0 à 10. Si cette spécification n'est pas indiquée, le DebugDevel 0 est utilisé, ce qui représente le niveau le plus bas.

Exemple :

SubSection "WacomStylus" # Pen
  DeviceName "PenRed"    # Name, choose it free
  ...
  DebugLevel 10          # be very verbose
  ...
EndSubSection

5.8 Numéro de série (séries intuos seulement)

Le produit intuos est plus compétent que les produits penpartner et graphire car il peut distinguer plusieurs dispositifs en même temps. Cela signifie qu'il est maintenant possible d'utiliser deux crayons (un configuré en rouge et l'autre en bleu). Comme on l'a vu, l'utilisation de dispositifs (pointe, gomme, aérographe, souris) n'est pas assez documenté pour manipuler des stylos différents. Cependant, chaque dispositif intuos, que ce soit un stylo, une souris ou autre, a un numéro de série que l'on spécifie à XInput pour savoir ce qui est utilisé. Voici la section de configuration :

Section "XInput"
  SubSection "WacomStylus" # Pen
    DeviceName "PenRed"    # Name, choose it free
    ...
    Serial 2609917443      # Serial Number of that device
    ...
  EndSubSection
  SubSection "WacomStylus" # another Pen
    DeviceName "PenBlue"   # Name, choose it free
    ...
    Serial 2609918664      # Serial Number of that device
    ...
  EndSubSection
EndSection

Notez que les dispositifs combinés comme les stylos ont seulement un numéro de série. Le driver utilise ce numéro de série pour reconnaître un stylo spécifique et le type de dispositif pour distinguer la pointe de ce stylo de sa gomme.

Comment trouver le numéro de série d'un dispositif

  1. Configurer le DebugLevel à 6
  2. Lancer le serveur X en tapant X 2>t
  3. Passer tous les dispositifs (pointe, gomme...) sur la tablette en les notant dans l'ordre où ils sont passés
  4. Tuer le serveur X (Ctrl + Alt + Backspace)
  5. Faites un grep serial_num t

Vous devriez obtenir la liste de vos différents numéros de série.

Numéro de série - exemple de résultat obtenu

BEGIN xf86WcmProc dev=0x8354d60 priv=0x833e3f0 type=stylus flags=9 what=1
xf86WcmProc pWcm=0x8354d60 what=ON
END xf86WcmProc Success what=1 dev=0x8354d60 priv=0x833e3f0
device_id=0x96 serial_num=2595227137 type=cursor
[cursor] abs prox=false x=0 y=0 z=0 button=false buttons=0
(le numéro de série est à la ligne 4, 2e block).

5.9 Mode absolu, mode relatif

Si vous configurez un dispositif en mode absolu, cela signifie que la surface active de la tablette représente votre écran. Chaque fois que vous pointez un point sur la tablette avec un dispositif absolu, votre pointeur de souris apparaîtra au même point sur votre écran.

Si vous avez configuré le dispositif en mode relatif, le comportement de votre souris sera plus intuitif, c'est-à-dire que si vous décollez la souris de la tablette, la bougez et que vous la remettez, le pointeur de souris n'aura (normalement) pas bougé.

Exemple :
Mode absolu

5.10 Pointeur en modes étendu, natif ou "AlwaysCore"

XFree connait deux pointeurs : un avec seulement les caractéristiques standards (boutons, mouvements), qui est utilisé pour sélectionner les menus, du texte ou pour cliquer sur des boutons. Ceci est le pointeur natif (Core device).

L'autre pointeur est utilisé par des applications qui veulent plus d'informations, comme la pression ou l'inclinaison.


Ceci est le pointeur étendu (Extension device).

Avec la version 3.3.3.1, l'expression "AlwaysCore" indique au driver qu'il doit envoyer les deux types d'événements.

Si vous ne spécifiez pas "AlwaysCore" dans votre XF86Config, alors le pointeur est initialement utilisé comme pointeur étendu, c'est-à-dire qu'il n'est utilisable qu'avec des applications et que vous ne pouvez pas l'utiliser pour sélectionner des menus dans votre gestionnaire de fenêtre.

Sinon (si "AlwaysCore" est spécifié), votre pointeur réagit comme un pointeur natif (en plus de la souris) et donne des informations sur la pression et l'inclinaison aux applications qui ouvrent le pointeur en mode étendu.

Vous pouvez configurer deux pointeurs logiques, un en mode natif et un en mode étendu, pour un même pointeur physique.
Pour ce faire, tapez tout simplement deux sections identiques, seule la désignation du DeviceName doit changer, puis spécifiez "AlwaysCore" dans la dernière section seulement.

Exemple :
AlwaysCore

5.11 La taille de l'historique (HistorySize)

Ceci configure la taille du buffer qui est utilisé pour le cache des mouvements.

5.12 Dissimulation (Suppress)

Ceci spécifie de combien d'unités le dispositif doit bouger avant que le driver bouge le pointeur. Ce peut être nécessaire quand de grandes résolutions sont utilisées.

Exemple :
Suppress 6

5.13 Le mode inclinaison (intuos seulement) (Tilt Mode)

Le mode inclinaison permet l'envoi d'informations sur l'inclinaison pour les pointeurs intuos. Si cette déclaration est omise, seule l'information sur la pression est transmise.

5.14 Les spécifications TopX, TopY, BottomX, BottomY

Ces quatre spécifications permettent de réduire la surface active de la tablette. Mon énorme tablette intuos A4, par exemple, est tellement grande que l'on ne peut pas l'utiliser pour un travail de peinture car les passages du stylo sont trop longs. J'utilise donc ces quatre spécifications pour indiquer au driver que l'écran sera représenté sur le quart en bas à gauche de la tablette.
Il est possible de définir plus d'une surface active sur la même tablette : définissez autant de sous sections que vous avez besoin avec la même spécification du Port mais avec des spécifications Top, Bottom... différents, ainsi que les noms de périphériques. Ceci définit de multiples pointeurs logiques ayant chacun leurs limites individuelles. De même, vous pouvez utiliser un pointeur en mode absolu et un autre en mode relatif.

Exemple :

TopX        0 #coordonnees du coin en haut a gauche
TopY     5000
BottomX  5000 #coordonnees du coin en bas a droite
BottomY 10000

Obtenir les valeurs X,Y maximales, la configuration courante et la résolution

Si vous utilisez les quatre spécifications ci-avant, vous voulez parfois faire des calculs sur la taille et la position d'un rectangle qui doit être défini, et souvent les coordonnées maximales de la tablette et la résolution sont utiles. Pour obtenir ces valeurs, lancer votre serveur : X 2>t. Tuer le serveur X (Ctrl+Alt+Backspace) et faites un grep "X=" t . Vous devriez récupérer les valeurs en question.

Obtenir la résolution - exemple de résultat

(--) Wacom IV tablet maximum X=5103 maximum Y=3711 X 
     resolution=1000 Y resolution=1000 suppress=6
(--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711
(--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711
(--) Wacom tablet top X=0 top Y=0 bottom X=5103 bottom Y=3711

5.15 Conservation de la forme

Cette option utilise les spécifications TopX, TopY (ou leurs valeurs par défaut, si rien n'est indiqué) et ajuste les valeurs BottomX et BottomY, ainsi :

Les spécifications BottomX, BottomY sont ignorées, car ces valeurs seront calculées.

5.16 Seuil de pression

Ceci est disponible depuis la version alpha 16 et est utilisé pour contrôler la pression minimum requise pour détecter qu'un outil est pressé sur la tablette. Cela fonctionne avec les gammes intuos et graphire. Notez que la valeur entière doit être codée comme une chaîne de caractère, contrairement à toutes les autres valeurs entières.

Exemple :

Threshold "5"

6. Changer la configuration avec un serveur X lancé

6.1 Configurer The Gimp pour utiliser les périphériques XInput

Gimp a été compilé avec le support XInput depuis la version 1.1.x.

Gimp doit connaître les périphériques qu'il peut utiliser et dans quel mode. Vous devez ouvrir la boite de dialogue Fichier/Dialogues/Périphériques d'Acquisition pour le configurer. Vous trouverez deux listes déroulantes en haut de cette fenêtre appelée Périphérique et Mode. Choisissez le périphérique à configurer dans la liste des Périphériques et choisissez un mode dans la liste Mode .

Les modes sont :

Si vous avez deux curseurs liés à votre périphérique, vous avez deux solutions :

Sous les deux listes déroulantes, se trouve un tableau avec deux registres Axes et Touches. Axes assigne un axe a une fonction, ce n'est généralement pas nécessaire de le changer. Mais dans le cas d'un peripherique tactile construit dans une tablette qui bouge a 90 degres, vous pourrez echanger les axes x et y.

Certaines tablettes ont des touches programmables permettant d'appeler des fonctions souvent utilisées. La partie Touches vous permet d'associer un caractere à une touche de fonction. Par exemple, vous pouvez associer Ctrl+Shift+R a une touche de fonction. Si vous activez cette touche, elle remplace Ctrl+Shift+R.
Le driver actuel de Wacom supporte seulement les touches de fonction de la serie ultrapad et la partie macro des produits intuos n'est pas encore utilisable.

Maintenant, nous allons vois commment les peripheriques peuvent être utilisés. Ouvrez la boite de dialogue dans Fichier/Dialogues/Device Status. Ouvrez une image.

Vous configurez chaque peripherique les uns indépendemment des autres dans Gimp.

Si vous utilisez le curseur avec plusieurs peripheriques dans la fenetre où se trouve l'image, vous verrez que les périphériques de la boite de dialogue Device Status changent. Si vous choisissez un outil, pinceau, couches ou couleur avec un périphérique, une fois encore les changements sont visibles dans la boite de dialogue. Vous pouvez sauvegarder les parametres de la boite de dialogue Status, pour qu'ils soient restorés a la prochaine session.

6.2 The Switch Device

C'est un périphérique spécial toujours présent. Il génère un événement chaque fois qu'un nouveau périphérique devient un pointeur natif. Cela s'appelle "axes", sa valeur est l'identificateur du périphérique de pointage natif. Je ne sais pas comment un utilisateur peut l'utiliser, c'est principalement utile pour une usage interne.

6.3 Boutons

Les boutons des périphériques sont aussi différents que les périphériques le sont :
Un stylo a au moins une pointe, mais il peut avoir un ou deux côtés et une gomme. Une souris peut avoir jusqu'a 32 boutons (mais habituellement 3).Les boutons sont numerotés de 1 au nombre de boutons. Avec les deux prochaines "astuces" vous pouvez changer cette numerotation.

6.4 Bouton configuré avec xmodmap pour les périphériques en mode natif

xmodmap ne change que le pointeur natif. Comme il n'y a qu'un pointeur natif a la fois, il ne fait pas de différence entre les périphériques physiques pouvant devenir un pointeur natif. Pour le moment, oublions tout ce qu'on a dit sur XInput et pensez au gaucher qui veut simplement échanger les boutons gauche et droit de la souris. Vous allez exécuter xmodmap -pp pour voir quel est le pointeur natif courant. Vous allez obtenir le tableau suivant :

Physical        Button
Button          Code
1              1      # ( Left   Button )
2              2      # ( Right  Button )
3              3      # ( Middle Button )

Pour échanger les boutons, tapez xmodmap -e "pointer = 2 1 3" et pour revenir a l'état d'origine xmodmap -e "pointer = default". Ceci marche avec chaque périphérique avec au moins 2 boutons. Notez que l'expression "pointer = x x x" doit être accompagnée de guillemets pour éviter que cela soit changé par le shell.

6.5 Bouton configuré avec xinput pour les périphériques en mode extension

Revenons a XInput. Si vous utilisez Gimp, vous voulez sans doute changer la configuration du bouton pour chaque périphérique séparément (échanger les deux côtés du crayon). Frederic Lepied ecrit un utilitaire, appelé xinput.

Pour échanger les deux côtés, faites un xinput list pour avoir la liste des peripheriques et leur configuration actuelle. L'echange est fait avec xinput set-button-map Pen1 1 3 2 ou Pen1 est le périphérique à changer.

Lancez avec XFree 3.3.2, cela marche aussi avec les périphériques configurés avec AlwaysCore dans XF86Config.

6.6 xsetmode - changer le mode absolu / relatif

Avec xsetmode vous pouvez changer le mode d'un périphérique entre absolu et relatif.

Exemple :
xsetmode GraphireMouse ABSOLUTE .

6.7 xsetpointer - configure le peripherique natif par défaut

Si aucun des périphériques n'est configuré en AlwaysCore et que vous voulez en configurer un, utilisez xsetpointer.

Faites un xsetpointer Devicename. L'ancien périphérique natif (souvent une souris) n'est plus utilisable et celui specifié sera active. Par exemple, on peut configurer une souris graphire en périphérique natif standard avec un XFree lancé.

xsetpointer -l liste tous les peripheriques et le mode dans lequel ils sont.

6.8 Touches

Certains périphériques ont les boutons ou pads programmables pour lesquels un scancode ou une chaine peuvent etre associés. Cela ne fonctionne qu'avec des périphériques en mode extension et est fait pour l'application dans laquelle vous voulez utiliser ces touches.

xinput -l donne des informations à propos du numéros des touches et autre comme le premier scancode.

6.9 Utilitaires pour utiliser plus d'une tablette

Je possède trois tablettes Wacom et je les utilise sur mon portable. Quand aucune tablette n'est connectée et que je lance le mode X, je dois attendre longtemps jusqu'à ce que le driver abandonne. Si xdm est utilisé, cela augmente le nombre d'essais.

J'ai écrit deux utilitaires qui devrait faciliter ceci :

Ceci est basé sur le fait qu'un fichier XF86Config est séparé en au moins un fichier XF86Config.bare, qui contient les informations communes à toutes les configurations et de nombreux exemples, chacun d'eux présentant une information spéciale d'une configuration particulière.

Les deux utilitaires sont mis ensemble pour une configuration qui marche.

Vous pouvez télécharger ce paquet à l'adresse http://www.runkeledv.de/download, il se nomme xinput_chooser_sr.

7. FAQ XFree - problèmes et questions

7.1 Gnome et Gimp ne travaillent qu'avec une souris normale, sans la pression, ni l'inclinaison. La boîte de dialogue des périphériques d'entrée de Gimp indique "No input devices" ou "Pas de périphérique d'entrée".

Il semble que vous n'avez pas compilé votre gtk avec le support XInput. Recompilez gtk et utilisez ./configure --with-xinput=xfree pour compiler le Makefile, puis faites un make && make install. Enfin, recompilez votre Gimp pour qu'il utilise ce gtk étendu.

7.2 Est-ce que la roulette de la souris (curseur) est supportée ?

Oui, cela génère les événements bouton 4 et bouton 5.

7.3 Comment puis-je trouver le numéro de série intuos de mon outil ?

Lisez la section à propos des Numéros de série.

7.4 Comment puis-je changer l'utilisation des boutons de mon outil ?

Reportez vous à la section à propos des boutons.

7.5 Comment puis-je utiliser des macros sur intuos/artpad/ultrapad ?

Désolé, vous ne pouvez pas utiliser les macros de l'intuos.
Seules les macros artpad/ultrapad fonctionnent. Lisez la section à propos des Clés de Gimp.

7.6 Est-ce possible de définir plusieurs surfaces actives sur la même tablette ?

Oui, lisez la section à propos des Spécifications Haut...

7.7 Puis-je utiliser plus d'une tablette en même temps ?

Oui, lisez la section à propos des Spécification de port.

8. FAQ Gpm - problèmes et questions

8.1 Les programmes NCurses ne supportent que couper / coller avec mon nouveau gpm

Vous avez probablement mélangé un nouveau gpm avec une ancienne bibliothèque gpm, ou vous utilisez un ancien client qui cherche la socket gpmctl dans /var/run au lieu de /dev. Dans le dernier cas, vous avez deux options : récupérer de nouveaux clients et les recompiler ou changer gpm.h pour qu'il utilise /var/run au lieu de /dev et recompiler gpm et libgpm.

9. Plus d'informations / documents utilisés

gpm :
page de manuel gpm, FAQ gpm, code souce du fichier mice.c

XInput :
HOWTO XInput de Owen Taylor

XFree et Wacom :
page de manuel XF86Config

site de Frederic Lepied

beaucoup, beaucoup d'e-mails ...