My mouse wheel scrolls too slowly, so I want to increase the number of lines for each scroll "tick". I read that this is possible by setting the Evdev Scrolling Distance with xinput, however, I am using libinput and I do not see anything related to scrolling distance.

Output of xinput list-props on my mouse:

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                                                  

How can I change my scrolling speed? I'm running on Arch Linux, Xfce 4.12.


There is no current api for changing the scroll speed for libinput devices, but this blog explains how mouse wheel clicks correspond to an angle of movement that you can change per mouse in systemd's udev configuration file /usr/lib/udev/hwdb.d/70-mouse.hwdb. Read the comments about MOUSE_WHEEL_CLICK_ANGLE at the start of this file.

To make a local change, create a new file


and add your overriding rule. For example if you have the ImExPS/2 mouse you can double the default 15 degree per click to 30 degrees with

# ImExPS/2 Logitech Wheel Mouse
mouse:ps2:*:name:ImExPS/2 Logitech Wheel Mouse:

Reload the udev database

 sudo udevadm hwdb --update
 sudo udevadm trigger /dev/input/event1
| improve this answer | |
  • 1
    There is no current api for changing the scroll speed for libinput devices: has this changed since then? – orschiro Jun 25 '17 at 10:51
  • 1
    @orschiro I get the impression that an api is not the intention. The hope would be that all devices get properly identified and configured in udev and there is then no need for user configuration. Check out all the libinput blogs. In particular 1.4 corresponds to finishing the initial TODO list for libinput. – meuh Jun 25 '17 at 12:23
  • 5
    in Ubuntu 16.10 the system udev conf is in /lib/udev/hwdb.d/70-mouse.hwdb – Jonas Berlin Jul 10 '17 at 10:48
  • 2
    anyway to do the same with a touchpad ? – Francesco Feb 5 '18 at 21:00
  • 1
    @daboross Yes. There are two aspects to consider: the above answer is just trying to normalize output from a device so that when a user does the same amount of movement on 2 different mice, for example, the system can calculate that they are equivalent, despite the reports from the hardware being different. The second aspect is then how much screeen movement this should represent, and that is determined by the complex amount of software facing the user, like the graphics toolkit, the windowing system, dpi of the screen and so on. – meuh Sep 16 '18 at 7:38

Libinput does not have any kind of "for every wheel scroll, do n lines/degrees" concept as a common party, the setting seems to be device-specific for now, as some Logitech has the parameter Evdev Scrolling Distance (278) that possibly came with the "old" Evdev driver includes.

This will be considered an regression for the user experience on my opinion, where at first, the inclusion of a configurable mouse scroll sensitivity into the common toolkit (libinput), was refused, it is now part of a pull request to be in future versions – possibly the function calls will have to be implemented in every Desktop Environment.

There are many possibilities to fix such issue, but depends on the Linux distribution.

  1. Be lucky and have driver-specific scroll sensitivity – check by doing a search for all inputs with scroll variables:

    xinput list | cut -f2 | cut -f2 -d'=' | \
                xargs -d $'\n' -I'{}' sh -c "xinput list-props '{}' | grep -iq scroll  &&  \
                                        (echo Listing dev id '{}'; xinput list-props '{}')"
    and setting the specific variable by xinput --set-prop <ID> <SUB-ID> <values>, where <ID> can be the device name and <SUB-ID> can be the setting name.

  2. A general fix is repatching the libinput code and rebuilding.

  3. You can try to rollback to udevadm/evdev interfaces with X11, and then try the X11 variable MOUSE_WHEEL_CLICK_ANGLE.

  4. From reference of last item, its possible to use imwheel to emulate mouse scroll clicks in multiply value.

    # 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. There are specific application settings for mouse wheel sensitivity, like Chrome SmoothScroll and Firefox SmoothWheel ref.

| improve this answer | |
  • 2
    Libinput transition has been a UX regression in many ways, almost all of which come down to user control of their hardware's behavior... Which is unfortunate given the platform this is occurring on. – Douglas Gaskell Jan 14 at 21:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.