Mouse speed questions: GNOME, Xorg, oh my...

Adam Williamson awilliam at
Thu May 2 18:34:22 UTC 2013

So, my rabbit hole of the morning is mouse cursor speed! Holy cow.

I recently got a new laptop (Dell XPS 13 dev edition) and found that
"the pointer seems too slow". Nowhere near as fast as I'm used to from
my old laptop, or how I have my mice set generally. Had to drag around
the touchpad for a while just to reach anywhere.

So I went into GNOME Control Center and tried to change it. GCC has
precisely one slider to use these days. It's labelled "Pointer Speed",
but what it actually changes is the dconf keys named
org.gnome.settings-daemon.peripherals.touchpad.motion-acceleration and
org.gnome.settings-daemon.peripherals.touchpad.motion-threshold; it
changes them both together, you can't set them separately. These seem to
be what X thinks of as the "acceleration factor" (which is to do with
how it scales from the minimum pointer speed to the maximum pointer
speed as you move your finger, I think) and the "acceleration
threshold" (how far you have to move before acceleration kicks in).
Neither of them seems to affect raw pointer speed at all (though I might
be wrong on that).

Problem is, with this touchpad, these settings don't seem to be powerful
enough - even setting the slider as high as it'll go, which sets the
acceleration factor to 10 and the threshold to 1, doesn't really make
the pointer move fast enough for me (and I'm not looking for SUPER crazy
sensitivity here, we're talking two or three scrubs of the entire
touchpad just to get all the way across the screen; I prefer it so that
a fast scrub just about takes me from side to side, a slow scrub takes
me about half way).

So I dived into pointer speeds at a lower level, and holy EEP. seems to be the main document, which explains a lot, but the interaction between the X server, the device driver (synaptics, for this touchpad) and GNOME still seems somewhat obscure.

Anyway, what I had to do to 'make it work for me' was use xinput to set
the ConstantDeceleration property for my touchpad to 1.6 (it defaulted
to I think 2.5). Having established this figure, I wrote an xorg.conf.d
snippet to set it on boot:

Section "InputClass"
	Identifier "My Touchpad"
	MatchIsTouchpad "yes"
# some curved deceleration
#	Option "AdaptiveDeceleration" "2"
# linear deceleration (mouse speed reduction)
	Option "ConstantDeceleration" "1.6"

(cribbed from the always-invaluable Arch wiki; ). That works
for me. I'm kinda happy. But it raises a whole bunch of other questions,
in my mind at least.

How is this ConstantDeceleration default set? It doesn't seem to be a
universal value; the mouse on my desktop, for instance, has it set to
1.0. So is it set by the driver? By the server? Is it dependent on the
ID of the device? (which would seem problematic, as the same touchpad
will behave 'differently' with different resolution displays, one
assumes). The ID of the system it's in? What?

What exactly is GNOME interacting with, and is it Doing It Rite? I'm
guessing not, because of which I discovered as
part of this whole thing. Does GNOME need to make its Single Mega Slider
change more than just the acceleration factor and threshold, or is the
bug here just that my touchpad had 'the wrong' default
ConstantDeceleration, and we should be aiming to make sure the defaults
for all hardware are such that the current GNOME slider's affected
settings and ranges are sufficient for all reasonable use cases? Is
anyone taking care of the interactions between the X server and device
drivers that are briefly alluded to in the X wiki page (it talks about
both the server and the driver being able to configure acceleration, and
thus the possibility of devices being 'double accelerated') at a Fedora
or upstream or whatever level? What's the meaning of life, the universe
and everything? Why did the Canucks suck so much last night? Help!?!

Any answers to the above appreciated :) I think I've reached my limit...
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | adamwfedora

More information about the devel mailing list