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.
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.
La dernière version de ce document sera disponible sur http://www.runkeledv.de/linux.htm.
Les commentaires, corrections et compléments sont les bienvenus. Contactez-moi à
Runkel@runkeledv.de ou à RunkelEDV@t-online.de
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.
Ce chapitre contient ce qui est nécessaire pour faire fonctionner votre tablette.
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
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 :
Il est disponible à l'adresse : ftp://kiwi.cs.berkeley.edu/pub/raph/xink.tar.gz
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 :
Si vous ne voulez pas de traductions et que vous ne voulez que les données octet par octet, tapez : gpm -t ps2 -R raw . Vous pouvez ensuite demander à XFree d'utiliser ce second périphérique en ajoutant la ligne Device "/dev/gpmdata" dans XF86Config dans la section pointeur ou dans la section XInput.
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.
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
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.
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 :
WacomStylus
Pointe d'un stylo ou aérographe.WacomEraser
Gomme d'un stylo ou aérographe.WacomCursor
Souris, par exemple souris graphire, "lens cursor", souris 4d.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.
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.
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
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.
Vous devriez obtenir la liste de vos différents numéros de série.
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).
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
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
Ceci configure la taille du buffer qui est utilisé pour le cache des mouvements.
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
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.
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
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.
(--) 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
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.
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"
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.
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.
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.
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.
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.
Avec xsetmode vous pouvez changer le mode d'un périphérique entre absolu et relatif.
Exemple :
xsetmode GraphireMouse ABSOLUTE
.
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.
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.
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.
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.
Oui, cela génère les événements bouton 4 et bouton 5.
Lisez la section à propos des Numéros de série.
Reportez vous à la section à propos des boutons.
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.
Oui, lisez la section à propos des Spécifications Haut...
Oui, lisez la section à propos des Spécification de port.
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.
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 ...