web-dev-qa-db-fra.com

Comment changer les valeurs par défaut de Xinput?

Je souhaite désactiver l'accélération de la souris sur ma souris et je souhaite la modifier en modifiant la valeur de libinput Accel Profile Enabled Default de 1, 0 en 0, 1 avec une commande xinput --set-prop [ID] [id of the value] 0, 1, mais renvoyant un Erreur:

X Error of failed request:  BadAccess (attempt to access private resource denied)
  Major opcode of failed request:  131 (XInputExtension)
  Minor opcode of failed request:  57 ()
  Serial number of failed request:  19
  Current serial number in output stream:  20

Je ne peux pas créer d'application de démarrage car l'ID de ma souris change constamment, sans raison. Je ne peux pas non plus modifier la valeur globale de la variable car je dois activer l'accélération du pointeur pour mon pavé tactile.

2
kiroma

Édité:

Je modifie ma réponse pour montrer une approche beaucoup plus simple. Vous pouvez utiliser un périphérique type:name au lieu de son ID comme ceci:

xinput set-prop "keyboard:Logitech K400 Plus" "libinput Middle Emulation Enabled" 1

Cela évite d'avoir à connaître le champ volatile ID.


Ancienne réponse:

Je n'avais pas trouvé le moyen de changer les valeurs par défaut de Xinput, mais vous pouvez utiliser des pipes bash pour obtenir l'ID de manière dynamique et l'utiliser dans une application de démarrage.

Comme je manque des détails de votre appareil, je donne l'exemple avec mon cas personnel. Je souhaite modifier certaines propriétés Xinput de mon clavier K400 +.

Vous devez d’abord localiser de manière univoque la ligne Xinput qui identifie votre appareil.

$ xinput

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech K400 Plus                        id=6    [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Logitech K400 Plus                        id=7    [slave  keyboard (3)]

Je peux donc utiliser la regex simple K400.*keyboard pour obtenir la dernière ligne (pas celle du pointeur). Ensuite, je grep cette expression rationnelle dans un tuyau, isolez l'id via l'utilitaire cut.

$ xinput | grep K400.*keyboard | cut -f2 | cut -c4-
7

Finnaly je l'utilise pour changer la propriété que je veux. Dans ce cas, je suis intéressé par libinput Middle Emulation Enabled. La commande complète qui fait cela est:

xinput | grep K400.*keyboard | cut -f2 | cut -c4- | 
xargs -I{} xinput set-prop {} "libinput Middle Emulation Enabled" 1

Maintenant, vous pouvez l'utiliser comme une application de démarrage.

1
Susensio