---->"Hrvoje" == Hrvoje Niksic <hniksic(a)srce.hr> writes:
Hrvoje> Dave Thomas <Dave(a)Thomases.com> writes:
> Could we not just add another level of indirection here. It seem
> to me that the problem is that we treat mouse buttons differently
> to keys. We don't say 'the third key on the bottom row', we say
> 'c'. Why not do the same with mouse buttons. Have buttons with
> logical names (select, enact, paste or some such)
Hrvoje> This is a good idea, but it has a few problems. First,
Hrvoje> won't such a scheme break existing customizations?
Not if we don't hide the current naming. We'd just migrate across to
the higher level names over time. (Yes, there'd be a period of
confusion when people say "I changed by 'select' button and it didn't
work in package x", but then again there's confusion now). I think
there's an 80/20 rule here too - most of the world uses a small number
Hrvoje> Second, button1 can be used for many things (witness
Hrvoje> `mouse-track' for proof) -- how do you propose describing
Hrvoje> its usage with a word like "select" or "enact"?
True -- that's the problem!
What I'm suggesting is having a clean semantic, where for common
operations, we use a name, rather than an absolute button number. End
users can then customize by saying 'I want select on button 1', and
all packages that implement mouse selection magically do it using that
Packages that then implement functionality outside this basic set can
define their own logical button names (with default mappings to
physical buttons), which would allow their users to remap them too. We
could even provide functionality to ensure than a package that did
this didn't overload the same physical button with two conflicting
(require-unique-mouse-buttons 'select 'pan-universe)
I'm sure there are many ramifications of this that I haven't thought
of, but it feels cleaner than the current system.