Sur tous les systèmes Ubuntu, la vitesse du pointeur de la souris est réglée sur la vitesse la plus lente, mais la vitesse de déplacement est trop élevée. (Maintenant, j'utilise Ubuntu 16.04.) J'ai effectué des recherches et découvert que cette commande résout mon problème:
xinput --set-prop "Logitech USB Laser Mouse" "Device Accel Constant Deceleration" 1.75
Mais lorsque je débranche la souris et la rebranche, sa vitesse revient aux paramètres du système. Je dois donc exécuter cette commande tout le temps. Que devrais-je faire?
Mettez à jour le fichier . Xinputrc dans votre répertoire $ HOME et insérez-y vos commandes xinput (une par ligne). Il sera lu chaque fois que vous ouvrirez votre session. S'il n'existe pas, créez-le: (aurait dû être généré par im-config)
Mien :
_# im-config(8) generated on Wed, 15 Feb 2017 19:29:43 +0100
run_im ibus
# im-config signature: 90bece1e5f840b27085989abd900276a -
#BYME# Put your xinput commands here
#BYME#With DRI2 : Device Accel Constant Deceleration (267)
xinput --set-prop 11 267 2
#BYME#With DRI3 : Device Accel Constant Deceleration (264)
xinput --set-prop 11 264 2
_
Ce fichier .xinputrc fonctionne dans les deux cas (si DRI3 est activé ou non)
En passant, j’utilise plusieurs écrans (mixant les écrans 4K et 16: 9) et je me sens bien d’avoir seulement réglé _Device Accel Constant Deceleration
_ à _2
_. N'hésitez pas à changer cette valeur (ou une autre).
(NE PAS) l'ajouter à votre fichier .bashrc ou à un autre fichier spécifique à votre profil (qui peut être lu plusieurs fois et peut conduire à une interprétation erronée du comportement réellement appliqué à la souris)
Pour déterminer les options à utiliser:
_$ xinput --list --short
_
Sur mon hôte Ubuntu (j'utilise un KVM pour basculer entre mes ordinateurs), il renvoie:
_Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ No brand Combo Free KVM id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ No brand Combo Free KVM id=10 [slave keyboard (3)]
_
Donc au lieu de jouer avec les chaînes (et de faire des erreurs en les tapant), je préfère utiliser des identifiants numériques (courts) (sachant maintenant comment les trouver et leur signification).
Dans mon cas, ma souris est sous _Virtual core pointer
_, identifié comme No brand Combo Free KVM
avec l'identificateur numérique 11
. Comme expliqué précédemment, je vais maintenant utiliser cet identifiant numérique au lieu de la chaîne correspondante, mais vous pouvez le faire comme vous le souhaitez (les deux fonctionnent).
Pour savoir quelles propriétés/fonctionnalités sont disponibles avec ma souris, je dois taper: (adaptez cette commande au résultat de la précédente, votre propre identifiant devrait être différent)
_$ xinput --list-props 11
_
_Device 'No brand Combo Free KVM':
Device Enabled (136): 1
Coordinate Transformation Matrix (138): 1.000000, 0.000000, 0.000000, 0.000000,
1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (266): 0
Device Accel Constant Deceleration (267): 1.000000
Device Accel Adaptive Deceleration (268): 1.000000
Device Accel Velocity Scaling (269): 10.000000
Device Product ID (257): 4309, 20480
Device Node (258): "/dev/input/event16"
Evdev Axis Inversion (270): 0, 0
Evdev Axes Swap (272): 0
Axis Labels (273): "Rel X" (146), "Rel Y" (147), "Rel Horiz Wheel" (264), "
Rel Vert Wheel" (265)
Button Labels (274): "Button Left" (139), "Button Middle" (140), "Button Righ
t" (141), "Button Wheel Up" (142), "Button Wheel Down" (143), "Button Horiz Wheel Left"
(144), "Button Horiz Wheel Right" (145), "Button Side" (262), "Button Extra" (263), "But
ton Unknown" (260), "Button Unknown" (260), "Button Unknown" (260), "Button Unknown" (26
0)
Evdev Scrolling Distance (275): 1, 1, 1
Evdev Middle Button Emulation (276): 0
Evdev Middle Button Timeout (277): 50
Evdev Third Button Emulation (278): 0
Evdev Third Button Emulation Timeout (279): 1000
Evdev Third Button Emulation Button (280): 3
Evdev Third Button Emulation Threshold (281): 20
Evdev Wheel Emulation (282): 0
Evdev Wheel Emulation Axes (283): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (284): 10
Evdev Wheel Emulation Timeout (285): 200
Evdev Wheel Emulation Button (286): 4
Evdev Drag Lock Buttons (287): 0
_
Voici comment identifier les propriétés à modifier!
_Accel Constant Deceleration
_ (identificateur numérique: 267
) fait très bien le travail pour moi. N'hésitez pas à "jouer" avec d'autres propriétés pour trouver le bon comportement pour votre propre souris.
C'est pourquoi j'ai ajouté la ligne suivante à mon . Xinputrc, en changeant la valeur de _1.000000
_ à _2
_ (spécifier un float n'est pas obligatoire) car augmenter la décélération conduit à ralentir la vitesse de la souris:
_xinput --set-prop 11 267 2
_
DRI2 uniquement, par défaut, sous Ubuntu 16.04 (Bien que cela puisse entraîner des problèmes, comme avec les dernières versions de Chrome, nécessitant que DRI3 prenne en charge le multi-fenêtre en douceur)
Si vous avez activé DRI3, les identifiants doivent maintenant être:
_Device 'No brand Combo Free KVM':
Device Enabled (133): 1
Coordinate Transformation Matrix (135): 1.000000, 0.000000, 0.000000, 0.000000,
1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (263): 0
Device Accel Constant Deceleration (264): 1.000000
Device Accel Adaptive Deceleration (265): 1.000000
Device Accel Velocity Scaling (266): 10.000000
Device Product ID (254): 4309, 20480
Device Node (255): "/dev/input/event9"
Evdev Axis Inversion (267): 0, 0
Evdev Axes Swap (269): 0
Axis Labels (270): "Rel X" (143), "Rel Y" (144), "Rel Horiz Wheel" (261), "
Rel Vert Wheel" (262)
Button Labels (271): "Button Left" (136), "Button Middle" (137), "Button Righ
t" (138), "Button Wheel Up" (139), "Button Wheel Down" (140), "Button Horiz Wheel Left"
(141), "Button Horiz Wheel Right" (142), "Button Side" (259), "Button Extra" (260), "But
ton Unknown" (257), "Button Unknown" (257), "Button Unknown" (257), "Button Unknown" (25
7)
Evdev Scrolling Distance (272): 1, 1, 1
Evdev Middle Button Emulation (273): 0
Evdev Middle Button Timeout (274): 50
Evdev Third Button Emulation (275): 0
Evdev Third Button Emulation Timeout (276): 1000
Evdev Third Button Emulation Button (277): 3
Evdev Third Button Emulation Threshold (278): 20
Evdev Wheel Emulation (279): 0
Evdev Wheel Emulation Axes (280): 0, 0, 4, 5
Evdev Wheel Emulation Inertia (281): 10
Evdev Wheel Emulation Timeout (282): 200
Evdev Wheel Emulation Button (283): 4
Evdev Drag Lock Buttons (284): 0
_
_Accel Constant Deceleration
_ est maintenant identifié par 264
. C'est pourquoi j'ai également ajouté (ayant le même comportement, que DRI3 soit activé ou non) dans mon . Xinputrc:
_xinput --set-prop 11 264 2
_
J'espère que cela vous aidera.
Nous pouvons résoudre ce problème en écrivant une règle udev
.
Nous devons d’abord identifier notre souris, il y a différentes façons de le faire, j’ai lancé lsusb
et le résultat est le suivant:
...
Bus 002 Device 011: ID 104f:0003 WB Electronics
...
puis j'ai utilisé le vendeur id 104f
, cherchez le noeud de périphérique de la souris:
$ find /dev/input -iname *104f* -ls
540 0 lrwxrwxrwx 1 root ... /dev/input/by-id/usb-104f-mouse -> ../mouse2
donc mon périphérique de souris est /dev/input/mouse2
.
Utilisez udevadm info /dev/input/mouse2 --attribute-walk
pour obtenir une liste de détails sur le périphérique afin que nous puissions les utiliser pour écrire une règle udev
.
Sélectionnez une seule section contenant: ATTRS{idProduct}
& ATTRS{idVendor}
.
Ensuite, créez un fichier ici:
Sudo nano /etc/udev/rules.d/95-mymouse.rules
avec un contenu choisi semblable à:
SUBSYSTEMS=="usb", ATTRS{idProduct}=="xxxx", ATTRS{idVendor}=="xxxx", RUN+="/bin/touch /tmp/my.udev"
N'oubliez pas de changer xxxx
avec votre propre périphérique et code produit.
Maintenant, lancez:
Sudo udevadm control --reload
Chaque fois que vous connectez votre souris au système, udev
exécutera une commande, qui sera touch
un fichier situé à /tmp/my.udev
.
Pourquoi ne lançons-nous pas simplement xinput ? Après l'exécution d'une règle udev
, "X" réinitialise certains détails afin que nous ne puissions pas simplement exécuter une commande xinput
en tant que commande udev
.
alors installez inotify-tools
:
Sudo apt install inotify-tools
puis écrivez un script et mettez-le où vous voulez:
#!/bin/bash
touch /tmp/my.udev
inotifywait -m -e attrib --format '%w%f' /tmp/my.udev 2>/dev/null | while read event
do
sleep 2
xinput --set-prop "Logitech USB Laser Mouse" "Device Accel Constant Deceleration" 1.75
done
Exécutez le dernier script après la connexion, vous pouvez le mettre dans des scripts de démarrage, ou même le fichier .profile
, à chaque fois que vous connectez votre souris, udev
va touch
le /tmp/my.udev
et inotifywait
déclenche le xinput
.
inotifywait
l'idée vient de ici