Sa tablette Android comme périphérique de pointage, ou comment j’ai économisé 200€

Si vous êtes amateurs d’outils comme Gimp et Inkscape vous le savez, travailler avec la souri c’est comme dessiner avec une pomme de terre. Lorsqu’on veut de la précision, l’idéal c’est une tablette graphique, type Wacom.

Après quelques minutes de recherche j’étais sur le point de me décider pour un petit tour à la Fnac du coin (oui je sais, la Fnac, ses vendeurs comiques et leur conseils amusant, mais généralement quand je craque pour un matériel, je le veux de suite, pas 48h plus tard). Mon dévolu se serait jeté sur une Wacom Intuos Pen & Touch Medium à quelques 200€, compatible GNU/Linux.

Et c’est à ce moment précis qu’une question m’est venue : « oh ! 2s ! J’ai une Nvidia Schield qui a presque une taille A5 et un stylet. Ne serait-ce pas possible d’en faire un périphérique de pointage ?« . Et la réponse est OUI ! Sous GNU/Linux, avec des outils open source et sans toucher à la configuration en plus !

Ricki Hirner, alias rfc2822 sur Github, a écrit une très sympathique application Android, GfxTablet, accompagnée d’un petit bout de code pour GNU/Linux, utilisant /dev/uinput.

Pour utiliser sa tablette Android comme périphérique de pointage, il suffit de récupérer les sources via Git et compiler networktablet (dans GfxTablet/driver-uinput). Le programme utilise /dev/uinput et doit donc y avoir accès en écriture. Même pas besoin de l’installer, un ./networktablet fait parfaitement l’affaire (ou un sudo ./networktablet). On utilise xinput list pour vérifier que tout fonctionne.

Avant :

Après :

Oh, un nouveau périphérique d’entrée est détecté par Xorg. Il suffit alors de lancer l’application Android (dispo sur le PlayStore ou compilable à partir des sources sur Github) et de spécifier l’adresse IP de l’hôte où fonctionne networktablet.

Petit problème : j’ai une configuration dual-screen et la surface de la tablette est mappée sur l’ensemble de la zone formée par les deux écrans, c’est très perturbant et vraiment pas pratique. Ce n’est pas grave, demandons à  xinput ce qu’il pense concernant ce périphérique avec l’ID 11  :

Ce qui nous intéresse, comme expliqué ici, c’est « Coordinate Transformation Matrix« . Pour limiter le mapping à la moitié de l’affichage et donc un seul écran, il suffit de changer la transformation.

Pour se limiter à l’écran de gauche :

% xinput set-prop 11 --type=float "Coordinate Transformation Matrix" 0.5 0 0 0 1 0 0 0 1

et pour l’écran de droite :

% xinput set-prop 11 --type=float "Coordinate Transformation Matrix" 0.5 0 0.5 0 1 0 0 0 1

Attention, les coordonnées de transformation ici sont évidentes et simples parce que je dispose de deux écrans strictement identiques et donc avec la même résolution. Si vos deux écrans utilisent des résolutions différentes, vous êtes bon pour un peu de calcul comme expliqué sur la page ici (notez que c’est assez comique, puisqu’il s’agit du wiki des développeurs du support Xorg pour le matériel Wacom).

Et voilà ! Après quelques essais avec Gimp et Inkscape, il s’avère que cela fonctionne correctement, à une petite limitation près : contrairement à une tablette graphique Wacom, par exemple, vous n’avez pas de pointeur avant le contact avec la surface. Vous ne pouvez donc pas balader votre stylet au dessus de la tablette puis toucher pour dessiner. Mais je m’avance sans doute, il est très certainement possible d’affiner la configuration de manière à régler un seuil de niveau de pression (une application de dessin sur la Shield le permet avec le stylet, et une valeur de pression est affichée par networktablet).

Je ne compte pas intégrer la configuration de manière définitive, ma fréquence d’utilisation de la tablette pour cet usage ne le justifie pas (et je ne suis pas sûr, qu’à l’usage, je ne fais pas finir par craquer pour une Wacom tout de même…).

 

Laisser un commentaire