30

Is there way to increase the mouse speed in KDE4? I don't want any pointer acceleration, it's just the mouse speed that I want to change.

Edit: Unfortunately, editing the xorg.conf is not an option for me, because I want the users to be able to configure the mouse speed themselves and it is company policy do deny users permission to change the xorg.conf.

  • 2
    what is the difference between those two? – Web-E Aug 7 '12 at 12:39
  • 3
    @Web-E Acceleration is the rate at which the velocity changes with time – Oleh Prypin Aug 7 '12 at 12:40
  • @Web-E those are 2 different things. – Bruno Pereira Aug 7 '12 at 13:21
35

KDE has not built this into its control center yet, but you can use xinput from the command line. First, run xinput list to find the device number of your mouse:

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=10   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=9    [slave  keyboard (3)]

On my laptop, the device id I want is 10 (SynPS/2 Synaptics TouchPad). On your system, you will have to decide which device is the correct one. Next, run xinput list-props <your device id> to see the current settings for that device:

$ xinput list-props 10
Device 'SynPS/2 Synaptics TouchPad':
    Device Enabled (144):   1
    Device Accel Profile (266):     1
    Device Accel Constant Deceleration (267):       2.500000
    Device Accel Adaptive Deceleration (268):       1.000000
    Device Accel Velocity Scaling (269):    12.500000
  [ many more settings omitted ]

The property you are interested in is "Device Accel Constant Deceleration (267)". To slow your mouse down, the value must be increased by running xinput set-prop <your device id> <property id> <value>:

$ xinput set-prop 10 267 5.0

In this example, the value is increased from 2.5 to 5.0 and the mouse moves at half-speed.

  • 5
    You just can't set this below 1.0 which still is way too slow in my case. – pong Sep 28 '13 at 9:00
  • 2
    No problem with list-props, but set-prop results in:            X Error of failed request: BadAccess (attempt to access private resource denied)             X.Org X Server 1.16.0, running Unity desktop.   For X.Org X Server 1.9.3.90 the mouse’s id is 6 and the property number 233. – Incnis Mrsi Sep 15 '15 at 19:03
  • 2
    Even better: xinput set-prop 'SynPS/2 Synaptics TouchPad' 'Device Accel Constant Deceleration' 2.5 – Simon Thum Apr 29 '16 at 11:20
  • 2
    does this setting stick after reboot ? if not, can we make it stick ? – Ciprian Tomoiagă Jan 13 '17 at 20:34
  • 3
    What to do if "Device Accel Constant Deceleration" isn't even an available option? – DaVince Apr 28 '17 at 9:35
14

The terminology of the mouse settings in Linux (Xorg) are slightly different from the windows world.

There are three important settings:

  • threshold - The trigger for acceleration
  • acceleration - The speed after the threshold has been reached
  • resolution - The "speed"

These settings are independent of the Desktop Environment. They are pure X settings. So this always works. See also the mouse section of xset for a truly independent way to change these settings.

The Unity settings manager seems to rename the threshold to sensitivity. But as you are talking about KDE, that should not matter.

Only threshold and acceleration can be changed by the user. The resolution is a setting to be made in xorg.conf. But usually, the first two settings are enough for most users.

Linuxreviews has an explanation of these values.

Basically: The mouse moves at a base speed (modifiable using resolution). If the mouse moves n pixels (n = threshold) in a short time, then the base speed is multiplied with acceleration. As an example, if you want to disable acceleration completely, you can set the threshold to 0. In words: If the mouse moves 0 pixels in a short time, I'll use base-speed * acceleration. So a threshold of 0 gives you constant mouse-speed.

So, these two values give you a very fine grained control over the speed.

  • 1
    The parameter specifically in question is resolution, which cannot be modified using xset. – Luke Mar 1 '13 at 21:52
  • To clarify, threshold = 0 gives you polynomial acceleration in X, which is not at all like constant speed. Use the solution above. – Simon Thum Apr 29 '16 at 11:16
  • @SimonThum is this really the case? I also thought the acceleration is supposed to be linear (despite a transition between base speed to final speed = base speed * acceleration). I have read this a lot of times in comment sections. Do you have sources that support your claim? – daniel451 Feb 11 '18 at 13:37
13

The steps to increase mouse sensitivity:

First list all the devices:

$ xinput list                                                               
⎡ Virtual core pointer                          id=2    [master pointer  (3)]                                 
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]                                 
⎜   ↳ PixArt USB Optical Mouse                  id=10   [slave  pointer  (2)]                                 
⎜   ↳ ETPS/2 Elantech Touchpad                  id=15   [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)]                                 
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]                                 
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]                                 
    ↳ USB2.0 UVC 2M WebCam                      id=9    [slave  keyboard (3)]                                 
    ↳ Asus Laptop extra buttons                 id=13   [slave  keyboard (3)]                                 
    ↳ AT Translated Set 2 keyboard              id=14   [slave  keyboard (3)]                                 
    ↳   USB Keyboard                            id=11   [slave  keyboard (3)]                                 
    ↳   USB Keyboard                            id=12   [slave  keyboard (3)]   

In the example we see the mouse id is 10. Next list its properties:

$ xinput list-props 10
Device 'PixArt USB Optical Mouse':
        Device Enabled (140):   1
        Coordinate Transformation Matrix (142): 10.400000, 0.000000, 0.000000, 0.000000, 10.400000, 0.000000, 0.000000, 0.000000, 10.400000
        Device Accel Profile (265):     0
        Device Accel Constant Deceleration (266):       1.000000
        Device Accel Adaptive Deceleration (267):       1.000000
        Device Accel Velocity Scaling (268):    10.000000
        Device Product ID (260):        2362, 9488
        Device Node (261):      "/dev/input/event5"
        Evdev Axis Inversion (269):     0, 0
        Evdev Axes Swap (271):  0
        Axis Labels (272):      "Rel X" (150), "Rel Y" (151), "Rel Vert Wheel" (264)
        Button Labels (273):    "Button Left" (143), "Button Middle" (144), "Button Right" (145), "Button Wheel Up" (146), "Button Wheel Down" (147), "Button Horiz Wheel Left" (148), "Button Horiz Wheel Right" (149)
        Evdev Middle Button Emulation (274):    0
        Evdev Middle Button Timeout (275):      50
        Evdev Third Button Emulation (276):     0
        Evdev Third Button Emulation Timeout (277):     1000
        Evdev Third Button Emulation Button (278):      3
        Evdev Third Button Emulation Threshold (279):   20
        Evdev Wheel Emulation (280):    0
        Evdev Wheel Emulation Axes (281):       0, 0, 4, 5
        Evdev Wheel Emulation Inertia (282):    10
        Evdev Wheel Emulation Timeout (283):    200
        Evdev Wheel Emulation Button (284):     4
        Evdev Drag Lock Buttons (285):  0

The «Coordinate Transformation Matrix» is exactly what we want. Remember its №142.

By changing this property we can increase the pointer speed. These values actually is a transformation matrix that used to calculate a pointer movement. From the link:

By default, the CTM for every input device in X is the identity matrix. As an example, lets say you touch a touchscreen at point (400, 197) on the screen:

⎡ 1 0 0 ⎤   ⎡ 400 ⎤   ⎡ 400 ⎤
⎜ 0 1 0 ⎥ · ⎜ 197 ⎥ = ⎜ 197 ⎥
⎣ 0 0 1 ⎦   ⎣  1  ⎦   ⎣  1  ⎦

The X and Y coordinates of the device event are input in the second matrix of the calculation. The result of the calculation is where the X and Y coordinates of the event are mapped to the screen. As shown, the identity matrix maps the device coordinates to the screen coordinates without any changes.

So, what we want to do with the matrix — is to set the values that according to x and y to any other particular value, and this would change the pointer speed. An example from my PC:

$ xinput set-prop 10 142 2.400000, 0.000000, 0.000000, 0.000000, 2.400000, 0.000000, 0.000000, 0.000000, 1.000000

It is xinput set-prop <device-id> <property-number> <property-values>. Play a bit with this until you find the appropriate ones. Note: do not change the last value of the matrix. That was my error when I tried it to get work — in this case you just won't see any difference.

At least recent versions of xinput allow specifying devices and options by name, so this example can also work:

xinput set-prop 'PixArt USB Optical Mouse' 'Coordinate Transformation Matrix' 1.2 0 0 0 1.2 0 0 0 1

These changes are active only for the current session, so once you've chosen a good sensitivity, you should apply it permanently by adding it to xorg.conf (or creating a file such as /etc/X11/xorg.conf.d/40-mouse-sensitivity.conf):

Section "InputClass"
    Identifier "PixArt USB Optical Mouse"
    MatchIsPointer "Yes"
    Option "TransformationMatrix" "1.2 0 0 0 1.2 0 0 0 1"
EndSection

If you are not sure whether this works, change this to some big value like 5.0, save the file and reboot.

Acknowledgements: I am grateful to Simon Thum from xorg mailing list, he was the one who gave the hint about the matrix.

  • Best to leave Coordinate Transformation Matrix to its original purpose, "transforming coordinates" for example in case of screen orientation or working with touch screens etc. Way simpler is to adjust Device Accel Constant Deceleration for example. – Kari Kääriäinen Feb 21 '15 at 17:10
  • 2
    @KariKääriäinen like the others confused. So called «pointer acceleration» have nothing to do with mouse sensitivity, it just allows to move a pointer as further as faster you move it. That is, if you move mouse the same distance but with different speeds, the pointer would be moved to a different distance. That's pretty uncomfortable, you have to slow down every time to hit some point. But changing the transformation matrix allow to you in some sense to emulate an increased mouse sensitivity. And btw, specifically the deceleration slows the speed. – Hi-Angel Feb 21 '15 at 18:02
  • 1
    Interesting, but this method has a drawback: when using this, some pixels are just not reachable. To make this more obvious I tried xinput set-prop 11 138 40, 0, 0, 0, 40, 0, 0, 0, 1 and confirmed that the mouse only reached coordinates spaced 40 pixels apart. Real-world use would probably only use 2 or 4 instead of 40, yet still miss pixels. I settled for the other method (use acceleration feature as constant speed gain) because it does not have this drawback. – Stéphane Gourichon May 6 '15 at 7:20
  • 4
    The only right answer. – MichalH Mar 17 '16 at 20:54
  • 1
    As of 2019 there is no more 'Device Accel Constant Deceleration ' property, at least not in my case. The transformation matrix is still there and can be acted upon it with the desired effect, although what @StéphaneGourichon points out above makes perfect sense. Ah well, linux and its oddities... – kellogs Mar 11 at 12:48
4

Though I am not very clear on the question here is my suggestion.

For KDE

A quick search reveals there is no such option to increase mouse speed under threshold value.

Some users suggest changing mouse resolution in /etc/X11/xorg.conf file (mouse InputDevice section) like

Option "Resolution" "400"

But most user said it didn't work.

You can increase the threshold value so that the acceleration doesn't start until the threshold value reaches. (The setting is in Mouse> Advanced Settings)

A related post can be found here.

For Unity

  • Press Super key (windows key).
  • Search for mouse.
  • Select Mouse And Touchpad
  • Now change the sensitivity to higher value. Possibly this is what you want.

    mouse settings

  • 2
    Okay, this is exactly the setting I am looking for but your screenshot is taken from Gnome and my question is concerning KDE4. – André Aug 7 '12 at 13:56
  • Sorry for not checking your question properly. Updated. – Web-E Aug 7 '12 at 14:23
  • Wow, thanks! It seems you have put a lot of effort into this. Unfortunately, editing the xorg.conf is not an option, because I want the users to be able to configure the "Resolution"-setting themselves and it is company policy do deny users permission to change the xorg.conf. I will add this restriction to the original comment but upvote your comment nevertheless. – André Aug 8 '12 at 7:49
  • 3
    Omg. An ability to set the «pointer resolution» via only a config file (i.e. not interactively) should be considered as a bug. How many times a user should restart XServer to find an apropriate resolution? Five? Ten? It is as funny as sad… – Hi-Angel Jan 5 '15 at 15:00
  • I just installed the unity-control-center, set the mouse sensitivity to high, and it didn't worked. – Hi-Angel Jan 5 '15 at 15:17
2

Given what the above post had said, I found this work around.

The fact is that the mouse move at a constant multiple of base speed, where the multiple is set by the "acceleration" parameter.

However, this multiplier is applied only after your mouse move faster than a "threshold" speed, specified by the "sensitivity" parameter.

This creates the awkward feel of "acceleration" where if you start to move your mouse fast, it begins to jump around uncontrollably as it moves past the threshold speed.

So what you can do is setting the "sensitivity" to 0, thus making the threshold to be 0. What this does is your acceleration is applied all the time to your mouse speed.

Then your mouse speed is just a multiple of your "acceleration" parameter, and since it is a linear multiplication, you should have a constant speed proportional to the acceleration parameter. Without the feeling of acceleration and jumps.

So in short: Set sensitivity to 0. Adjust the parameter "acceleration" as if it is "speed"

  • This answer is the generic version of lolmaus's KDE-oriented answer. I did just this, although I first tried with threshold 1 pixel since other answers mentioned 0 as "disable". Anyway I could test it immediately by running this: xset mouse 4 0 and the like, and finally settled for xset mouse 2 0. This is a kind of a hack (using accel feature for plain speed) but works, though I feel on use that there is still some threshold applied. – Stéphane Gourichon May 6 '15 at 7:16
1

Personally I find that precise pointer motion is better for overall desktop experience, so this setting is important for me too. I was always wondering why OS UXP designers not only make acceleration the default, but also tend to remove control from user interface.

You might find that the acceleration, which supposed to get you more comfortable UXP is actually undesirable in some situations, as you could miss the right UI elements on screen when moving mouse fast, or just need precision for some CAD application. Specifically, it's difficult to get in control of slider and spinner UI elements or move a shape on some designer's UI. Also, with acceleration, it's difficult to position the mouse cursor in a text editor precisely as you copy-paste a region of text. Some might argue that when you need to get precision you just slow down, but what if you don't want to slow down, and still get precision?

You can check if there is acceleration or not:

(1). Move your mouse pointer to the right of the screen, notice the physical position of the device on the table.

(2). Moderately move the mouse to the left a little bit, so the cursor travels around the center of screen, and then very slowly return the physical device to it's original position.

(3). Repeat steps (1) and (2) multiple times.

If there is no acceleration, the cursor should arrive to the right of screen all of the time. If there is acceleration, the pointer would move more and more to the left, so after 3 or 4 times it would just hit the left of the screen, so you need to fix it.

No acceleration means you need to adjust the Device Accel Velocity Scaling parameter.

It will slow down mouse motion in general, so you need to compensate for that with constant speed adjustment. This can be done with decreasing the Device Accel Constant Deceleration parameter.

Here is what worked for me:

  1. Find the mouse device id:

$ xinput list ... ⎜ ↳ PixArt USB Optical Mouse id=10 [slave pointer (2)] ...

The device id = 10

  1. List properties of the device

$ xinput list-props 10 ... Device Accel Constant Deceleration (276): 1.000000 ... Device Accel Velocity Scaling (278): 10.000000 ...

  1. Reduce the scaling parameter to its minimum, this should give one-to one mouse motion with respect to actual physical movement. Whether you set it to something like 0.1, 0.001 or 1e-30 does not matter, as it's much lower acceleration than the default of 10.0. You can't set it to zero, as it's considered an error.

$ xinput set-prop 10 278 1e-10

  1. (optional) Now you might notice that despite being precise, speed have been decreased in general, so you might need to play with the Constant Deceleration parameter to restore comfortable speed. In my case a comfortable setting was 0.7 which sped up the pointer by half, made mouse motion feeling like about the same speed that was before, but without acceleration:

$ xinput set-prop 10 276 0.7

If you want it faster, set a lower value here, like 0.5, 0.4 etc. If you want it slower, set it to something like 1.0, 1.2, or even 1.5

1

The answers above are now outdated. What has worked for me the most neatly is the last section of this wiki entry:

with libinput

Alternatively, since libinput-1.1.0-1 and xf86-input-libinput-0.15.0-1 you can use a flat acceleration profile. To enable it create the following file:

/etc/X11/xorg.conf.d/50-mouse-acceleration.conf

Section "InputClass" Identifier "My Mouse" Driver "libinput" MatchIsPointer "yes" Option "AccelProfile" "flat" Option "AccelSpeed" "0" EndSection

and restart X.

Another option is this command:

$ xinput --set-prop 'libinput Accel Profile Enabled' 0, 1

Which doesn't need an X restart, but isn't persistent. Although it can be set up to run automatically with Autostarting.

0

How to adjust mouse speed in KDE
  • without enabling mouse acceleration
  • and only using the settigns dialog (no console, no config files)

This is a colloquial summary of exhuma's answer, don't forget to upvote it.

In KDE, mouse acceleration is not logarithmic. That is, it has two constant mouse speeds: non-accelerated and accelerated. It switches from one to another when you jerk the mouse quickly enough.

The first speed is non-configurable (at least, from GUI). The second speed is configurable.

The solution is:

  1. Set "Pointer threshold" to 0. As a result, the second speed will be applied at all times.
  2. Adjust "Pointer acceleration" to make that speed bigger or smaller.

You will end up with a constant, non-dynamic cursor speed adjusted to your liking.

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.