Où dois-je coller une commande «xinput» afin qu'elle l'exécute au démarrage de GNOME?

10

Sur mon Thinkpad, j'ai besoin d'exécuter quelque chose comme ça dans le terminal:

xinput set-int-prop "TPPS/2 IBM TrackPoint" "Evdev Middle Button Emulation" 8 1

de sorte que mes 2 boutons sur mon pavé tactile émulent le clic du milieu de la souris. Maintenant, j'ai besoin que cette ligne soit exécutée chaque fois que je démarre GNOMe ou X ou quoi que ce soit, pour que ça "marche".

J'ai essayé ~ / .xsession ou ~ / .bashrc mais en vain. Dois-je le mettre dans les scripts de démarrage de GNOME ou dans / etc / X quelque part?

J'utilise Ubuntu 11.10.

michuk
la source
Essayez d'ajouter un sleep 5au début de votre .xsessionfichier?
Thomas Ahle
1
@ThomasAhle qui ne résoudra pas le problème si le gestionnaire de fenêtres est chargé et modifie les propriétés evdev après l'exécution de la .xsession.
Marcin Kaminski

Réponses:

7

J'utilise Enlightenment DM, mais cela concerne d'autres DM / ordinateurs de bureau. Je commence ma session en utilisant xsession, j'ai donc initialement mis les commandes xinput dans ~ / .xsession qui n'ont pas changé tous les paramètres que je voulais changer. Seulement certains d'entre eux. Je m'attendais à tout ou à aucun changement, j'ai donc ajouté une boucle de 10 interactions à ma session .x avec des intervalles de 1 seconde, en exécutant les commandes xinput à chaque fois et en vérifiant si les paramètres étaient appliqués. À ma grande surprise, tous les paramètres ont été appliqués après la première itération.

Cela signifie que c'est votre DM qui fait quelque chose pour remplacer vos paramètres xinput et puisque la commande qui lance votre DM (E17 dans mon cas) est la dernière de votre fichier .xsession, ce fichier n'a pas sa place.

J'ai ajouté les lignes suivantes dans mon ~ / .profile et cela a résolu le problème:

# don't run unless we're being invoked from an xwindows session
if [[ -n ${DISPLAY} ]]; then

  # set your devices names here
  pointer1="IBM TrackPoint"
  pointer2="Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint"
  pointer3="Logitech USB Trackball"

  id1=$(xinput | awk -F= "/$pointer1.*pointer/ {print \$2}" | cut -f1)
  id2=$(xinput | awk -F= "/$pointer2.*pointer/ {print \$2}" | cut -f1)
  id3=$(xinput | awk -F= "/$pointer3.*pointer/ {print \$2}" | cut -f1)

  if [[ -n "${id1}" ]]; then
    xinput --set-button-map "${id1}" 1 2 3 4 5 6 7
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id1}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id1}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id1}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id2}" ]]; then
    xinput --set-button-map "${id2}" 1 2 3 4 5 6 7
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id2}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id2}"  "Evdev Wheel Emulation Button" 2
    xinput set-prop "${id2}"  "Evdev Middle Button Emulation" 0
  fi

  if [[ -n "${id3}" ]]; then
    xinput --set-button-map "${id3}" 1 2 3 4 5 6 7 8 9
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Axes" 6 7 4 5
    xinput set-prop "${id3}"  "Evdev Wheel Emulation" 1
    xinput set-prop "${id3}"  "Evdev Wheel Emulation Button" 8
    xinput set-prop "${id3}"  "Evdev Middle Button Emulation" 1
  fi
fi

PS. set-int-prop est déconseillé au profit de set-prop (man xinput).

J'espère que cela aide quelqu'un.

Marcin Kaminski
la source
Le script est sympa, mais malheureusement il ne me donne pas de solution. Pour l'instant, la seule méthode fonctionne, si j'exécute le terminal, puis exécute le «xinput set-prop» avec les options requises. J'ai essayé le script de Marcin, Startup Application mais cela n'a malheureusement pas fonctionné.
Geeocode
"set-int-prop a été déconseillé au profit de set-prop" T • H • A • N • K • • Y • O • U •
Clément
4

Ajoutez la commande directement aux applications de démarrage. Dans le champ de commande.

ou

créer un script simple et ajouter le script aux applications de démarrage.

NickTux
la source
3

Créez un fichier /etc/X11/Xsession.d/dedans.

Florian Diesch
la source
Pour moi, c'était/etc/X11/xinit/Xsession
Thomas Ahle
3
Je n'encourage généralement pas à apporter des modifications de configuration spécifiques à l'utilisateur dans un fichier de configuration à l'échelle du système. Tout d'abord parce que cela crée une chose supplémentaire à retenir lorsque vous devez migrer vers une autre machine et deuxièmement, parce que ces fichiers sont principalement là pour fournir des valeurs par défaut raisonnables. C'est bien de pouvoir prendre juste l'instantané de votre $ HOME et la liste des paquets installés avec vous lorsque vous devez réinstaller / migrer.
Marcin Kaminski
1

Voici comment je l'ai fait dans Ubuntu 14.04 à partir du terminal:

1) Vérifiez le nom de votre appareil:

xinput list

2) Voir les options disponibles pour votre appareil:

xinput list-props "Your Device Name"

3) Modifier les paramètres (pour rendre les paramètres cohérents après le redémarrage / l'arrêt, ajoutez simplement cette commande aux applications de démarrage ):

xinput set-prop "Your Device Name" "Option Name" "Value"

Voici un exemple de commande que j'ai utilisé pour activer les traînées verrouillées dans mon pavé tactile:

xinput set-prop "SynPS/2 Synaptics TouchPad" "Synaptics Locked Drags" 1

Pour activer / modifier une autre option, recherchez-la dans les options disponibles de votre appareil et jouez avec elles jusqu'à ce que vous obteniez le résultat souhaité, puis ajoutez la commande aux applications de démarrage et vous avez terminé! J'espère que ça aide! :)

Marco
la source