Je souhaite que mon pavé tactile soit automatiquement désactivé lorsqu'une souris externe est connectée et activé lorsqu'il n'y en a pas. J'ai essayé d'utiliser touchpad-indicator
mais cela échoue dans les cas où l'ordinateur a été mis en veille avec une souris connectée et réveillé avec la souris déconnectée.
J'ai essayé de faire du script suivant un démon pour résoudre ce problème mais je n'arrive pas à le faire fonctionner:
#!/bin/bash
declare -i TID
declare -i MID
TID=`xinput list | grep -Eo 'Touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
MID=`xinput list | grep -Eo 'Mouse\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
if [ $MID -gt 0 ]
then
xinput disable $TID
else
xinput enable $TID
fi
j'ai essayé start-stop-daemon -S -x ./myscript.sh -b
et setsid ./myscript.sh >/dev/null 2>&1 < /dev/null &
et nohup ./myscript 0<&- &>/dev/null &
et même./myscript.sh &
Tous ceux-ci renvoient un nombre à 4 chiffres, qui, je suppose, devrait être le PID du processus démarré, mais lorsque je lance lxtask, il n'y a pas de processus avec ce PID , même si je coche "Afficher tous les processus". Et, bien sûr, cela ne fonctionne pas!
xinput
besoin d'un serveur X en cours d'exécution, et la plupart des méthodes d'exécution de trucs en tant que démons n'ont aucune connaissance ni capacité de se connecter à X. Troisièmement, la principale raison pour laquelle vous devez toujours expliquer ce que vous essayez de faire est que très souvent la solution que quelqu'un tente de postuler n'est pas vraiment le moyen de le faire et vous finissez par poser la mauvaise question, communément appelée le problème XY .Réponses:
Le script de base dont vous avez besoin est simplement:
Le script ci-dessus bascule le trackpad selon que la souris est connectée ou non. Une fois lancé, il fonctionnera pour toujours et recherchera une souris à chaque seconde, désactivant ou activant le pavé tactile en conséquence.
Maintenant, enregistrez le script sous
~/touchpad.sh
, rendez-le exécutable (chmod +x ~/touchpad.sh
) et ajoutez-le à vos programmes de démarrage de session GUI. Vous n'avez pas spécifié l'environnement de bureau que vous utilisez, mais comme vous l'avez mentionnélxtask
, je suppose que vous utilisezLXDE
. Dans tous les cas, voici des instructions pour les deuxLXDE
etUnity
:Ajouter le script aux fichiers de démarrage automatique de LXDE
Assurez-vous de remplacer "PROFILE" par le nom réel de votre profil LXDE , vous pouvez découvrir ce que c'est en exécutant
ls ~/.config/lxsession/
.Ajouter le script aux fichiers de démarrage automatique d'Unity
Ouvrir
Startup Applications
(rechercher dans le tableau de bord "Démarrage")Cliquez sur "Ajouter" puis collez le chemin de votre script dans le champ de commande:
la source
D'accord, j'ai fait une règle udev pour cela, et c'est, comme l'a dit @terdon, une manière beaucoup plus propre
Donc, grâce à ce guide , j'ai créé un fichier "touchpad_toggle.rules" dans /etc/udev/rules.d/ (nécessite un accès root) et je l'ai rempli de deux lignes:
N'oubliez pas de remplacer "nom d'utilisateur" par votre nom d'utilisateur!
Le contenu de ces scripts shell on et off n'est qu'une version castrée du script dans ma question. Exemple - off.sh:
Vous devrez utiliser xinput enable $ TID dans le on.sh
Et n'oubliez pas d'ajouter le script dans ma question (ou celle suggérée par @terdon, mais sans boucle) au démarrage automatique de la session comme il vous l'a dit dans sa réponse.
Ça y est, mais je dois ajouter une chose:
Si vous avez un pavé tactile Synaptics (j'ai Elantech, donc il ne me convient pas), vous pouvez remplacer vos scripts (chemins vers lesquels vous écrivez après RUN + =) par une simple commande
/usr/bin/synclient TouchpadOff=0
et 1 respectivementla source
udev
règle de toute façon, il peut être préférable d'enregistrer le fichier ailleurs que dans le répertoire personnel. Par exemple:/usr/local/bin
ou/opt/touchpad-toggle/bin/
.