I have a Microsoft wireless USB mouse whose scroll wheel seems to have absolutely no acceleration whatsoever on Linux. On Windows and OSX, the faster I scroll, the faster the page scrolls, and vice versa.

I managed to use xinput to change the mouse sensitivity settings following this guide, and it worked great. But when I follow the same steps to change the mouse wheel settings, nothing seems to change.

Here is the output of $ xinput --list-props on my device:

Device 'Microsoft Microsoft® 2.4GHz Transceiver v8.0':
    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 (259): 0
    Device Accel Constant Deceleration (260):   1.000000
    Device Accel Adaptive Deceleration (261):   1.500000
    Device Accel Velocity Scaling (262):    0.125000
    Device Product ID (250):    1118, 1970
    Device Node (251):  "/dev/input/event2"
    Evdev Axis Inversion (263): 0, 0
    Evdev Axes Swap (265):  0
    Axis Labels (266):  "Rel X" (143), "Rel Y" (144), "Rel Horiz Wheel" (256), "Rel Dial" (257), "Rel Vert Wheel" (258)
    Button Labels (267):    "Button Left" (136), "Button Middle" (137), "Button Right" (138), "Button Wheel Up" (139), "Button Wheel Down" (140), "Button Horiz Wheel Left" (141), "Button Horiz Wheel Right" (142), "Button Side" (254), "Button Extra" (255), "Button Unknown" (253), "Button Unknown" (253), "Button Unknown" (253), "Button Unknown" (253)
    Evdev Middle Button Emulation (268):    0
    Evdev Middle Button Timeout (269):  50
    Evdev Third Button Emulation (270): 0
    Evdev Third Button Emulation Timeout (271): 1000
    Evdev Third Button Emulation Button (272):  3
    Evdev Third Button Emulation Threshold (273):   20a
    Evdev Wheel Emulation (274):    0
    Evdev Wheel Emulation Axes (275):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (276):    10
    Evdev Wheel Emulation Timeout (277):    200
    Evdev Wheel Emulation Button (278): 4
    Evdev Drag Lock Buttons (279):  0

I've modified properties 274 to 278, but no changes resulted.

My distribution is Debian Linux, desktop environment is Xfce, and computer is a Lenovo Thinkpad X201, though this problem seems to only be specific to this mouse rather than any of those things. Am I missing something via the xinput method, or should I try something else entirely?

edit: I should specify that I am trying to increase the speed of the mouse wheel, preferably via acceleration, as scrolling is painfully slow at the moment.

  • there you need to do whats belowe
    – AlexPixel
    Commented Nov 23, 2021 at 18:13

5 Answers 5


The mouse scroll wheel actually produces button events for each "notch" you move the wheel. There's no good way to accelerate that on the driver level (you'd have to produce fake events with different temporal spacing than the real events), and in fact I've never heard of the evdev driver doing that.

All the Wheel Emulation properties are, as the name hints, for emulation, that is, not a real physical scroll wheel. As the evdev man-page says:

Wheel emulation means emulating button press/release events when the mouse is moved while a specific real button is pressed.

The Inertia parameter is meant to control when the emulation kicks in, so little mouse movements don't accidentally start emulation. And all parameters won't be effective, anyway, as long as the main Wheel Emulation property is zero, and emulation is disabled.

On the other hand, it's easy to accelerate scrolling in applications: Just increase the amount the page scrolled if there are wheel events during a longer period.

So if you want behaviour like on Windows or OSX, you need to change the application.


I also wanted to increase the mouse scroll wheel acceleration, and not just the absolute speed. This is a feature in MacOSX but not builtin for Xorg (also Wayland) yet.

I implemented such a feature in user space here (mouse-scroll-wheel-acceleration-userspace). This will increase the scroll speed, or accelerate the scroll speed. You would just run this in the background, with your preferred options. The code is quite simple Python code, and should be easy to modify as well.


There is https://github.com/albertz/mouse-scroll-wheel-acceleration-userspace - "Mouse scroll wheel acceleration, implemented in user space".

1) install imwheel
sudo apt install imwheel
  • maintained by Ubuntu developers and is used for:
    Program to support non-standard buttons on mice in Linux [meaning your wheel]
2) create a file for your specifications
touch /home/$USER/.imwheelrc
  • a file with rc suffix is commonly used for any file that contains startup information for a program, in this case, .imwheelrc
3) paste this text in your .imwheelrc file
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
  • in None, Up,Button4, 3 the number 3 is the speed, quantity for scrolling UP
  • in None, Down,Button5, 3 the number 3 is the speed, quantity for scrolling DOWN
4) start imwheel with:
imwheel --kill --buttons "4 5"
  • --kill argument is to kill any imwheel that started when you first installed. Anytime that you make changes to your .imwheelrc file, use this command.
  • --buttons "4 5" argument makes imwheel to ignore the back and forward buttons, otherwise they will NOT work

I also tried xinput set-prop 13 276 40 (well, my inertia was 278!), thinking that increasing the inertia would give it more "glide", but it didn't work. In my case, I think that my mouse may just be worn out, as looking at events using xkbevd shows not as many events coming as I would expect.

Mice are $8 now... time to order a few.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .