=== Avant-propos === 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). ===== Vous aurez besoin de... ===== 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`. ===== Découverte des outils ===== En ligne de commande, vous pouvez découvrir les outils avec les commandes suivantes : === xsetwacom === 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 aera # On pourra changer cette zone, mais ce n'est pas très utile dans notre cas xsetwacom set aera xsetwacom set ResetAera # On peut voir le mode de pointage xsetwacom get mode # le mode qui nous interesse est le mode absolu (le mode relative donne le comportement d'une souris) xsetwacom set mode absolute # On peut changer la zone de dessin sur l'écran mais pas la voir, par exemple xsetwacom set MapToOutput 800x600+0+0 === xwininfo === 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 === slop # constater aussi qu'après avoir changer de fenetre slop se ferme slop -h ===== Script ===== Le script se déroule en 3 étapes: * on remet par défault les paramètres * on s'assure que les zones de dessin sur l'écran et la tablette sont à leurs valeurs totales * pour les cas particulier on permet d'appliquer des parametres libres (key=val qui se suivent) * on sélectionne la fenetre pour avoir un visuel au moment de la sélection * pour cela on va tricher en utilisant xwininfo qui permet de changer de fenetre et disparait apres avoir cliqué sur un fenêtre * on sélectionne et active la zone de dessin * pour des raisons pratiques on va forcer une zone proportionnelle à la taille de la tablette 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] [= ..]" echo " current skip window selection (useful for keybinding)" echo " reset reset zone to draw to fullscreen" echo " = 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