Touchpad Synaptic (script pour activer-désactiver)

Vos petites astuces, répertoire des tutoriels et astuces
melissa6969
Messages : 485
Enregistré le : lun. 24 oct. 2016 22:30

Touchpad Synaptic (script pour activer-désactiver)

Message par melissa6969 »

Bonjour à tous.

si un tel sujet existe déjà ou que la section est pas bonne, merci aux modos de m'y signaler.

une petite astuce qui se veut être une alternative au logiciel Touchpad-Indicator.
je ne sais pas si je suis la seule, mais touchpad-indicator a tendance à ne pas fonctionner correctement, quand on passe beaucoup de temps à jongler entre le touchpad et la souris notamment, au bout d'un moment, touchpad-indicator ne bloque plus le touchpad malgré le branchement de la souris (en tout cas sur mon pc)

du coup pour ceux qui auraient un ou des problèmes, je vous propose un script (je l'avoue, ce n'est pas moi qui l'ai fait, je l'ai récupéré sur le forum anglais de ArchLinux, c'est le seul script chez moi qui fonctionne de façon optimale, et j'en ai essayé des dizaines pourtant)

pour commencer on ouvre notre éditeur de texte favori, et on copie colle ceci dedans

Code : Tout sélectionner

#!/bin/bash

## Get the touchpad id. The -P means perl regular expressions (for \K)
## the -i makes it case insensitive (better portability) and the -o
## means print only the matched portion. The \K discards anything matched
## before it so this command will print the numeric id only.
TID=$(xinput list | grep -iPo 'touchpad.*id=\K\d+')

if [ -s "$TID" ] ; then
    echo "Touchpad not found"
    exit 1
fi

list=`xinput --list | grep -i mouse`

if [ ${#list} -eq 0 ]; then
    xinput enable "$TID"
else
    xinput disable "$TID"
fi

udevadm monitor -k -s input | while read line ; do

    if grep -q -E "KERNEL.*add.*mouse" <<< "$line" ; then

        xinput disable "$TID"
        notify-send "TOUCHPAD  DÉSACTIVÉ" "Souris Branchée"

    elif grep -q -E "KERNEL.*remove.*mouse" <<< "$line" ; then

        xinput enable "$TID"
        notify-send "TOUCHPAD  ACTIVÉ" "Souris Débranchée"
    fi

done
ce script vérifie via la commande xinput, si une souris est détectée donc branchée, si oui, le touchpad est désactivé, si on débranche la souris, le touchpad se réactive tout seul.

ensuite une fois la syntaxe copié dans l'éditeur de texte, on l'enregistre sous le nom
.touchpad.sh
le .sh est obligatoire, c'est l'extension du script shell qui permet de faire fonctionner évidemment notre script.
ça donne ceci (encadré rouge pour le nom donné)
Touchpad_10.png
notre script est enregistré dans notre /home, on ne le voit pas, puisqu'on l'a nommé avec un point devant, pour qu'il soit un fichier caché, donc on va dans notre gestionnaire de fichiers, on fait CTRL + h et les fichiers cachés apparaissent ainsi que notre script, comme sur ma capture, encadré en rouge.
Touchpad_11.png
ensuite on va dans les paramètres système, et au va dans la section
application au démarrage
on clique sur ajouter
ensuite sur commande personnalisée
comme sur ma capture, encadré en rouge
Touchpad_12.png
ensuite on rempli les champs demandés, comme sur ma capture
Touchpad_13.png
pour la case COMMANDE, on choisit notre script précédemment créer, donc on fait ainsi
- on clique sur parcourir
- ensuite sur dossier personnel chiffre 1 et encadré rouge sur ma capture d'écran
- ensuite on fait un clic droit et on choisit ""afficher les fichiers cachés"" chiffre 2 et encadré rouge sur ma capture d'écran
Touchpad_14.png
- et pour finir on double clique sur notre fichier ""touchpad.sh"" encadré rouge sur ma capture
Touchpad_15.png
et on enregistre le tout, encadré en rouge sur ma capture
Touchpad_16.png
il reste plus qu'à tout fermer.
si vous utilisez touchpad-indicator, pensez à le désactiver des programmes au démarrage avant de faire les tests pour le script.
si vous utilisez pas touchpad-indicator bah vous avez pas besoin de le désactiver hein

il vous reste plus qu'à redémarrer le pc et le script se lancera en arrière-plan automatiquement, et sera fonctionnel.
pour vous en convaincre, suffit de débrancher la souris et vérifier que le touchpad fonctionne.
brancher la souris, et vérifier que le touchpad est bien inactif.
pensez à bien laisser activé le touchpad dans les paramètres du système, dans la catégorie souris et pavé tactile
si il est désactivé dans les paramètres, le script ne pourra pas l'activer de lui-même.

j'ai effectué divers tests, plusieurs boots, reboots, déconnexion de la session, mise en veille du pc, le script est tout le temps fonctionnel, si je branche ou débranche la souris, le pavé tactile s'active ou se désactive comme prévu, pas de bugs, pas de crashs, ça fait maintenant deux semaines que je m'en sers, et tout va bien.

j'ai effectué ces tests sur ma ArchLinux Cinnamon et sur ma Debian Sid Cinnamon, donc pour les autres environnements, je ne peux pas garantir que ça soit fonctionnel, mais en théorie, il n'y a pas de raison, puisque ça agit directement sur xinput.
le script fonctionne uniquement avec les touchpads de marque Synaptic


si les experts du forum suggèrent un changement pour une amélioration du script, je suis preneuse
n'hésitez pas à me faire part de vos retours
Modifié en dernier par débitant le mer. 7 mars 2018 14:22, modifié 2 fois.

melissa6969
Messages : 485
Enregistré le : lun. 24 oct. 2016 22:30

Re: Script pour activer, désactiver le touchpad

Message par melissa6969 »

EDIT Du 19 Janvier 2018
modif du script


ajout des notifications lors du branchement débranchement de la souris, grâce à ces 2 variables

Code : Tout sélectionner

notify-send "TOUCHPAD  DÉSACTIVÉ" "Souris Branchée"
        notify-send "TOUCHPAD  ACTIVÉ" "Souris Débranchée"
le texte de la notif peut être modifier à volonté et selon votre guise, ne surtout pas oublier de mettre les guillemets pour le texte, sinon les notif ne fonctionneront pas.

et modification du script pour permettre son exécution directement au sein du kernel toujours avec xinput comme système de surveillance à chaud d'un branchement ou débranchement de souris..

et modification pour permettre au touchpad d'être désactivé quand une souris est déjà branchée lors du démarrage du pc..

lors de l'utilisation du script bien penser à désactiver le logiciel touchpad-indicator, sinon il y aura conflit entre les 2

Avatar du membre
david37
modérateur
Messages : 3884
Enregistré le : lun. 22 août 2016 05:06

Re: Script pour activer, désactiver le touchpad

Message par david37 »

Merci pour l'astuce ;)
PC1: Mobo: Gigabyte B550 AORUS Elite 2 / CPU: AMD Ryzen 7 3700X / GPU: MSI Radeon RX 580 Armor / RAM: 32 GB @3600 MHz CL16 / SSD: Samsung 970 EVO 500 GB / LM 20.2 Xfce
PC2: HP Pavilion 15 / AMD Ryzen 5 5500U with Radeon Graphics / 16GB RAM / 500 GB SSD / Debian 11 Xfce
PC3: Dell-Latitude E7240 / 2.1GHz i7-4600U / Intel Haswell-ULT HD 4400 / 8GB RAM / 250 GB Hard Drive / LM 20.2 Xfce

capdeframint
Messages : 2209
Enregistré le : jeu. 2 juin 2016 08:57
Localisation : Hautes-Alpes: GAP

Re: Toucpad Synaptic (script pour activer-désactiver)

Message par capdeframint »

Très beau travail mais pourquoi veux tu absolument désactiver le Touchpad lorsque tu branches une souris ? J'utilise très souvent mon portable avec une souris et je passe du Touchpad à la souris indifféremment et ça ne pose aucun problème de fonctionnement.
PC1:PCportable HP Pavilion 15-eh3027nf, proc Ryzen 7 7730U , Ram 16 Go, SSD 512 Go, LM 21.2 XFCE
PC2: PC portable Lenovo Ideapad 3 15ALC6 (82KU002GFR),proc Ryzen 7 5700, Ram 8Go, SSD 512 Go, LM 21.1 XFCE
Dual boot: Windows 11 Family/ Linuxmint 21.1

melissa6969
Messages : 485
Enregistré le : lun. 24 oct. 2016 22:30

Re: Touchpad Synaptic (script pour activer-désactiver)

Message par melissa6969 »

parce que je me sers jamais du touchpad quand je suis chez moi, et quand le chat va sur mon pc pour se tenir au chaud, alors si je laisse le touchpad en route, je t'explique pas les conneries involontaires qu'il ferait ;)

et quand je suis en déplacement, notamment en train avec mon pc, j'utilise que le touchpad, et une fois arrivée chez les clients, je rebranche la souris, et ça désactive le touchpad directement.
c'est une vieille habitude que j'avais sur w8.1, c'est peut-être pas la meilleure ""technique"" du monde mais elle me convient parfaitement vu que je suis pas très habile avec le touchpad (ça m'agace vite, je préfère la bonne vieille souris) :D

paul74
Messages : 2
Enregistré le : dim. 31 déc. 2017 18:43
Localisation : Haute-Svoie

Re: Touchpad Synaptic (script pour activer-désactiver)

Message par paul74 »

Bonjour et merci à Melissa,

Perso, je n'utilise pas le touchpad du tout, et j'en ai marre que ce "machin" me pollue les entrées au clavier si mon poignet l'effleure.

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Touchpad Synaptic (script pour activer-désactiver)

Message par cyrille »

Sinon , encore plus simple :

Code : Tout sélectionner

xinput 
⎡ Virtual core pointer                    	id=2	[master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer              	id=4	[slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS DualPoint Stick           	id=14	[slave  pointer  (2)]
⎜   ↳ Logitech USB Optical Mouse              	id=11	[slave  pointer  (2)]
⎜   ↳ AlpsPS/2 ALPS DualPoint TouchPad        	id=13	[slave  pointer  (2)]
⎣ Virtual core keyboard                   	id=3	[master keyboard (2)]
    ↳ Virtual core XTEST keyboard             	id=5	[slave  keyboard (3)]
    ↳ Power Button                            	id=6	[slave  keyboard (3)]
    ↳ Video Bus                               	id=7	[slave  keyboard (3)]
    ↳ Power Button                            	id=8	[slave  keyboard (3)]
    ↳ Sleep Button                            	id=9	[slave  keyboard (3)]
    ↳ Laptop_Integrated_Webcam_3M             	id=10	[slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard            	id=12	[slave  keyboard (3)]
    ↳ Dell WMI hotkeys                        	id=15	[slave  keyboard (3)]
On repère le touchpad avec un id de 13.

Pour le desactiver :

Code : Tout sélectionner

 xinput --set-prop 13 "Device Enabled" 0
Pour le réactiver

Code : Tout sélectionner

 xinput --set-prop 13 "Device Enabled" 1
Attention avec l'utilisation de : libnotify-bin dans un script
Pas installé par défaut donc il faudrait que ton script teste en premier la présence ou non de ce paquet

Code : Tout sélectionner

if which libnotify-bin > /dev/null; then
    echo "Libnotify already install. Fine."
else
    echo "Package libnotify-bin not installed. Go for the installation"
    su -c "apt-get install libnotify-bin"
fi

++C
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Touchpad Synaptic (script pour activer-désactiver)

Message par cyrille »

le .sh est obligatoire, c'est l'extension du script shell qui permet de faire fonctionner évidemment notre script.
Pas tout à fait d'accord
Sous linux les extensions ne sont pas obligatoires

Ce qui va rendre ton script executable c'est la première ligne

Code : Tout sélectionner

#/bin/sh
Qui va appeler bash

Même le fait de le passer en executable n'est pas obligatoire. Dans ce cas, tu l'appelles avec la commande sh
Le fait de le passer en executable te permettra un appel depuis le path

Exemple
Crée un fichier

Code : Tout sélectionner

nano test
#/bin/sh
echo "hello"
Pas d'extension et pas exécutable par défaut.
Pourtant

Code : Tout sélectionner

$ sh test
hello
Te montre que ça passe

Si tu le rends exécutable, tu n'as plus besoin d'invoquer sh

Code : Tout sélectionner

$ chmod +x test
$ ./test
hello
Et pourtant toujours pas d'extension

Et même si tu colles une extension qui n'est pas bonne, il reste interprêté par bash et non firefox...

Code : Tout sélectionner

 mv test test.html
 ./test.html 
hello
Ce n'est pas une critique, juste une précision. Bon développement shell ;)
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Touchpad Synaptic (script pour activer-désactiver)

Message par cyrille »

Intéressant comme sujet, allez une solution en une seule ligne.
(à coller sur 2 alias par exemple)

Desactiver le touchpad

Code : Tout sélectionner

  xinput --set-prop `xinput | sed -nr 's/.*TouchPad.*id=([0-9]*).*/\1/p'`  "Device Enabled" 0
Activer le touchpad

Code : Tout sélectionner

  xinput --set-prop `xinput | sed -nr 's/.*TouchPad.*id=([0-9]*).*/\1/p'`  "Device Enabled" 1
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

zeb
Messages : 16473
Enregistré le : ven. 19 juin 2015 22:13
Localisation : plus ici

Re: Touchpad Synaptic (script pour activer-désactiver)

Message par zeb »

paul74 a écrit :
jeu. 7 mars 2019 09:39
Bonjour et merci à Melissa,

Perso, je n'utilise pas le touchpad du tout, et j'en ai marre que ce "machin" me pollue les entrées au clavier si mon poignet l'effleure.
:l un an plus tard, on travaille dans le TP ? :mrgreen:

Merci cyrille pour les tuyaux ;)

Répondre