<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    Aaron, you've inspired me to slightly "pre-announce" something which
    I've not yet completed within Qt: Support for more mouse buttons.<br>
    (Within KDE, that corresponds to <a
      href="https://bugs.kde.org/show_bug.cgi?id=34362">Bug# 34362</a>
    and all of it's related, dependent bugs. In Qt, I'm <a
      href="http://bugreports.qt.nokia.com/browse/QTBUG-16092">QTBUG-16092</a>,
    although there's lots of irrelevant X11-related chatter in that
    one.)<br>
    <br>
    Dennis Dzyubenko will be reviewing my design in the next week or so.
    (Or, if he's too busy, I'll create, test, and submit the patch
    without his pre-coding design review.) For a long time, as you all
    know, Qt has handled only the low-numbered buttons for which X11 has
    a mask of 'button state' bits. But, the notification from X11 into
    Qt for ButtonPressed and ButtonReleased events actually provides the
    button number as an integer. We can't tell whether a user already
    had a "high" button number pressed when they move into "our"
    Window... but, with some new coding, we *CAN* see them Release and
    Press those buttons after they've entered.<br>
    <br>
    The first part of the work is within kdelibs, of course. KDevelop
    should also be enhanced. But, for people to *SEE* something new and
    cool on 4.7, right away, I think that Plasma should show off
    enhanced mouse shortcuts, right out of the box.<br>
    (In 4.7, we should be able to offer use of "gamer" mouse buttons as
    shortcuts on the Compositing desktop.) That gets our UI more
    competitive with the mouse shortcuts of Compiz. And, if we want to,
    we could also use combinations of low-numbered buttons (those which
    DO have 'button state" mask bits) as mouse-only modifiers for
    high-numbered button click actions. (I.e., providing a user with
    only two thumb buttons, Button8 and Button9, with the ability to
    define more keyboard-free shortcut actions by combining these
    buttons with Button2, or Button3... and maybe wheel actions as
    well.)<br>
    <br>
    That's a lot of work, in a lot of different parts of KDE. I've never
    submitted a single patch for KDE, and don't have a lot of time to
    donzte into this effort. (Although I'll be delighted to jump on any
    new Qt "wrapper" APIs which might be needed to interface with X11.)
    Qt has actually supported Button8 and Button9, as well as the left
    and right tilt wheels (Button6 and Button7), since last May ... but
    I'm going to finish that job, going up to about 30 buttons. (Button4
    and Button5, along with Button6 and Button7, appear to KDE as wheel
    events, and I have no plan to change that interface. So this
    enhancement is concerned primarily with 8, 9, and higher numbers,
    and maybe a re-done shortcut widget which listens for combinations
    of multiple buttons.)<br>
    <br>
    I think that BC requires me to implement an extension of the current
    mask, rather than changing the API to use integers. As far as X11 is
    concerned, that should handle our needs for using a single mouse as
    a desktop's primary pointer. This is obviously a large project, and
    I don't want to overrun the Plasma Dev ML with tons of messages
    about mouse-button enhancements in other areas. So I've opened a
    forum topic for it, "More Mouse Buttons (Devs only, PLEASE)" at <a
      href="http://forum.kde.org/viewtopic.php?f=68&amp;t=92861">Forum
      -&gt; KDE Software -&gt; KDE Development -&gt; Interface and
      Design</a>.<br>
    <br>
    I have an immediate question for those of you who know KDE better
    than I do: Is there a naming convention which you would like me to
    use when I expand the Qt enumeration? (If there are plans for KDE
    mouse support on Windows, or other non-X11 platforms, please think
    about button naming compatibility. I know Zilch about pointers on
    those platforms.)<br>
  </body>
</html>