35

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.

4
  • 2
    what is the difference between those two?
    – Web-E
    Aug 7, 2012 at 12:39
  • 3
    @Web-E Acceleration is the rate at which the velocity changes with time Aug 7, 2012 at 12:40
  • @Web-E those are 2 different things. Aug 7, 2012 at 13:21
  • Please see @kellogs answer at the bottom of the answers on how to fix this in modern ubuntu (19.04)
    – Rqomey
    Mar 17, 2020 at 13:57

9 Answers 9

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.

11
  • 5
    You just can't set this below 1.0 which still is way too slow in my case.
    – pong
    Sep 28, 2013 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. Sep 15, 2015 at 19:03
  • 2
    Even better: xinput set-prop 'SynPS/2 Synaptics TouchPad' 'Device Accel Constant Deceleration' 2.5
    – Simon Thum
    Apr 29, 2016 at 11:20
  • 2
    does this setting stick after reboot ? if not, can we make it stick ? Jan 13, 2017 at 20:34
  • 7
    What to do if "Device Accel Constant Deceleration" isn't even an available option?
    – DaVince
    Apr 28, 2017 at 9:35
25

Just force the pointer to skip pixels, here's how:

First list input 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 is PixArt USB Optical Mouse. Next list its properties:

$ xinput list-props "PixArt USB Optical Mouse"
Device 'PixArt USB Optical Mouse':
        Device Enabled (140):   1
        Coordinate Transformation Matrix (142): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        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

By changing "Coordinate Transformation Matrix" property we can increase the pointer speed. Documentation says it is used to calculate a pointer movement. Quoting:

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, we want to increase X and Y values, leaving the rest unchanged. An example from my PC:


$ xinput set-prop "PixArt USB Optical Mouse" "Coordinate Transformation Matrix" 2.4 0 0 0 2.4 0 0 0 1

Play a bit with this until you're satisfied with the speed.

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

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

thanks go to Simon Thum from Xorg mailing list for giving a hint about the matrix.

UPD: note, some Windows games running in Wine may start exhibiting odd pointer behavior (e.g. it was noted that crosshair in Counter Strike 1.6 declines down until it stares the floor no matter how you move the mouse), in this case just reset X and Y of CTM back to 1 before running the game.

11
  • 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. Feb 21, 2015 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, 2015 at 18:02
  • 2
    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. May 6, 2015 at 7:20
  • 4
    The only right answer.
    – MichalH
    Mar 17, 2016 at 20:54
  • 2
    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, 2019 at 12:48
17

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.

5
  • 3
    The parameter specifically in question is resolution, which cannot be modified using xset.
    – Luke
    Mar 1, 2013 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, 2016 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, 2018 at 13:37
  • Well, see cgit.freedesktop.org/xorg/xserver/tree/dix/ptrveloc.c#n840 which is the current incarnation of cgit.freedesktop.org/xorg/xserver/tree/dix/…
    – Simon Thum
    Feb 11, 2018 at 18:34
  • I don't understand why everybody expect using mouse acceleration these days, and resolution is not easily accessible. The only reasonable setting when you want ho have high precision mouse is acceleration off, and decrease (flat) speed because modern laser mouses have crazy high DPI which is mapped by system to crazy high speed. But I don't want seed, I want precision - preferably sub-pixel. Oct 17, 2019 at 13:53
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

5
  • 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, 2012 at 13:56
  • Sorry for not checking your question properly. Updated.
    – Web-E
    Aug 7, 2012 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, 2012 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, 2015 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, 2015 at 15:17
3

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"

1
  • 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. May 6, 2015 at 7:16
2

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.

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

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.

0

If you have a logitech gaming mouse you can use piper or if you have a razer mouse you can use qrazercfg. these programs should already be in the repo (so sudo apt install qrazercfg, for example). When forcing a flat accel profile (no acceleration) the mouses set dpi will move at 1/2 the speed that it should, so I simply double the mouses dpi in these programs when I'm on GNU/Linux, and it feels correct.

However if you're using a mouse whos dpi can't be adjusted you simply have to live with half sens or butcher your ability to move in a 3d environment via transformation matrix adjustment.

You must log in to answer this question.

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