Je souhaite que mon pavé tactile soit désactivé automatiquement 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 lorsque l'ordinateur a été mis en veille avec une souris connectée et réveillé lorsque la souris est déconnectée.
J'ai essayé de transformer le script suivant en démon pour résoudre ce problème, mais je ne parviens 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 ces éléments 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, ça ne marche pas!
Le script de base dont vous avez besoin est simplement:
#!/usr/bin/env 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+')
## Run every second
while :
do
## Disable the touchpad if there is a mouse connected
## and enable it if there is none.
xinput list | grep -iq mouse && xinput disable "$TID" || xinput enable "$TID"
## wait one second to avoind spamming your CPU
sleep 1
done
Le script ci-dessus bascule le trackpad selon qu'une souris est connectée ou non. Une fois lancé, il fonctionnera indéfiniment et recherchera une souris toutes les secondes, désactivant ou activant le pavé tactile en conséquence.
Enregistrez maintenant le script sous le nom ~/touchpad.sh
, rendez-le exécutable (chmod +x ~/touchpad.sh
) et ajoutez-le à vos programmes de démarrage de session à interface graphique. Vous n'avez pas spécifié l'environnement de bureau que vous utilisez, mais comme vous avez mentionné lxtask
, je suppose que vous utilisez LXDE
. Dans tous les cas, voici les instructions pour LXDE
et Unity
:
Ajouter le script aux fichiers de démarrage automatique de LXDE
echo "@$HOME/touchpad.sh" >> ~/.config/lxsession/PROFILE/autostart file
Assurez-vous de remplacer "PROFILE" par le nom réel de votre profil LXDE, vous pouvez le découvrir en exécutant ls ~/.config/lxsession/
.
Ajouter le script aux fichiers de démarrage automatique de Unity
Ouvrez Startup Applications
(recherchez "Démarrage" dans le tableau de bord)
Cliquez sur "Ajouter" puis collez le chemin d'accès à votre script dans le champ de commande:
Ok, j'ai fait une règle udev pour cela, et c'est, comme @terdon l'a dit, une 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 l'a rempli avec deux lignes:
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="add", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/username/.Xauthority", RUN+="/home/username/on.sh"
SUBSYSTEM=="input", KERNEL=="mouse[0-9]*", ACTION=="remove", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/username/.Xauthority", RUN+="/home/username/off.sh"
N'oubliez pas de remplacer "nom d'utilisateur" par votre nom d'utilisateur!
Le contenu de ces scripts Shell est une version castrée du script dans ma question. Exemple - off.sh:
#!/bin/bash
declare -i TID
TID=`xinput list | grep -Eo 'Touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
xinput disable $TID
Vous devrez utiliser xinput enable $ TID dans le fichier 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.
C'est ça, mais je dois ajouter une chose:
Si vous avez un pavé tactile Synaptics (j'ai Elantech, ce qui ne me convient pas), vous pouvez remplacer vos scripts (chemins sur lesquels vous écrivez après RUN + =) par une simple commande /usr/bin/synclient TouchpadOff=0
et 1