Touchscreen Laptop Les deux derniers laptops (ordinateurs portables) que j’ai achetés ont un écran tactile (touchscreen en anglais). Je n’avais pas forcément besoin de cette fonctionnalité, mais elle est de plus en plus présente sur les configs récentes. De plus en reconditionné on a parfois moins de choix de configs, ce qui a été mon cas.

Bref, je me retrouve avec des écrans tactiles qui ne me servent peu, voire pas du tout, voire s’avèrent génants. En effet, les environnements de bureau tel que Gnome ou d’autres ne sont pas vraiment conçus pour le tactile, de plus, il m’arrive souvent de toucher par inadvertance l'écran et que cela fasse quelque chose de non souhaité.

C’est pour ces raisons que j’ai cherché comment désactiver cette fonctionnalité. Je n’ai rien trouvé dans les paramètres de configuration de l’environnement de bureau que j’utilise, en revanche, il existe un moyen de le faire en ligne de commande de manière assez simple.

Il faut d’abord trouver l’identifiant (id) du périphérique en question. Pour cela, on utilise la commande suivante :

xinput list

Et on obtient un résultat de ce genre :

sortie commande xinput list

Le touchscreen (entouré en rouge), dont le nom de périphérique (device name) est ici “ELAN Touchscreen”, possède donc dans mon cas l'id 10. Maintenant, pour le désactiver, il me suffit de lancer cette commande :

xinput set-prop 10 'Device Enabled' 0

Voilà, notre écran tactile est désactivé. Mais seulement pour la session courante. Il sera réactivé au redémarrage.

Pour faire qu’il reste désactivé au redémarrage, j’aurais pu faire un service systemd, mais ça m’a saoulé et je ne suis pas bien à l’aise avec cette usine à gaz. Avec SysVinit on aurait pu mettre la commande dans le rc.local (qui n’existe plus avec systemd). J’ai donc opté pour l’utilisation de cron en utilisant la directive @reboot qui execute la commande au redémarrage de la machine. Edit : Comme cela aurait été trop simple, X (je suppose) n’attribue pas toujours le même id aux périphériques. Il faut donc ruser un peu pour récupérer l'id avant de lancer la commande pour désactiver l'écran tactile. J’ai donc écrit un petit script pour faire tout cela :

#!/bin/bash

# disable touchscreen

# touchscreen device name
TDN="ELAN Touchscreen"

TID=$(xinput list --id-only "${TDN}");

# check if Touchscreen Id is an integer
if [[ $TID =~ ^[0-9]+$ ]]; then
        # disable touchscreen
        xinput set-prop $TID 'Device Enabled' 0
else
        echo "Can't get Touchscreen id";
fi;

Script que j’ai sauvegardé sous ~/bin/disable-touchscreen. N’oubliez pas de rendre le script executable :

chmod u+x ~/bin/disable-touchscreen

Ensuite j’ai édité le fichier /etc/crontab en y ajoutant cette ligne (remplacez <MON_USERNAME> par le votre bien sûr) :

@reboot    root    /home/<MON_USERNAME>/bin/disable-touchscreen

Maintenant mon écran tactile est désactivé tout le temps