web-dev-qa-db-fra.com

Changer la vitesse de défilement avec libinput

Ma molette de la souris défile trop lentement, donc je veux augmenter le nombre de lignes pour chaque "tick" de défilement. J'ai lu que cela est possible en définissant le Evdev Scrolling Distance avec xinput, cependant, j'utilise libinput et je ne vois rien lié à la distance de défilement.

Sortie de xinput list-props sur ma souris:

Device Enabled (139):   1                                                                                                       
Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Accel Speed (275): -0.640000                                                                                           
libinput Accel Speed Default (276): 0.000000                                                                                    
libinput Accel Profiles Available (277):    1, 1                                                                                
libinput Accel Profile Enabled (278):   1, 0                                                                                    
libinput Accel Profile Enabled Default (279):   1, 0                                                                            
libinput Natural Scrolling Enabled (280):   0                                                                                   
libinput Natural Scrolling Enabled Default (281):   0                                                                           
libinput Send Events Modes Available (259): 1, 0                                                                                
libinput Send Events Mode Enabled (260):    0, 0                                                                                
libinput Send Events Mode Enabled Default (261):    0, 0                                                                        
libinput Left Handed Enabled (282): 0                                                                                           
libinput Left Handed Enabled Default (283): 0                                                                                   
libinput Scroll Methods Available (284):    0, 0, 1                                                                             
libinput Scroll Method Enabled (285):   0, 0, 0                                                                                 
libinput Scroll Method Enabled Default (286):   0, 0, 0                                                                         
libinput Button Scrolling Button (287): 2                                                                                       
libinput Button Scrolling Button Default (288): 274                                                                             
libinput Middle Emulation Enabled (289):    0                                                                                   
libinput Middle Emulation Enabled Default (290):    0                                                                           
Device Node (262):  "/dev/input/event1"                                                                                         
Device Product ID (263):    1133, 50487                                                                                         
libinput Drag Lock Buttons (291):   <no items>                                                                                  
libinput Horizonal Scroll Enabled (264):    1                                                  

Comment puis-je changer ma vitesse de défilement? Je fonctionne sur Arch Linux, Xfce 4.12.

18
Andrew Sun

Il n'y a pas d'api actuelle pour changer la vitesse de défilement des périphériques libinput, mais ce blog explique comment les clics de la molette de la souris correspondent à un angle de mouvement que vous pouvez changer par souris dans le fichier de configuration udev de systemd /usr/lib/udev/hwdb.d/70-mouse.hwdb. Lisez les commentaires sur MOUSE_WHEEL_CLICK_ANGLE au début de ce fichier.

Pour effectuer une modification locale, créez un nouveau fichier

 /etc/udev/hwdb.d/71-mouse-local.hwdb

et ajoutez votre règle primordiale. Par exemple, si vous avez la souris ImExPS/2, vous pouvez doubler la valeur par défaut de 15 degrés par clic à 30 degrés avec

# ImExPS/2 Logitech Wheel Mouse
mouse:ps2:*:name:ImExPS/2 Logitech Wheel Mouse:
 MOUSE_DPI=400@250
 MOUSE_WHEEL_CLICK_ANGLE=30

Recharger la base de données udev

 Sudo udevadm hwdb --update
 Sudo udevadm trigger /dev/input/event1
5
meuh

Libinput n'a aucun type de concept "pour chaque rouleau de roue, faites n lignes/degrés" en tant que partie commune, le paramètre semble être spécifique au périphérique pour le moment, car certains Logitech ont le paramètre Evdev Scrolling Distance (278) qui était éventuellement fourni avec le "vieux" pilote Evdev inclus.

Cela sera considéré comme une régression pour l'expérience utilisateur à mon avis, où au début, l'inclusion d'une sensibilité de défilement de la souris configurable dans la boîte à outils commune (libinput), a été refusée, elle fait maintenant partie d'un pull request pour être dans les futures versions - éventuellement les appels de fonction devront être implémentés dans chaque environnement de bureau.

Il existe de nombreuses possibilités pour résoudre ce problème, mais cela dépend de la distribution Linux.

  1. Soyez chanceux et ayez une sensibilité de défilement spécifique au pilote - vérifiez en faisant une recherche pour toutes les entrées avec des variables de défilement:

    liste xinput | coupe -f2 | cut -f2 -d '=' |\
     xargs -d $ '\ n' -I '{}' sh -c "xinput list-props '{}' | grep -iq scroll &&\
     (echo Listing dev dev id ' {} '; xinput list-props' {} ') "
    et en définissant la variable spécifique par xinput --set-prop <ID><SUB-ID><values>, où <ID> peut être le nom du périphérique et <SUB-ID> peut être le nom du paramètre.
  2. Un correctif général est repatching le code libinput et rebuilding .

  3. Vous pouvez essayer de revenir aux interfaces udevadm/evdev avec X11, puis essayez la variable X11 MOUSE_WHEEL_CLICK_ANGLE .

  4. De référence du dernier élément , il est possible d'utiliser imwheel pour émuler les clics de défilement de la souris en valeur multipliée.

    # Should use imwheel --kill --buttons "4 5" to restart imwheel,
    # if the mouse has back/forward buttons, otherwhise imwheel --kill is enough.
    # imwheel must be set to autostart in your DE tools.
    #Edit ~/.imwheelrc to include, where '3' is a multiplier
    ".*"
    None,      Up,   Button4, 3
    None,      Down, Button5, 3
    Control_L, Up,   Control_L|Button4
    Control_L, Down, Control_L|Button5
    Shift_L,   Up,   Shift_L|Button4
    Shift_L,   Down, Shift_L|Button5
    
  5. Il existe des paramètres d'application spécifiques pour la sensibilité de la molette de la souris, comme Chrome SmoothScroll et Firefox SmoothWheelref .