Information concernant l'utilisation de Tablettes graphique sous Linux

Table des matières   Liens internes à cette page

1) Introduction
2) Tablettes Wacom.
3) Tablettes XP-pen.
4) Tablettes 10moons.
5) Tablettes graphique sous Linux, de façon générale.
5.1) Un programme python3 pour régler la tablette.
5.2) Les commandes xsetwacom et xinput pour régler la tablette.
5.3) Réglage de la sensibilité de la tablette.
5.4) Réglage des boutons de la tablette et du stylo.
5.5) Réglage des boutons pour démarrer un programme et changer de fonction.
5.6) Automatisation des réglages.
5.7) Informations diverses, en vrac.
5.8) Informations supplémentaire, sur les raccourcis clavier.

1) Introduction   Top

Dans ce qui suit, je traite des tablettes Wacom, XP-pen, 10moons en particulier.
Je traite également des tablettes graphiques sous Linux, de façon générale.
Plusieurs commandes permettent d'avoir de l'information sur des tablettes et de les configurer.

2) Tablettes Wacom.   Top

Les tablettes Wacom sont une référence, mais parmis les plus chère.
Sous Ubuntu 20.04, le driver pour les utiliser et les configurer est intégré, il n'y a rien à installer.
Voir Tablettes graphique sous Linux, de façon générale, ci-dessous.
J'ai la tablette 'Wacom cintiq 16"', qui inclut un écran graphique de 16 pouces.
Elle fonctionne parfaitement sous Linux KUbuntu 20.04.
Elle fonctionne aussi sous Linux Kubuntu 16.04, avec une installation.
J'ai fait deux vidéos concernant cette Tablette sous Linux.
J'ai également une tablette Wacom Intuos pen small CTL-480 que j'ai acheté d'occasion et qui fonctionne très bien sous Linux. Les boutons sont programmable et l'association entre la surface de travail de la tablette et une partie de l'écran est facile avec le programme (en langage python) que je mets à disposition dans la partie "5) Tablettes graphique sous Linux".

3) Tablettes XP-pen.   Top

Les tablettes XP-pen ont une très bonne réputation parmi les artistes.
Des vidéos sur des comparatifs de tablettes graphique
Site Web de XP-pen

Mon expérience se limite à la "XP-pen star 04" sous KUbuntu 20.04, mais je pense que ce qui suit fonctionne avec toutes les tablettes "XP-pen".
Pour utiliser une tablette XP pen sous Linux (KUbuntu 20.04), il faut modifier le fichier : "/usr/share/X11/xorg.conf.d/70-wacom.conf"

Si vous tapez :
xsetwacom --list devices
Si une tablette Wacom est branchée, un texte indiquant le nom de la tablette est indiqué.
Si une aucune ou autre tablette est branchée, rien n'est affiché.
Pour que la tablette "XP-pen" soit reconnue, il faut faire ce qui suit.

Dans un Terminal, tapez :
xinput
Cela devrait vous donner une sortie qui ressemble à :
bg@gg:~$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech Optical USB Mouse                id=9    [slave  pointer  (2)]
⎜   ↳ UGTABLET TABLET G5 9x6 Pen stylus         id=13   [slave  pointer  (2)]
⎜   ↳ UGTABLET TABLET G5 9x6 Pad pad            id=14   [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)]
    ↳ HD Pro Webcam C920                        id=10   [slave  keyboard (3)]
    ↳ Eee PC WMI hotkeys                        id=11   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]
Les deux lignes :
⎜   ↳ UGTABLET TABLET G5 9x6 Pen stylus         id=13   [slave  pointer  (2)]
⎜   ↳ UGTABLET TABLET G5 9x6 Pad pad            id=14   [slave  pointer  (2)]
indiquent le nom de la tablette.

Tapez ensuite :
sudo nano /usr/share/X11/xorg.conf.d/70-wacom.conf
ou
sudo gedit /usr/share/X11/xorg.conf.d/70-wacom.conf
pour modifier le fichier qui reconnait les tablettes et ajouter la reconnaissance de la tablette "TABLET G5 9x6".
Voici ce que j'avais avant l'adjonction de texte :
Some of the below input classes appear 3x times, once for each of
# "tablet", "touchscreen", and "touchpad" to ensure that the Wacom
# driver is not accidentally bound to other types of hardware that
# Wacom has made which are not handled by the wacom driver (e.g the
# Wacom Bluetooth Keyboard)
#
# https://sourceforge.net/p/linuxwacom/bugs/294/

Section "InputClass"
        Identifier "Wacom USB tablet class"
        MatchUSBID "056a:*"
        MatchDevicePath "/dev/input/event*"
        MatchIsTablet "true"
        Driver "wacom"
EndSection
...
 
Section "InputClass"
        Identifier "Wacom tablet class"
        MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4"
        MatchDevicePath "/dev/input/event*"
        MatchIsTablet "true"
        Driver "wacom"
EndSection

Section "InputClass"
        Identifier "Wacom touchscreen class"
        MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4"
        MatchDevicePath "/dev/input/event*"
        MatchIsTouchscreen "true"
        Driver "wacom"
EndSection

Section "InputClass"
        Identifier "Wacom touchpad class"
        MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4"
        MatchDevicePath "/dev/input/event*"
        MatchIsTouchpad "true"
        Driver "wacom"
EndSection
...
Les "..." signifie que je ne'ai pas tout recopié.

Voici ce que j'avais après l'adjonction de texte :
Some of the below input classes appear 3x times, once for each of
# "tablet", "touchscreen", and "touchpad" to ensure that the Wacom
# driver is not accidentally bound to other types of hardware that
# Wacom has made which are not handled by the wacom driver (e.g the
# Wacom Bluetooth Keyboard)
#
# https://sourceforge.net/p/linuxwacom/bugs/294/

Section "InputClass"
        Identifier "Wacom USB tablet class"
        MatchUSBID "056a:*"
        MatchDevicePath "/dev/input/event*"
        MatchIsTablet "true"
        Driver "wacom"
EndSection
...
 
Section "InputClass"
        Identifier "Wacom tablet class"
        MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4|TABLET G5 9x6"
        MatchDevicePath "/dev/input/event*"
        MatchIsTablet "true"
        Driver "wacom"
EndSection

Section "InputClass"
        Identifier "Wacom touchscreen class"
        MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4|TABLET G5 9x6"
        MatchDevicePath "/dev/input/event*"
        MatchIsTouchscreen "true"
        Driver "wacom"
EndSection

Section "InputClass"
        Identifier "Wacom touchpad class"
        MatchProduct "Wacom|WACOM|PTK-540WL|ISD-V4|TABLET G5 9x6"
        MatchDevicePath "/dev/input/event*"
        MatchIsTouchpad "true"
        Driver "wacom"
EndSection
...
J'ai donc ajouté trois fois le texte "|TABLET G5 9x6" aux lignes commençant par "MatchProduct".
J'ai ensuite quitté la session ou redémarré.

Maintenant en tapant :
xsetwacom --list devices
j'obtient :
bg@gg:~$ xsetwacom --list devices
UGTABLET TABLET G5 9x6 Pen stylus       id: 13  type: STYLUS    
UGTABLET TABLET G5 9x6 Pad pad          id: 14  type: PAD       

Il est possible de configurer la tablette, voir Tablettes graphique sous Linux, de façon générale.

Remarques supplémentaires.
Des informations concernant la commande xsetwacom sont disponibles ci-dessous.

Depuis le site de support de XP-pen. J'ai téléchargé le fichier "xp-pen-pentablet_3.1.0.210331-1.x86_64.deb".
J'ai fait l'installation, mais cela n'a pas fonctionné, la tablette n'était pas reconnue et non configurable.
Donc ce qui précède est préférable à mon gout.

Pour information : lien pour des drivers Windows et Mac de XP-pen.

Artist Pro 15.6 on linux, sur le forum de XP-Pen.
En gros il est indiqué que la tablette XP-Pen Pro Artist 15.6 fonctionne sous linux.
Soit avec un driver, mais qui pose certaines limitation.
Soit sans driver, mais qui demande de taper des lignes de commande dans un Terminal.
Peut-être que le programme que j'ai écrit et mis à disposition ci-dessous permet de configurer graphiquement la tablette. Pour la "Artist", je ne sais pas, pour la "Star 04", cela fonctionne.


4) Tablettes 10moons.   Top

C.f. le site de 10moons sur les tablettes.
J'ai acheté une tablette 10moons G10 en avril 2021. Elle semble avoir plusieurs noms : G10 ou T501 ou 1060Plus.
Sous Windows 10, après installation du driver intégré dans la tablette, elle fonctionne très bien et les boutons sont programmables.

Sous Mac OS 11.1, après installation du driver intégré dans la tablette, elle fonctionne bien, mais les boutons ne sont pas programmables.
Suite à mon achat de la tablette G10 et d'un contact par e-mail avec le fabricant (10moons), ils m'ont envoyé un driver pour Mac, plus à jour que celui intégré dans la tablette.
Avec ce driver Mac, la tablette fonctionne très bien et les boutons sont configurables.
Voici un lien sur le driver qu'ils m'ont envoyés. Je vous conseille de les contacter pour demander le dernier driver qu'ils ont pour Mac, à moins que celui intégré par défaut dans la tablette vous convienne.
Driver pour Mac de la tablette 10moons T501 ou G10 ou 1060Plus.
Drivers sur le site du fabricant. Étonnamment, pas de driver Mac et dates de 2019.

Sous KUbuntu 20.04, la tablette fonctionne mal.
En fait, la tablette contient deux tablettes sur la même surface, dont une plus petite et qui n'utilise qu'une partie de la surface totale. Elle est prévue pour être utilisée sur des smartphone Androïd.
Je n'ai pas réussi à utiliser toute le surface sous Linux, ni à changer l'assignation des boutons, qui sont reconnus.

5) Tablettes graphique sous Linux, de façon générale.   Top

On a vu dans la section "3) Tablettes XP-pen" qu'il faut ajouter un petit texte au fichier /usr/share/X11/xorg.conf.d/70-wacom.conf pour que la tablette soit paramétrable avec l'utilitaire "xsetwacom".
Cet utilitaire "xsetwacom" fonctionne aussi avec des tablettes non Wacom, par exemple les tablettes XP-pen.

Une référence concernant les tablettes graphiques sous Linux est : doc.ubuntu-fr.org.
Ce site Web indique une long liste de tablettes fonctionnant sous Linux.

Le fichier $HOME/.config/tabletprofilesrc contient aussi de l'information concernant les tablettes. Il se trouve dans le dossier caché : ".config". (Tous les dossiers et fichiers commençant par un point   .   sont cachés.)
Il donne la configuration par défaut des divers tablettes qui ont été enregistrées sur l'ordinateur.
Chez moi, [056A:0074] correspond à la tablette XP-Pen star 04.
Il donne la correspondance entre chaque bouton et la touche clavier qui lui est associée.

Le fichier $HOME/.config/tabletdblocalrc fait une correspondance entre les boutons de la tablette et le numéro qui leur est associé.
À quoi cela sert-il ???
Si je change l'association, cela rend inactif certains boutons.
Chez moi, le bouton 4 est associé à 8 et
le bouton 5 est associé à 9.

Le fichier /proc/bus/input/devices contient aussi des informations concernant les "input devices", qui sont les appareils d'entrées de données dans l'ordinateur, tel que le clavier, la souris, la webcam, le microphone, la tablette, etc.
Pour voir l'intégralité du fichier, tapez :
cat /proc/bus/input/devices
Pour voir uniquement les noms des appareils (devices), tapez :
grep -i name /proc/bus/input/devices   ou   cat /proc/bus/input/devices | grep -i name
Étrangement, les noms de la tablette et du stylo sont incomplets et non utilisable tel quel.
La commande xinput donne les noms complets, voir la suite pour plus de détails.

Chez moi, sous KUbuntu 20.04, dans "Configuration" > "Périphérique d'entrée" > "Tablette graphique" j'ai la possibilité de configurer la tablette.
Je peux attribuer une action à chaque bouton.
Lorsque je fais des changements, cela modifie le fichier "$HOME/.config/tabletprofilesrc".

Ci-dessous, j'indique quelques références et instructions pour gérer des tablettes. Vers la fin, cela devient très technique, et c'est surtout utile pour moi et pour des programmeurs.

5.1) Un programme python3 pour régler la tablette.   Top

J'ai écrit un programme en python 3 pour régler la correspondance entre la tablette et l'écran.
Renommez l'extension du programme ".txt" en ".py" et rendez-le exécutable en affichant les propriétés du fichier.
Un programme python3 pour régler la tablette.
Pour qu'il fonctionne, il faut installer deux modules python 3 :
pip3 install pyautogui
pip3 install subprocess.run
Ils sont peut-être déjà installés, mais cela ne dérange pas de taper les commandes d'installation, même dans ce cas.
En tapant : sudo pip3 install pyautogui   , l'installation se fait pour tous les utilisateurs de l'ordinateur. S'il n'y en a qu'un, le type d'installation n'a pas beaucoup d'importance.

5.2) Les commandes xsetwacom et xinput pour régler la tablette.   Top

Informations concernant la commande xsetwacom., équivalent à man xsetwacom.
Informations concernant la commande xinput., équivalent à man xinput.
Une longue page d'information sur les tablettes Wacom sous Linux, en anglais.
Quelques maigres informations pour KDE.

Soit on a une tablette Wacom soit les modifications décrites ci-dessus ont été faites pour une tablette XP-pen ou pour une autre tablette, la commande xsetwacom permet de gérer la tablette et les boutons.

Malgré que la commande "xsetwacom" contient le nom d'une marque, elle fonctionne aussi avec des tablettes d'autres marques.

Voici des commandes à taper dans un Terminal, qui vous donnent de l'information ou qui permettent des configurations.

Pour avoir la liste des périphériques d'entrées :
xinput list
En particulier, le nom de la tablette, du stylo et leur numéro "id" sont donnés.

Pour avoir une information complète, peut-être trop longue :
xinput list --long

Pour avoir une liste de propriétés de la tablette et du stylo :
xinput watch-props "UGTABLET TABLET G5 9x6 Pad pad"
xinput watch-props "UGTABLET TABLET G5 9x6 Pen stylus"
Au lieu du nom "UGTABLET TABLET G5 9x6 Pad pad" on peut mettre son numéro "id", mais il peut changer d'une session à l'autre.

Pour avoir une liste de valeurs associées à la tablette et du stylo :
xinput list "UGTABLET TABLET G5 9x6 Pad pad"
xinput list "UGTABLET TABLET G5 9x6 Pen stylus"
En particulier le "Pen stylus" donne l'intervalle des valeurs retournées en X et en Y par la tablette.
Voir "Label: Abs X   Range: 0.000000 - 45720.000000" et
"Label: Abs Y   Range: 0.000000 - 29210.000000"
Les nombres 45720 et 29210 changent suivant la tablette.

Beaucoup d'autres commandes sont possibles, pour les connaître, voir le lien ci-dessus, ou tapez une des commandes :
xinput -h
man xinput

Pour de l'aide sur la commande xsetwacom :   xsetwacom -h
Pour la liste des paramètres actuels :   xsetwacom --list parameters

Voisi des commandes donnant de l'information sur la tablette.
xsetwacom --get "UGTABLET TABLET G5 9x6 Pad pad" all
Ceci sort une liste de paramètres de la tablette.

Voisi des commandes donnant de l'information sur le stylo de la tablette.
xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" all
Ceci sort une liste de paramètres du stylo de la tablette.
Mais il en manque, en particulier les valeurs maximales que retourne la tablette lorsque le stylo se trouve en bas à gauche. c'est l'instruction :
xinput list "UGTABLET TABLET G5 9x6 Pen stylus"
qui donne cette information.

En réalité, on ne les obtient pas tous.
Pour connaître tous les paramètres de la tablette :
xsetwacom --list parameters "UGTABLET TABLET G5 9x6 Pen stylus"
Au lieu de "UGTABLET TABLET G5 9x6 Pen stylus", il est possible de mettre son numéro d'"id" que l'on obtient avec "xinput".
Ce numéro "id du device" peut changer d'une session à une autre.

Pour avoir l'ID de la tablette (qui n'est PAS l'"id" du device), en mode décimale, pas hexadécimale :
xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" TabletID
Je ne sais pas si cela a une utilisé.

Pour que la tablette se comporte comme un touchpad, les déplacements sont relatifs à la position actuelle et non plus absolu.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Mode relative
Pour remettre en mode absolu :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Mode absolute
Pour connaître le mode actuel :
xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Mode

Quelques autres réglages possibles, que l'on apprend en lisant la liste des paramètres retournés par :
xsetwacom --list parameters "UGTABLET TABLET G5 9x6 Pen stylus"
Identique à : xsetwacom --list parameters "UGTABLET TABLET G5 9x6 Pad pad"
Liste :
xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Rotate
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Rotate cw
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Rotate ccw
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Rotate half
Et pour revenir à la normale :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Rotate none

5.3) Réglage de la sensibilité de la tablette.   Top

Plus les nombres sont grands, plus il faut se déplasser sur la tablette pour avoir un déplassement de 100 pixels sur l'écran.
Pour connaître le réglage actuel :
xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Area
Sortie des valeurs par défaut pour la tablette XP-pen star 04 :
bg@gg:~$ xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Area
0 0 45720 29210

Pour spécifier un réglage désiré :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Area xmin ymin xmax ymax
Un exemple :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Area -50000 -30000 70000 35000
Pour limiter la moitié l'écran en X et la moitié l'écran en Y correspondant à la tablette.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Area 0 0 91440 58420
Pour réutiliser tout l'écran :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Area 0 0 45720 29210
Ou mieux :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" ResetArea

Liens entre la tablette et la partie d'écran désirée :
pixDelta_x = pixRight - pixLeft
pixDelta_y = pixBottom - pixTop
xmin = -45720 * pixLeft / pixDelta_x
xmax = 45720 * (1920 - pixLeft) / pixDelta_x
ymin = -29210 * pixTop / pixDelta_y
ymax = 29210 * (1080 - pixTop) / pixDelta_x
Les nombres 1920 et 1080 sont à adapter selon la résolution de l'écran.
Les nombres 45720 et 29210 sont à adapter selon la résolution de la tablette.
pixLeft correspond à la position gauche de l'écran correspondant à l'extrême gauche de la tablette.
pixRight correspond à la position droite de l'écran correspondant à l'extrême droite de la tablette.
pixTop correspond à la position haute de l'écran correspondant à l'extrême haut de la tablette.
pixBottom correspond à la position basse de l'écran correspondant à l'extrême bas de la tablette.
Si xmin et ymin sont nulle, le haut - gauche de la tablette correspond au haut - gauche de l'écran.
Si on veut que le haut - gauche de la tablette correspond à une partie décalée du haut et de la gauche de l'écran, xmin et ymin prendrons des valeurs négatives.
Plus la valeur (xmax - xmin) est grande, moins la tablette est sensible horizontalement.
Plus la valeur (ymax - ymin) est grande, moins la tablette est sensible verticalement.

5.4) Réglage des boutons de la tablette et du stylo.   Top

Le nunéro des boutons peut changer suivant les ordinateurs et les tablettes.

Pour savoir ce que fait un bouton :
xsetwacom --get "UGTABLET TABLET G5 9x6 Pad pad" Button 9
Voici une sortie possible :
bg@gg:~$ xsetwacom --get "UGTABLET TABLET G5 9x6 Pad pad" Button 9
key +d -d 
Indique que le bouton 9 de la tablette correspond à :
+d appuyer sur la touche D.
-d relacher la touche D.

Voici une autre sortie possible :
bg@gg:~$ xsetwacom --get "UGTABLET TABLET G5 9x6 Pad pad" Button 9
key +9 -9 +Shift_L +a -a
Indique que le bouton 9 de la tablette correspond à :
+d appuyer sur la touche D.
-d relacher la touche D.
+Shift_L appuyer sur la touche Majuscule Gauche (= L = Left).
+a appuyer sur la touche A.
-a relacher la touche A.
Ce n'est pas indiqué, mais la touche Shift_L et aussi relachée.

Il y a les boutons de la tablette et ceux du stylo :
xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Button 1
xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Button 2
xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Button 3
Le bouton 1 est celui de la pointe du stylo, que l'on ne modifie pas en général.
Voici une sortie possible :
bg@gg:~$ xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Button 1
button +1 
bg@gg:~$ xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Button 2
button +2 
bg@gg:~$ xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Button 3
button +3 

Voici des exemples de commandes permettant d'associer une ou des touches à un bouton de la tablette ou du stylo.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 9 "key +shift B -shift o n j o u r +shift !"
Le   !   dépend du clavier. Chez moi, je dois utiliser la touche Shift (Majuscule) pour l'obtenir.

Pour avoir le symbole au-dessus de la touche donnant le chiffre 3. ( Sur mon clavier suisse romand, c'est une * )
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 8 "key shift 3"
La commande suivante associe le chiffre 3, au lieu de l'étoile   *   à la touche de la tablette.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 8 "key *"

Une curiosité, à faire dans un Terminal. Ne sert probablement à rien.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 9 "key l s space - l return"

Pour une liste d'actions claviers telles que "return", "backspace", etc. tapez :
xsetwacom list modifiers
ou voir le long fichier :
cat /usr/include/X11/keysymdef.h
Exemples, avec "Left" et 0xff51 qui signifient flèche gauche :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 1 "key f10 0xff51"
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 1 "key f10 Left"
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 1 "key Num_Lock"
Un fichier de 2498 lignes avec la liste d'actions clavier du fichier "/usr/include/X11/keysymdef.h".

Pour associer le bouton 1 de la tablette au bouton 3 de la souris :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 1 "button 3"

Différent réglage de boutons pouvant être utile dans GIMP :

Le bouton de gauche de la tablette passe en mode GOMME.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 9 "key shift e"

Le bouton de gauche de la tablette passe en mode CRAYON.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 3 "key n"

Le bouton du bas de la tablette passe en mode PINCEAU.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 2 "key p"

Le bouton du haut de la tablette passe en mode ECHANGE AVANT-ERRIERE PLANS.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 8 "key x"

Le bouton central de la tablette passe en mode SELECTION.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 1 "key r"

Définition des boutons du stylo :
Le "Button 1" est la mine du stylo Normalement, on ne le change pas, il correspond à un clique gauche de la souris.
Pour voir sa définition :
xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Button 1
Pour changer son action (n'a pas de sens à mon avis) :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Button 1 "key t"
Pour le remettre à son action par défaut :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Button 1 "button +1"

Le "Button 2" est le bouton du bas du stylo.
Pour redéfinir son action :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Button 2 "key h e l l o"

Le "Button 3" est le bouton du haut du stylo.
Pour redéfinir son action :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pen stylus" Button 3 "key t o p"

Il n'y a pas de "Button 4" sur mon stylo.

Valeurs par défaut :
bg@gg:~$ xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Button 1
button +1 
bg@gg:~$ xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Button 2
button +2
bg@gg:~$ xsetwacom --get "UGTABLET TABLET G5 9x6 Pen stylus" Button 3
button +3
On peut changer de façon persistante entre session ces valeurs depuis la configuration sous KDE.
Configuration > Configuration du système > Périphériques d'entrée > Tablette graphique > stylet

5.5) Réglage des boutons pour démarrer un programme et changer de fonction.   Top

Il peut être intéressant que l'action d'un bouton alterne entre deux, trois ou plus d'états.
Par exemple, il peut être intéressant d'alterner entre le mode gomme et le mode crayon.
Pour cela, on peut faire en sorte qu'un bouton fasse l'effet d'appuyer sur la touche F12 et que la touche F12 lance un programme, qui alternativement enverra la touche  n  et la touche  e.

Sous KDE (KUbuntu), dans Configuration > Configuration du système > Raccourcis > Raccourcis personnalisés
on peut faire en sorte que la pression sur une touche lance un programme. La touche peut être accompagnée d'une pression sur Shift, Ctrl et Alt.
Le programme déclanché peut être écrit en script shell, en python ou autre.
Voici un exemple en python 3 :
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Simule l'action de presser sur une ou des touches clavier

import pyautogui as pg
import sys
from pathlib import Path

# Récupère le répertoire du programme en cours d'exécution
strPath = sys.argv[0]
nLast = strPath.rfind("/") # Cherche la séparation entre nom de répetoire et nom de fichier
strPath = strPath[0:nLast]
#print(strPath)  # Pour information en mode de développement

try:  # Teste que le fichier aaa.txt existe. Si oui, l'ouvre et lit le premier caractère.
   fw = open(strPath + "/aaa.txt", "r")
   char1 = fw.read(1) # Lecture du premier caractère
   fw.close()
   #print(char1)
except:  # Cas où le fichier n'existe pas ou pas de caractère ou autre erreur.
    # Le fichier : aaa.txt  n'existe pas, il sera créé.
    char1 = "n"

pg.write(char1)
fw = open(strPath + "/aaa.txt", "w")

# En fonction du caractère lu, écrit un autre caractère.
if (char1 == 'n'):   fw.write("E") # Change de caractère
elif (char1 == 'E'): fw.write("p") # Change de caractère
else:                fw.write("n") # Change de caractère
fw.close()
Pour l'utiliser, copier - coller ce texte dans un fichier avec l'extension .py
Rendez-le exécutable, en regardant ses propriétés ou en tapant :
chmod u+x nom_du_fichier.py
Cela le rendra eXécutable pour l'Utilisateur.
À chaque exécution du programme, un caractère est lu du fichier aaa.txt, envoyé comme s'il avait été tapé au clavié, avec l'instruction "pg.write", puis le caractère suivant est sauvé dans le fichier aaa.txt.
Dans cet exemple, chaque exécution enverra dans l'ordre suivant les caractères :
n E p n E p n E p ...

Si on désire que l'alternance ne se fasse qu'entre deux caractères, il suffit d'effacer la ligne   "elif (char1 == 'E'): ...
Si, au contraire on veut une alternance entre 4 caractères, il faut ajouter une ligne   "elif (char1 == '..."   après la ligne   "elif (char1 == 'E'): ...


Pour assigner le bouton 1 de la tablette à la touche F12 :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 1 "key f12"
Pour assigner le bouton 1 de la tablette à la touche Shift+Ctrl+Alt+F12 :
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 1 "key +shift +Ctrl +Alt f12"

5.6) Automatisation des réglages.   Top

Il peut être fastidieux de devoir retaper toutes les commandes de réglage à chaque démarrage de l'ordinateur ou à chaque fois que l'on branche la tablette.
Pour se simplifier la vie, on peut mettre la suite des commandes dans un fichier, que l'on exécute après avoir branché la tablette ou après un démarrage.

Voici un exemple de script que j'utiise pour ma tablette Wacom Cintiq (en bash) :
(C'est un cas de très grand écran, constitué en réalité de 3 écrans. Normalement, (2*2560 + 1920) doit être 1920 et (1440) doit être 1080. )
Cliquez sur le bouton + pour voir le code
#!/bin/bash
# Calibration de la tablette Wacom avec son écran.
# xsetwacom --list dev   pour voir le nom des stylos associés à la tablette.
# xsetwacom --help   pour la liste de commandes.
# xsetwacom --get "Wacom Cintiq 16 Pen stylus" Area    pour la calibration actuelle
# x = (69232 - 380) / 1920 * (2*2560 + 1920) + 380  = 252837
# y = (39000 - 300) / 1080 * (1440) + 300  = 51900
xsetwacom --set "Wacom Cintiq 16 Pen stylus" Area 380 300 252837 51900
xsetwacom --set "Wacom Cintiq 16 Pen eraser" Area 380 300 252837 51900
Pour l'utiliser, copier - coller ce texte dans un fichier avec l'extension .sh
Rendez-le exécutable, en regardant ses propriétés ou en tapant :
chmod u+x nom_du_fichier.sh
Cela le rendra eXécutable pour l'Utilisateur.
Pour l'exécuter, double cliquez dessus ou, s'il est dans le dossier visible dans le Terminal, tapez ./nom_du_fichier.sh

Voici un autre exemple, juste pour info
#!/bin/bash
# Assignation de bouton utile pour le logiciel GIMP

# Le bouton de gauche de la tablette passe en mode GOMME.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 9 "key shift e"

# Le bouton de gauche de la tablette passe en mode CRAYON.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 3 "key n"

# Le bouton du bas de la tablette passe en mode PINCEAU.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 2 "key p"

# Le bouton du haut de la tablette passe en mode ECHANGE AVANT-ERRIERE PLANS.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 8 "key x"

# Le bouton central de la tablette passe en mode SELECTION.
xsetwacom --set "UGTABLET TABLET G5 9x6 Pad pad" Button 1 "key r"
Pour l'utiliser, copier - coller ce texte dans un fichier avec l'extension .sh
Rendez-le exécutable, en regardant ses propriétés ou en tapant :
chmod u+x nom_du_fichier.sh
Cela le rendra eXécutable pour l'Utilisateur.
Pour l'exécuter, double cliquez dessus ou, s'il est dans le dossier visible dans le Terminal, tapez ./nom_du_fichier.sh


On voudrait automatiser encore plus et que les scripts décrits ci-dessus s'exécutent automatiquement lorsque l'on branche une tablette.
Cela est certaintment dépendant de l'environnement graphique utilisé. Moi, j'utilise KDE avec KUbuntu.

Sous KDE, pour la tablette Wacom et chez moi pour la tablette XP-pen star 04 :
Configuration > Configuration du système > Notifications > Configurer... > Tablette "Wacom" (sous "Service système")
cliquer sur Configurer les événements...
sélectionner : "Nouvelle tablette graphique connectée"
cocher Exécuter la commande et sélectionner le fichier désiré.
cliquer sur "Appliquer".

Pour voir en images les instructions précédentes
Configuration > Configuration du système
configuration_systeme
> Notifications
notifications
> Configurer...
configurer
> Tablette "Wacom" (sous "Service système")
tablette_wacom
cliquer sur Configurer les événements...
configurer_evenement
sélectionner : "Nouvelle tablette graphique connectée"
cocher Exécuter la commande et sélectionner le fichier désiré.
cliquer sur "Appliquer".
nouvelle_tablette_connectee

5.7) Informations diverses, en vrac.   Top

xinput
Cette commande a déjà été présentée plus tôt dans cette page Web.
Elle permet d'avoir beaucoup d'information et de configurer la tablette.

lsusb
Cela donne de l'information concernant les appareils USB branchés sur votre ordinateur. Voici ce que j'obtiens chez moi, lorsque ma tablette XP-pen star 04 est branchée :
bg@gg:~$ lsusb
Bus 002 Device 002: ID 8087:8000 Intel Corp. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 009: ID 28bd:0074 Logitech Optical USB Mouse
Bus 003 Device 008: ID 1e3d:2093 Chipsbank Microelectronics Co., Ltd CBM209x Flash Drive (OEM)
Bus 003 Device 007: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 003 Device 003: ID 046d:0892 Logitech, Inc. OrbiCam
Bus 003 Device 002: ID 046d:c016 Logitech, Inc. Optical Wheel Mouse
Bus 003 Device 005: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 003 Device 004: ID 0424:2532 Microchip Technology, Inc. (formerly SMSC) 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
On remarque les lignes :
"Bus 003 Device 007: ID 1a40:0101 Terminus Technology Inc. Hub"
"Bus 003 Device 008: ID 1e3d:2093 Chipsbank Microelectronics Co., Ltd CBM209x Flash Drive (OEM)"
"Bus 003 Device 009: ID 28bd:0074 Logitech Optical USB Mouse"
qui n'apparaissent pas chez moi, lorsque la tablette est débranchée.

Quelques Vidéos youtube, très techniques, longues, mais qui donnent de l'information :
Adding Linux support for 10moons T503, part 1, dure 37 minutes.
Adding Linux support for 10moons T503, part 2, dure 1h24
Adding Linux support for 10moons T503, part 3, dure 2h05
Generic Graphics Tablets in Linux, une conférence de 40 minutes.
DIGImend : Improving Linux support for graphics tablets.

Quelques liens qui ont retenus (une fois) mon attention :
!! https://nixfaq.org/2020/09/how-to-set-up-and-use-wacom-and-huion-pen-tablets-in-linux.html
! https://blog.simos.info/how-to-setup-the-huion-430p-drawing-tablet-on-ubuntu-20-04/
! https://blog.thepoon.fr/XPPenLinux/
https://askubuntu.com/questions/1316939/xp-pen-not-working-ubuntu-20-04
https://www.reddit.com/r/linux/comments/8ajaqt/xp_pen_drawing_tablet_on_linux/
https://askubuntu.com/questions/1098845/xp-pen-pentablet-driver-installing-issues-on-ubuntu-16-04

En VRAC, list de commandes qui peuvent avoir un intéret :
Connaître la version du noyau de linux, tout l'information : uname --all
Connaître le numéro de la version du noyau de linux : uname -r
List des appareils USB branchés : lsusb
Information complète sur le produit n° 28bd:0074 : sudo lsusb -v -d 28bd:0074   pour le produit n° 1a40:0101 : lsusb -v -d 1a40:0101
Affichage du résultat :
bg@gg:~/Bg$ sudo lsusb -v -d 28bd:0074

Bus 003 Device 014: ID 28bd:0074 Logitech Optical USB Mouse
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x28bd 
  idProduct          0x0074 
  bcdDevice            0.00
  iManufacturer           1 UGTABLET
  iProduct                2 TABLET G5 9x6
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x003b
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower               70mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     139
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               4
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     140
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               3
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)

Données transmises par la tablette : sudo usbhid-dump -es -m 28bd:0074
Autre information sur la tablette : sudo usbhid-dump -ed -m 28bd:0074

5.8) Informations supplémentaire, sur les raccourcis clavier.   Top

Les raccourcis clavier globaux sont sauvés dans le fichier :$HOME/.config/khotkeysrc
Si on modifie ce fichier, il ne se passe rien jusqu'à ce qu'on ait redémarré la session. Il est déconseillé d'éditer ce fichier.
Des informations sur les raccourcis clavier (shortcut) sont stockés dans : $HOME/.config/kglobalshortcutsrc
Ceux qui ont été créés par l'utilisateur sont liés au dossier : $HOME/.local/share/kglobalaccel   dans lequel se trouve un ou des fichiers .desktop
Chez moi,   $HOME   correspond à   /home/bg
Pour le savoir, tapez :
echo $HOME
Supplément concernant les raccourcis clavier dans un Terminal :

100 Keyboard Shortcuts to Use Linux Like a Pro
C.f. : https://unix.stackexchange.com/questions/89622/how-to-execute-a-script-in-shell-when-a-shortcut-key-is-pressed
et   : https://stackoverflow.com/questions/4200800/in-bash-how-do-i-bind-a-function-key-to-a-command

Dans un Terminal, presser ctrl+V puis une touche sépciale, telle que F1 à F12
donne le code de la touche
Par exemple : ctrl+V  F12  donne  ^[[24~
Ensuite, taper :
bind '"\e[24~":"ls -l"'
Pour que F12 corresponde à "ls -l"
"\e"  représente la commande ESC,  qui sort comme : ^[

"^W" <=> ctrl+W
"^[W" <=> alt+shift+W

Pour que F12 affiche "ls -l" mais ne pas l'exécuter
bind -x '"\e[24~":"echo ls -l"'

bind -x '"\e[21~":"who"'
Exécutera la commande "who" lorsqu'on presse sur la touche  F10

bind -x '"\e[23;1~":"echo Super+F11 a ete presse"'

"\e[24~"  correspond à la touche F12
"\e[23~"  correspond à la touche F11
"\e[21~"  correspond à la touche F10
"\e[20~"  correspond à la touche F9
"\e[19~"  correspond à la touche F8
"\e[18~"  correspond à la touche F7
"\e[17~"  correspond à la touche F6
"\e[15~"  correspond à la touche F5
"\eOS"    correspond à la touche F4
"\eOR"    correspond à la touche F3
"\eOQ"    correspond à la touche F2
"\eOP"    correspond à la touche F1

"\e[23;1~"  correspond à la touche Super+F11   (super = la touche windows)
"\e[23;2~"  correspond à la touche Shift+F11
"\e[23;3~"  correspond à la touche Alt+F11
"\e[23;4~"  correspond à la touche Shift+Alt+F11
"\e[23;5~"  correspond à la touche Ctrl+F11
"\e[23;6~"  correspond à la touche Shift+Ctrl+F11
"\e[23;8~"  correspond à la touche Shift+Alt+Ctrl+F11

Ne pas taper :  Alt+Ctrl+F?  car cela change d'écran.
Alt+Ctrl+F1  revient à l'écran graphique standard.  Autrefois c'était  Alt+Ctrl+F7

Alt+F2  ou  Alt+espace  pour exécuter KRunner

Pour lancer un Terminal qui exécute automatiquement un programme :
konsole -e $HOME/Bg2/Shell/n1/tablette_set.py


Home arrow tablettes.html
Mise à jour le 12 mai 2021 par Libre Gisin.