Bug 2927

Summary: RFE: Add a mouse speed setting to X
Product: xorg Reporter: Jeff <jesterr>
Component: Input/MouseAssignee: Xorg Project Team <xorg-team>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: enhancement    
Priority: high CC: ewilhelm, gsr.bugs, heilong, krishnoid, mlists, software, wschlich
Version: 6.8.2   
Hardware: x86 (IA32)   
OS: Linux (All)   
i915 platform: i915 features:
Bug Depends on: 8583    
Bug Blocks:    
Description Flags
Patch implementing a mouse speed setting on a per-mouse basis none

Description Jeff 2005-04-07 16:37:44 UTC
Like many users out there, I like my mouse pointer to be very fluid and precise
but also I want it to be able to move very fast.  Unfortunately, if I want my
pointer to go fast, I need to change the acceleration value, and that causes it
to be jumpy, unprecise.  Although it IS possible to have it precise,
acceleration has to be set very low, and therefore speed gets very low too.

What I am hereby requesting, and I think X needs this very very badly, is simply
a "speed" setting for the mouse in X.  I want to be able to set low or no
acceleration at all, and still be able to set my speed to any value I want. 
That would give it a great, fluid feel, and remove the jumpyness effect.

I'm aware that there's a good change it's already in the TODO list, I just
wanted to point out the issue if it's not :)  Thank you
Comment 1 Anders Storsveen 2005-10-12 14:49:44 UTC
I think the whole mouse acceleration thing should be redone. I think it is
impossible to turn of acceleration completely, I'm not sure, but I think it
is... I'm having troubles finding it in the xorg codebase thoguh ... :/
Comment 2 Krishna Sethuraman 2005-12-24 05:47:09 UTC
Also ref bug 138 and bug 4490 . 
Comment 3 Adam Jackson 2006-04-04 22:24:05 UTC
everyone thinks they can do mouse acceleration better, and everyone always gets
it wrong.  we've gone through about three acceleration algorithms since 6.7 and
there's no indication anyone prefers one over the other.

this sort of request really needs to be accompanied by patches because otherwise
the interpretation is totally up to whoever ends up implementing it.
Comment 4 Adam Jackson 2006-04-04 22:25:38 UTC
*** Bug 4490 has been marked as a duplicate of this bug. ***
Comment 5 Eric Wilhelm 2006-04-07 12:03:49 UTC
ajax:  note that this is not about acceleration.  This bug is not INVALID.     
Jeff's request was for a way to set the *speed* of the mouse.  This is    
currently not available.    
This is not a duplicate of 138 or 4490.  
It was possible to set the Resolution on some PS/2 mice.  This does not work    
on most USB mice and with the newer 800dpi mice the speed is stuck at 2x.  It    
appears that this could be tweaked in the kernel as a compilation option but    
that is a long way from a runtime adjustment.    
I'll say this again in a few ways to make it perfectly clear:    
  * acceleration is not speed    
  * speed could also be called "scale" or "resolution"    
  * speed is the ratio between how far I move the mouse    
    and how far the pointer moves    
  * this cannot be changed with xset    
  * this has absolutely nothing to do with how fast the mouse moves   
--Eric Wilhelm <ewilhelm at cpan dot org>   
Comment 6 Adam Jackson 2006-04-15 05:47:53 UTC
(In reply to comment #5)
> ajax:  note that this is not about acceleration.  This bug is not INVALID.     

No, it is about acceleration.  The feature you're describing is a linear scaling
from 1 unit of mouse movement to N units of pixel movement, and that by itself
is broken.  You _have_ to have the ability to move by exactly one pixel.

So any implementation of scaling has to be done simultaneously with modifying
the acceleration code.  Which we have done, time and again, and no one has ever
come up with any measurable improvement.
Comment 7 Eric Wilhelm 2006-04-15 06:15:51 UTC
> The feature you're describing is a linear scaling   
> from 1 unit of mouse movement to N units of pixel movement   
Actually, I want a linear scaling of N units of mouse to 1 unit of pixel.  This   
is what is actually missing.   
The OP wants his mouse faster -- ok, that is a physical limitation of the   
resolution of his mouse hardware.  
I have a high-res mouse and want to slow it down.  I need to be able to make  
large movements with the mouse and prevent it from bouncing around with very  
small movements.  
> So any implementation of scaling has to be done simultaneously  
> with modifying the acceleration code.  
Only with scaling *faster*, since as you pointed out:  you have to be able to  
move by only one pixel.  Sorry I had missed that bit.  I'm happy to submit a 
separate "RFE: must be able to slow mouse down" or we can just change this one. 
Comment 8 Antti Miranto 2006-09-01 13:07:31 UTC

I have this same problem wiht my Logitech LX7. Mouse (poitter) is moving way to
fast rendering it unusable. 

I upgraded my mouse from Logitech MouseMan wheel Optical to Logitech LX7. Now
poiter is about 3 times faster than before. I can use xset m to tone it down but
then it would be trade of with speed and accuracy. 

If I use "xset m 1/3 1" there is no acceleration only accurate and slow constant
speed. This was my old mouse's normal speed.

Other way around I can use "xset m 1 1" and the speed would be like my old
mouse's accelerated speed (with out accuracy).

My soulution to this would be new function (speed-multiplier, acceleration,
xset m <speed-multiplier> <acceleration> <treshold>
"xset m 1/3 1 15" would make my new mouse act like old one.

[Or if speed-multiplier is used as a default speed to acceleration and treshold
my line would be: "xset m 1/3 5/2 5 (which might be bad since altering
speed-multiplier affects all other setting to)]

I have filled this bug-report to Ubuntu:
Comment 9 Simon Thum 2006-10-10 04:41:25 UTC

I have filed bug#8583, a patch which should solve the discussed problems.
Comment encouraged.

Comment 10 gsr.bugs 2006-11-08 17:58:35 UTC
As reported in bug 3885 the documentation of xset does not mention
a hidden feature avaliable since XFree86 in which a 0 in one
of the mouse settings makes the system use a "slow motion gives
precisse pointer, fast gives big screen jumps" system. For example
I have a machine with "xset m 7/4 0" and it has a really nice mouse

Did that code get removed? I have to test newer Xorg, but I think
it was there after the transition from XF86.
Comment 11 gsr.bugs 2006-11-09 09:07:45 UTC
After some investigation, I think I found code that does something
when threshold is 0. It starts at line 955 in
The other part of the if looks pretty much what everyone
complains about two speed mouse.

Also found a really old mail that seems to look similar to
the above code. Maybe the changes mentioned by ajax are the
differences, tho the annotate says it is rather and untouched

I also just got the machine upgraded to 7.1.1 and it feels (no long testing
so excuse me if it is my imagination) that the system works, precise for
small movements, and side to side jump with a fast wrist shake. Is
the above code not used for the mouse and I am seeing something
else doing the acceleration?

For all the people trying with xset m A/B N and similar, could you test
xset m A/B 0? Thanks.
Comment 12 Daniel Stone 2007-02-27 01:26:07 UTC
Sorry about the phenomenal bug spam, guys.  Adding xorg-team@ to the QA contact so bugs don't get lost in future.
Comment 13 J├╝rgen Appel 2007-04-21 19:18:21 UTC
Created attachment 9682 [details] [review]
Patch implementing a mouse speed setting on a per-mouse basis

As an owner of a high resolution bluetooth mouse I was very disappointed that 
I could barely use this mouse with my laptop since its speed was much too 
fast. The Option "Resolution" setting in the xorg.conf had no effect and 
setting a constand decelleration via xset was no option since that would 
render my touchpad unusable.

Since the big google did not find any solution, and since the original code 
was open source and understandably written, I decided to take the matter 
into my own hands and wrote the following patch to add  a per-pointing-device 
option to the xorg.conf that allowed me to change my mouse's sensitivity by 
an arbitrary factor independently from my touchpad response.
The line
  Option       "Sensitivity" ".5"
in the Section "InputDevice" for my mouse now solves all my problems and might 
be of interest for others too.  

Although I can't really think about any use for real values >1, it is still 
possible. However this might make it impossible to point the mouse at certain 
pixels so use it with care.

So please enjoy and let me hear about your opinions about this!
Comment 14 Peter Hutterer 2008-11-17 21:49:57 UTC
Closing - see Bug 8583. The new pointer accel code should provide enough options to tweak it to your preference (even on a per-device basis).

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.