How to fix microsoft mouse scrolling speed on ubuntu
Open a prompt
List your devices, pay attention to the id from the device you want to fix, if there are 2 of them, it's ok.
$ xinput list
Mine was 9 and 10
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Microsoft Microsoft® 2.4GHz Transceiver v8.0 id=9 [slave pointer (2)]
⎜ ↳ Microsoft Microsoft® 2.4GHz Transceiver v8.0 id=10 [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)]
↳ Power Button id=7 [slave keyboard (3)]
↳ Microsoft Microsoft® 2.4GHz Transceiver v8.0 id=8 [slave keyboard (3)]
Now do this, x
being your id
$ xinput list-props x | grep 'Scrolling Distance'
Evdev Scrolling Distance (255): 1, 1, 1
Finally, the trick is to find your ideal values, mine were 10, 10, 10
$ xinput set-prop x 'Evdev Scrolling Distance' 10, 10, 10
To permanently set the change (source):
A hidden file in your directory is ".profile" (Ctrl+H to see hidden files) Double click on it and open it. Copy paste the previous command at the end. That's it!
P.S. to apply the same command for all users you can edit the file /etc/profile (not an hidden file).
You are now good to go!
It's a hack, but un-/re-pluggin the USB transceiver lets Ubuntu properly set the resolution and you get a very reasonable scroll speed. I've been using this trick on every Ubuntu release for the last few years. I rarely reboot my machine so it's the easiest solution for me :)
Perhaps someone can explain why this works.
A solution that works for me for the wireless mouse scroll speed problem:
The order when enabling Linux modules is very important.
Add a file named /etc/modprobe.d/mshid.conf
containing:
install hid-generic /sbin/modprobe hid ; /sbin/modprobe usbhid ; /sbin/modprobe -i hid-generic ; true
This ensures the correct loading order and the scroll speed is then normal. This is what happens in the background when the system is on, when removing and adding back the transceiver. This works in other distributions than Ubuntu. A reboot is required for this to work.