Various Logitech mice implement hi-res scrolling. This means instead of having the content move for 3 lines for each scroll movement, you can scroll per-pixel using many more precise scroll events sent by the mouse. This gives a precise and smooth experience while scrolling.
Enabling the feature
First off, we need to enable this feature. Solaar is able to do so when using the Logitech USB receiver. Install it as follows:
cd /to a directory to store the Solaar application/
git clone https://github.com/pwr-Solaar/Solaar.git
cd Solaar
sudo bash -c 'umask 022 ; pip3 install .'
sudo cp rules.d/42-logitech-unify-permissions.rules /etc/udev/rules.d/
cp share/autostart/solaar.desktop ~/.config/autostart/
If pip isn’t installed, install it using
sudo apt install -y python3-pip
.
To update, run a git pull in theSolaar
directory, and run the last 3 lines again.
This will install Solaar, give regular users write access to Logitech HID devices, and ensure Solaar autostarts on login so the feature is enabled at boot.
Run solaar
and enable Wheel Resolution.
Scroll resolution
Now scrolling will be awfully fast, so we need to tell each scroll event matches 1 pixel instead of the default 15. Horizontal scrolling still uses an ordinary wheel click, so we need to make sure that wheel behaves as before.
Lookup the name of your mouse using xinput
. This will for example be Logitech MX Master 3
for a USB connected MX Master 3 or MX Master 3 Mouse
if the same device is connected through bluetooth. Since more devices may support this, for example the Logitech MX Anywhere 3
, we use a string also matching that device name.
Create a new udev hwdb file called /etc/udev/hwdb.d/71-logitech-mice.hwdb
and enter the following information:
mouse:*:name:*MX * 3*:
MOUSE_WHEEL_CLICK_ANGLE=1
MOUSE_WHEEL_CLICK_COUNT=360
MOUSE_WHEEL_CLICK_ANGLE_HORIZONTAL=26
MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL=14
This will match all MX Master 3 or MX Anywhere 3 mice connected through USB and/or Bluetooth.
Reload these settings using the following commands to give them a try.
sudo systemd-hwdb update
sudo udevadm trigger /dev/input/event*
If the settings seem to have no effect, make sure the device name in
71-logitech-mice.hwdb
is correct.
Enjoy your new smooth scrolling!
Virtual Machines
Scrolling in a guest in Virtualbox will work much worse now since xinput
s Motion events won’t reach the guest. So you’ll need to scroll quite fast for the ButtonPress events to be generated and then passed to the guest.
There doesn’t seem to be a way to fix this, so we need to disable XInput 2 support for the Virtualbox guest process using QT_XCB_NO_XI2=1
. We can’t do this through the interface, so we need to start a guest using:
QT_XCB_NO_XI2=1 VBoxManage startvm <Guest VM name or UUID>
And now we have regular good ol' scrolling in that virtual machine.