Ce tuto est prévu pour le cas où l'on n'a qu'une seule tablette de dessin branchée sur l'ordi.
Le but est d'utiliser la tablette dans sa fonction essentielle : controler le pointeur dans une zone de l'écran attribuée au dessin.
Pour évoquer les coordonnées on utilisera les standard de cours de math x et y, et pour les tailles on utilisera w (largeur en anglais) et h (hauteur).
Les tablettes de dessin Wacom sont très bien supportées sur Linux. Cependant, rares sont les outils qui permettent de les configurer de manière pratique.
* Installer xserver-xorg-input-wacom (nom du paquet Debian) suffit généralement à activer le controle du pointeur avec la tablette après redémarrage de la session. Le paquet susnommé fourni la boite à outils `xsetwacom` qui nous servira.
* Aussi, pour sélectionner une zone de l'écran on utilisera `slop`.
En ligne de commande, vous pouvez découvrir les outils avec les commandes suivantes :
xsetwacom -h man xsetwacom # pour les plus motivé.e.s xsetwacom --list # Noter l'id du périphérique pour voir la taille de la tablette xsetwacom get <id> aera # On pourra changer cette zone, mais ce n'est pas très utile dans notre cas xsetwacom set <id> aera <x> <y> <x2> <y2> xsetwacom set <id> ResetAera # On peut voir le mode de pointage xsetwacom get <id> mode # le mode qui nous interesse est le mode absolu (le mode relative donne le comportement d'une souris) xsetwacom set <id> mode absolute # On peut changer la zone de dessin sur l'écran mais pas la voir, par exemple xsetwacom set <id> MapToOutput 800x600+0+0
Fourni avec X, il permet de connaitre les propriétés des fenetres et aussi de l'écran.
xwininfo # avoir les coordonnées pour remettre tout l'écran en zone dessinable/pointable xwininfo -root | sed -n 's/.*geometry//p'
slop # constater aussi qu'après avoir changer de fenetre slop se ferme slop -h
Le script se déroule en 3 étapes:
Ci dessous le script téléchargeable (qui pourra être améliorer ultérieurement).
#!/bin/sh # License : GPLv3 # Variables that change behaviour SLOP_CURRENT_WINDOW=false EXIT_ON_RESET=false # Arg parsing while [ "$1" ]; do case "$1" in -h|--help) echo "Usage: $0 [current|reset] [<key>=<val> ..]" echo " current skip window selection (useful for keybinding)" echo " reset reset zone to draw to fullscreen" echo " <key>=<val> add settings applyable to xsetwacom (val can be empty)" echo "Examples :" echo " $0 current # select the rectangle zone to draw" echo " $0 reset mode=relative # reset the zone to draw and apply mode relative" exit 0 ;; debug) set -x ;; current) SLOP_CURRENT_WINDOW=true ;; reset) EXIT_ON_RESET=true ;; *=*) OTHER_SETTINGS="${OTHER_SETTINGS} $1" ;; esac shift done PENTABLET_LIST="$(xsetwacom --list | sed 's/^.*\sid:\s*//;s/\s*type:.*//')" PENTABLET_ID=$(echo $PENTABLET_LIST | cut -d' ' -f1) _xsetwacom(){ for dev in $PENTABLET_LIST; do xsetwacom set $dev $* done } #reset and apply other settings _xsetwacom MapToOutput $(xwininfo -root | sed -n 's/.*geometry//p') for i in $OTHER_SETTINGS; do _xsetwacom $(echo "$i" | tr '=' ' ') done if $EXIT_ON_RESET; then exit 0 fi #get tablet size _setup_tablet_area_vars() { DEFAULT_W=$3 DEFAULT_H=$4 } _setup_tablet_area_vars $(xsetwacom get ${PENTABLET_ID} area) # select the window if ! $SLOP_CURRENT_WINDOW; then xmessage -timeout 2 -default "Setting Screen Area" -buttons "" "Select window with Alt-Tab and click on it" & xwininfo 2> /dev/null 1>&2 # only to select the right window fi # select the area xmessage -timeout 2 -default "Setting Screen Area" -buttons "" "Select region" & _ret=$(slop -f '%w %x %y') if [ -n "${_ret}" ] ; then # setup the draw rect _xsetwacom mode absolute _set_draw_rect(){ _w=$1 _x=$2 _y=$3 _h=$(( _w * DEFAULT_H / DEFAULT_W )) _xsetwacom MapToOutput "${_w}x${_h}+${_x}+${_y}" } _set_draw_rect $_ret fi