Table des matières

Associer une tablette Wacom à un écran

Introduction

Les tablettes graphiques ont une zone rectangulaire mappée sur toute l'étendue de votre DISPLAY X. Si vous avez plusieurs écrans, cela signifie que pour dessiner sur un seul écran, seule une petite partie de la tablette sera utilisable.

La bonne nouvelle, c'est qu'il existe une commande permettant de faire en sorte que votre tablette soit mappée sur un écran uniquement.

Rappels

Liste des écrans

La liste des écrans peut être affichée via la commande suivante :

xrandr -q

Mais cela affiche plein d'informations qui ne nous sont pas utiles ici. Pour filtrer et n'avoir que les noms des écrans :

xrandr -q | sed -n '1d;/^[^ ]/s/ .*//p'
HDMI-1
HDMI-2

Mapper la tablette sur un écran

La tablette a plusieurs composants ayant chacun son identifiant (stylet, gomme, pointeur). Pour afficher ces composants et leur identifiant :

xsetwacom --list devices

Pour nettoyer :

xsetwacom --list devices | sed -n 's/.*id: \([0-9]\+\).*/\1/p'
15
16
17
18

Pour affecter le composant $i à l'écran $S :

xsetwacom --set "$i" MapTooutput "$S"

Sed: afficher la ligne après celles contenant un motif

echo -n "bla1\nbla2\nbla3\nbla4" | sed -n "/^bla2$/{n;p}"
bla3

Installation

Créer un fichier ~/.local/bin/switch_tablet_screen contenant le code suivant :

~/.local/bin/switch_tablet_screen
#!/bin/sh
TMPFILE=/tmp/wacom.active
touch $TMPFILE
S=$(xrandr -q | sed -n '1d;/^[^ ]/s/ .*//p' | sed -n "/^$(cat $TMPFILE)$/{n;p};1p" | tail -1 | tee $TMPFILE)
for i in $(xsetwacom --list devices | sed -n 's/.*id: \([0-9]\+\).*/\1/p')
do
  xsetwacom --set "$i" MapTooutput "$S"
done

Le rendre exécutable :

chmod +x "~/.local/bin/switch_tablet_screen"

Utilisation

Il suffit par exemple de configurer son gestionnaire de fenêtre préféré pour définir un raccourci clavier exécutant notre script. À la première exécution du script, la tablette est sur le premier écran (listé par xrandr), puis sur le second, etc. jusqu'à retomber sur le premier.