Improving the KitKat mouse on Linux

In May 2021, I bought a KitKat mouse. I think Nestlé must have had some promotion at some point, during which you could get a KitKat-branded computer mouse, because they are very affordable and easy to come by on eBay.

Mine didn’t come with anything other than the mouse itself, but we can see from the below photo I stole from ItsMyHobby‘s eBay listing that it’s listed as compatible with DOS through to Windows 98.

PI 701 KitKat Computer Mouse
Despite reading “PS/2 Version”, I’ve been unable to find any evidence of other versions existing

Since it’s just an ordinary PS/2 mouse which should work on any operating system you throw at it, we can deduce it (or more specifically, its instructions) must predate Windows 2000, which released June 2000.

So, why would anyone want to use such an ancient piece of kit? Well, if you tire of optical mice and would rather regress to the days of having a ball in your mouse, this is one of the most affordable options (within the UK) for doing so.

I’ll be showing you some Linux commands which improved my experience with the mouse. You can add these to your system’s Startup Applications preferences. I chose to add a delay of 1 second to ensure they only apply after the user session has finished initialising.

Editing a startup command in "Startup Applications Preferences".

The commands

Because my computer’s PS/2 port has failed, possibly due to the KitKat mouse, they use the input name my USB to PS/2 adapter has chosen. If you are unsure what your KitKat mouse’s name is on your system, run the xinput command for a list of pointer and keyboard devices.

Adjust speed

The first command sets the coordinate transformation matrix. This is because the maximum mouse speed the system lets you define is still a bit slow when using the KitKat mouse on a 1080p monitor. Simply change the 1.75 values as desired. For more details, you can see the InputCoordinateTransformation page.

xinput –set-prop “Generic USB K/B Mouse” “Coordinate Transformation Matrix” 1.75 0 0 0 1.75 0 0 0 1

There are a couple caveats to this:

  1. We now have less than pixel-perfect accuracy. What I mean by this is that when moving the mouse a little bit, the cursor may move by two pixels at once. This isn’t really a problem, in my experience.
  2. Most software that catches the cursor such as first-person games behaves incorrectly. This setup is completely unusable for such software.

Enable scrolling

The next command enables scrolling by holding the left and right mouse buttons down at the same time. As the KitKat mouse lacks a scroll wheel, enabling this functionality can be useful for scrolling on webpages, zooming in applications, etc.

xinput –set-prop “Generic USB K/B Mouse” “libinput Scroll Method Enabled” 0, 0, 1

There also exists the “Emulate middle button through simultaneous left and right click” mouse settings. Checking this will also let you middle-click by clicking both buttons at the same time, and it works fine in conjunction with the scrolling option. This can alternatively be set by changing Middle Emulation Enabled to 1.

Mouse Preferences: Emulate middle button through simultaneous left and right click

Change scroll direction

The final property I set is the Natural Scrolling one. This changes the scroll direction when holding down both mouse buttons and moving the mouse to be the same as you’d find on a touchscreen.

xinput –set-prop “Generic USB K/B Mouse” “libinput Natural Scrolling Enabled” 1

To see what other options are available, you can enter xinput list-props “Generic USB K/B Mouse”, again substituting Generic USB K/B Mouse for your own device name.

Hopefully this has been useful, not only for KitKat mouse users but also for other mice of a similar vintage. As my own KitKat mouse’s left button is no longer working reliably, I’ve decided it’s just about time to retire it, hence why I wanted to get this guide out before I forget all about it.

Posted on