Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/11/2009, à 16:14

jmlaguiness

Désactiver touchpad quand la souris est branchée.

Hello, j'ai déterré un post, mais vu qu'il porte la balise [résolu], va pas yavoir grand monde à passer dessus...
http://forum.ubuntu-fr.org/viewtopic.php?pid=2321388
J'en lance donc un nouveau.

Ce que je cherche à faire, désactiver mon pad lorsque je branche la souris.

La section originale dans le /etc/X11/xorg.conf


Section "ServerLayout"
    Identifier     "aticonfig Layout"
    Screen      0  "aticonfig-Screen[0]-0" 0 0
EndSection

Quand je remplace par :


Section "ServerLayout"
    Identifier    "Default Layout"
      screen         "Default Screen" 0 0
    Inputdevice    "Generic Keyboard"    "CoreKeyboard"
    Inputdevice    "Configured Mouse"
    Inputdevice    "Synaptics Touchpad"    "CorePointer"
EndSection

Xorg ne se lance pas :'(.

J'utilise Ubuntu 9.10.

Merci pour vos réponses.

EDIT : une autre solution trouvée, utiliser syndaemon wink

ce qui donne :

syndaemon -d -t -k -i 2

et ça marche parfaitement. Simple question : ou mettre la commande si je veux qu'elle s'exécute au boot de manière "propre" ?

Dernière modification par jmlaguiness (Le 09/11/2009, à 16:53)

Hors ligne

#2 Le 10/11/2009, à 04:28

Ploply

Re : Désactiver touchpad quand la souris est branchée.

Salut,

Tu peux en faire un script (exécutable) à lancer au démarrage de la session.

#!/bin/sh

syndaemon -d -t -k -i 2

Système - Préférences - Applications au démarrage : Ajouter smile
En indiquant ton fichier.

Ça fonctionne ?


Lucid - Gnome

Hors ligne

#3 Le 10/11/2009, à 20:25

jmlaguiness

Re : Désactiver touchpad quand la souris est branchée.

Ca marche, il se lance nikel...

Merci beaucoup Ploply.

Mais c'est pas aussi efficace que de désactiver le pad quand la souris est branchée et le désactiver apres... à l'usage, ça se révèle assez ch****.

(En fait, j'ai le Dell Studio 1735, et le pad est placé un peu plus à gauche que sur la majorité des portables... Du coup, on fait que d'appuyer dessus sans faire exprès.)

Quelqu'un a une idée pour ça ?

Hors ligne

#4 Le 14/11/2009, à 20:49

bertrand0

Re : Désactiver touchpad quand la souris est branchée.

Voilà un script qui utilise xinput pour activer/désactiver le touchpad à la connexion/déconnexion d'une souris:
(Toutes les PERIOD secondes, ce script vérifie si la souris indiquée est connectée, et active ou désactive le touchpad en conséquence...)

touchswitch.sh:

#!/bin/bash

# Script configuration variables
TOUCHPAD="My Touchpad"
MOUSE="My Mouse"
PERIOD=5

# Script initialization
ACTIVE=1
TOUCHPAD_ID="$( env=C xinput list --short | sed -En s/\"$TOUCHPAD\"[[:space:]]+id=\([[:digit:]]+\)[[:space:]]+\\[[[:alpha:]]+\\]$/\\1/p )"

# No point if touchpad is not present.
if [ -z "$TOUCHPAD_ID" ]; then
   echo Touchpad is not present.
   exit 0;
fi

# Loop with periodicity PERIOD seconds
while true; do
   MOUSE_ID="$( env=C xinput list --short | sed -En s/\"$MOUSE\"[[:space:]]+id=\([[:digit:]]+\)[[:space:]]+\\[[[:alpha:]]+\\]$/\\1/p )"

   # This test assumes this script alone enables/disables the touchpad
   # but ensures that the property is not reset at every single loop
   if [ $ACTIVE == 1 ]; then
      if [ -n "$MOUSE_ID" ]; then
         # Only the first occurence of TOUCHPAD is affected
         for i in $TOUCHPAD_ID; do
            # Device Enabled (93) Property
            xinput set-int-prop $i 93 8 0
            ACTIVE=0
            break;
         done;
      fi;
   else
      if [ -z "$MOUSE_ID" ]; then
         # Only the first occurence of TOUCHPAD is affected
         for i in $TOUCHPAD_ID; do
            # Device Enabled (93) Property
            xinput set-int-prop $i 93 8 1
            ACTIVE=1
            break;
         done;
      fi;
   fi;

   sleep $PERIOD;
done;

Dans l'en-tête il faut renseigner les variables TOUCHPAD et MOUSE avec les valeurs obtenues en tapant la commande suivante dans un terminal: "xinput list --short"
Cherchez votre touchpad et votre souris dans la liste et recopiez les noms entre guillemets au début du script.
Vous pouvez aussi changer la périodicité du polling en changeant la valeur de la variable PERIOD.

Il suffit ensuite d'exécuter le script avec la commande:
/path/to/touchswitch.sh &
en remplaçant /path/to/ par le chemin d'accès où le script est stocké. Il faut penser à rendre le script exécutable en tapant "chmod u+x /path/to/touchswitch.sh"
Vous pouvez placer cette commande dans ~/.xsessionrc ou bien dans ~/.xprofile

Je n'ai pas testé le script en parallèle avec syndaemon, donc je ne sais pas l'effet que cela aurait. Cela pourrait fonctionner, étant donné que syndaemon agit sur le pilote synaptic tandis que ce script agit sur l'extension XINPUT su serveur X. Mais cela n'a pas grand intérêt puisque les cas d'utilisation de ces deux programmes sont différents.

Dernière modification par bertrand0 (Le 30/11/2009, à 21:34)


Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
                                                            Buffon, Discours sur le style

Hors ligne

#5 Le 30/11/2009, à 18:16

Tuxmouraille

Re : Désactiver touchpad quand la souris est branchée.

Bonjour,
Pour désactiver le touchpad tu peux utiliser touchfreeze, ou la méthode avec le scripte et la raccourcis clavier dans le paragraphe: Désactiver temporairement le touchpad ici http://doc.ubuntu-fr.org/touchpad#D%C3% … e_touchpad. Pour désactiver le touchpad au branchement de la souris il faut utiliser une règle udev tu trouveras un exemple ici : http://planet.ubuntu-fr.org/tag/touchpad. Pour le moment ça ne marche pas chez moi.

Quand à la commande :

syndaemon -d -t -k -i 2 &

tu peux aussi l'ajouter à la fin de ton fichier .bashrc

Si quelqu'un arrive à désactiver le touchpad au branchement de la souris je suis preneur.


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne

#6 Le 30/11/2009, à 21:35

bertrand0

Re : Désactiver touchpad quand la souris est branchée.

Tuxmouraille a écrit :

Si quelqu'un arrive à désactiver le touchpad au branchement de la souris je suis preneur.

Avez-vous essayé le script que je vous propose ?


Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
                                                            Buffon, Discours sur le style

Hors ligne

#7 Le 02/12/2009, à 12:14

Tuxmouraille

Re : Désactiver touchpad quand la souris est branchée.

Bonjour,
J'ai dit une bêtise concernant le fichier .bashrc, il est lancer à chaque ouverture d'un terminal dans la session utilisateur. A éviter donc.

@bertrand0: Je cherche une solution avec les règles udev, ce qui me permet d'apprendre à les écrire.
Je n'ai pas de fichiers ~/.xsessionrc et ~/.xprofile, par contre j'ai un .profile.
J'ai une erreur

sed: -e expression n°1, caractère 88: option inconnue pour `s'
Touchpad is not present.

Pour désactiver le touchpad lors de la frappe: Système => Préférence => Souris => onglet "Pavé tactile" et cocher "Désactiver le pavé tactile lors de la frappe".

Dernière modification par Tuxmouraille (Le 02/12/2009, à 12:53)


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne

#8 Le 02/12/2009, à 12:55

Tuxmouraille

Re : Désactiver touchpad quand la souris est branchée.

Re,
Ce fil fait doublons avec http://forum.ubuntu-fr.org/viewtopic.php?id=335456. Il faudrait peu être en fermer un.


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne

#9 Le 03/12/2009, à 03:31

bertrand0

Re : Désactiver touchpad quand la souris est branchée.

Je ne l'ai pas précisé mais, les deux variables TOUCHPAD et MOUSE doivent être des expressions Regex étendu (donc les caractères .+?()[]{}\ doivent être échappés par un \). Notamment, et c'est ce qui cause le problème ici, le caractère / doit aussi être échappé en le précédant de \ car il sert de délimiteur à la commande sed.
Ex: "Synaptics PS/2 Touchpad"
devient TOUCHPAD="Synaptics PS\\/2 Touchpad"
ou bien TOUCHPAD='Synaptics PS\/2 Touchpad'

Concernant udev, c'est effectivement une solution qui serait plus efficace; il suffirait d'ajouter la paire de règle suivante, ou qq chose approchant:

ACTION=="add", ENV{ID_CLASS}="mouse", DRIVERS!="synaptics_i2c", RUN+="/path/to/touchpad_deactivation_script"
ACTION=="remove", ENV{ID_CLASS}="mouse", DRIVERS!="synaptics_i2c", RUN+="/path/to/touchpad_activation_script"

dans un nouveau fichier du dossier /etc/udev/rules.d
en remplaçant les touchpad_(de)activation_script par les commandes appropriées, et en remplaçant synaptics_i2c par le module effectivement utilisé par le touchpad.
Le seul hic survient si on ajoute deux souris puis qu'on en débranche une seule. Le touchpad se voit réactivé, à moins que le script appelé teste le cas de figure.


Les fichiers ~/.xsessionrc et ~/.xprofile ne sont pas présent par défaut, mais si vous les créez, ils seront sourcés durant l'initialisation de la session X. Remarquez que selon les versions d'ubuntu, et selon le gestionnaire de session choisi (gdm, kdm, xdm), c'est l'un ou l'autre qui est appelé, voire les deux. Dans karmic et avec gdm, il s'agit de ~/.xprofile comme on peut le voir dans le fichier /etc/gdm/Xsession.

Dernière modification par bertrand0 (Le 03/12/2009, à 03:56)


Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
                                                            Buffon, Discours sur le style

Hors ligne

#10 Le 03/12/2009, à 13:19

Tuxmouraille

Re : Désactiver touchpad quand la souris est branchée.

Bonjour,
Merci beaucoup pour les caractères d'échappement, ils m'ont échappé.
J'avais écrit une règle qui utilisait le nom de la souris, dans ce cas le touchpad n'est désactivé que lorsque cette souris est branchée.
Ma règle est la suivante:

ACTION=="add", ATTR{name}=="Acrox USB & PS/2 Mouse", RUN+="/usr/bin/synclient TouchpadOff=1"
ACTION=="remove", ATTR{name}=="Acrox USB & PS/2 Mouse", RUN+="/usr/bin/synclient TouchpadOff=0"

Elle ne fonctionne pas. Peu être même quelle fonction à l'envers, car si je fait un sudo service udev restart le touchpad fonctionne toujours mais la souris est désactivée.

Est ce que & et - doivent aussi être échappés?

P.S.: je ne suis pas sûr que synclient ne doivent pas être exécuté dans la session utilisateur.

Dernière modification par Tuxmouraille (Le 03/12/2009, à 18:24)


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne

#11 Le 05/12/2009, à 06:39

bertrand0

Re : Désactiver touchpad quand la souris est branchée.

Les champs de udev sont des motifs style shell, donc les caractères à échapper sont *?[]| pour les clés d'appariement; Les seuls caractères spéciaux sont $% dans les clefs d'assignation (il faut les doubler pour obtenir le caractère correspondant.).

A moins que ce ne soit intentionnel, il vaut mieux vous assurer que la commande ajouté à la pile RUN renvoie une sortie d'erreur nulle, sinon udev traitera l'évènement différemment.

La commande synclient n'est effectivement utilisable qu'une fois que le module synaptics du serveur X est chargé et donc a fortiori, une fois le serveur X lancé, et à condition que l'option SHMConfig soit activée. La méthode utilisant xinput dans le script que je propose plus haut nécessite aussi que le serveur X soit chargé, et de plus que le fichier XAuthority soit accessible (donc lancé depuis la session utilisateur, ou bien avec qq manipulations supplémentaires).

La méthode la plus évidente pour contourner ce problème consiste à utiliser 2 scripts:
1- un script appelé par les règles udev, qui se charge de stocker en un lieu connu l'état souhaité du touchpad.
2- un script appelé au sein de la session utilisateur, qui se charge de commuter le touchpad en fonction des souhaits du premier script.


Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
                                                            Buffon, Discours sur le style

Hors ligne

#12 Le 06/11/2010, à 12:29

MC_911

Re : Désactiver touchpad quand la souris est branchée.

J'ai du mal à suivre ...
Ma problématique à moi est simple : quand je désactive temporairement mon touchpad (avec gpointing, ou gsynaptics, j'ai testé les deux à tout hasard), il se réactive tout seul après genre 30s. Comment le désactiver une bonne fois pour toutes ?

Hors ligne

#13 Le 11/11/2010, à 20:45

bertrand0

Re : Désactiver touchpad quand la souris est branchée.

S'il se réactive, c'est qu'il y a un processus ou un script en tâche de fond qui le réactive; déterminez lequel et empêchez son exécution.
Utilisez ps pour cela (en cherchant si syndaemon ou un équivalent tourne en tâche de fond...), ou bien lsof (sur le fichier adéquat de /dev/shm si SHMConfig est activé, ou bien sur le fichier adéquat sous /sys; je n'ai pas les noms exacts en tête...). Vous pouvez également monitorer les évènements xinput dans les logs du serveur X avec le niveau de verbosité approprié, ou bien avec xinput -get-feedbacks...

Sinon, la méthode la plus rapide (mais loin d'être la plus propre) de désactiver une fois pour toutes le touchpad, c'est de décharger le module correspondant ("sudo modprobe -r synaptics_i2c" par exemple). Il faudra alors recharger manuellement ce même module pour récupérer le contrôle du touchpad...

Vous pouvez aussi désactiver l'option SHMConfig....

La solution la plus efficace reste de trouver quel est le programme qui met le bazar; il n'y a pas 36 possibilités...

Dernière modification par bertrand0 (Le 11/11/2010, à 20:48)


Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
                                                            Buffon, Discours sur le style

Hors ligne

#14 Le 11/11/2010, à 21:07

MC_911

Re : Désactiver touchpad quand la souris est branchée.

Merci ... je vais donc fouiller dans cette direction. Au pire, je désactiverai le module ... pas si grave vu que je me sers pas du tout du touchpad.
edit : j'ai bien un syndaemon -i 0.5 -k en arrière plan ...

MC

Dernière modification par MC_911 (Le 11/11/2010, à 21:11)

Hors ligne