KDE MouseConfig GUI (back to Aaron)
Rick Stockton
rickstockton at reno-computerhelp.com
Sun Feb 6 03:38:38 CET 2011
I'm making replies to some of those first responses (thank you all!).
I asked: Should we push that user-specified map into Qt (i.e., with new
interfaces and variables to handle any necessary "fixes" for left/right
wheel assignments) -- or push it all the down into X11?
> Aarron said: if possible, that would be great imho.
Easy- but for code clarity and ease of maintenance, I'd want to break
the "interface through Qt only" rule. (If we're pushing the assignment
of these hardware property changes down to X11 anyway, it would be silly
to stick a lot of changes into Qt for the mere purpose of accomplishing
the hand-off.)
> Aarron said: is it possible to identify these mice when they are
> plugged in, and if so -- could we build a list of "known" mice with
> optimal default button maps?
Also quite easy. And there have been projects to control mouse
properties in the past (for Logitech in particular, and IIRC, licensed
under GPLV2.), so we might be able to learn the properties of many
models by simply reading code... without a going to the trouble of
actually acquiring them. Doco should also invite people to open a bug if
they've figured out the "optimal" map for a mouse which isn't already in
the table, allowing us to expand it over time.
When a mouse core pointer device is removed and replaced by another, I'm
absolutely certain that X11 gets an interrupt from UDEV. (That's what
provokes it to implement matching device class definitions). I think
that it has to get interrupts from HAL, as well... but I'm not totally
sure how ask for notification of a mouse removal into higher level code.
But Alan Coopersmith (et. all) can probably tell me their "best way"
without even thinking about it; if there's no objections to the
following design, then I'll go ahead and ask on one of the two X11 lists.
So, here's my tentative design: At KDE startup, do an "xinput list
--short" and grep for pointer device names. Then, if we ALREADY have a
matching [device-name] section in our config file (maybe with filename
"./kde/share/conf/mousebuttonconfigs.rc"), and the device is enabled,
execute "xinput set-button-mapping" with the values in the file stored
for that device. Here's an optional add-on, and my vote would be to do
this as well:
Perform an "xinput get-button-map" first. If the order received doesn't
already agree with with the order we intend to assign, save it in a $TMP
and restore it session termination. That way, we don't inflict our
settings on Gnome (in the same way that Gnome likes to inflict it's
settings, e.g. Keyboard, on other environments by scribbling them
directly into xorg.conf).
As most of you know already, this becomes extendable after we implement
the buttons: Other tunable properties like "deceleration" and "reporting
rate" are provided into UDEV by many mice, and there are usually
interfaces for things like axis-swapping too.
Or, would you guys prefer to leave our mapping in place after the KDE
Session terminates?
More information about the Plasma-devel
mailing list