Bug 41053 - NumLock causes MouseEvent to report wrong modifiers
Summary: NumLock causes MouseEvent to report wrong modifiers
Status: ASSIGNED
Alias: None
Product: Batik - Now in Jira
Classification: Unclassified
Component: SVG DOM (show other bugs)
Version: 1.6
Hardware: PC Windows XP
: P2 normal
Target Milestone: ---
Assignee: Batik Developer's Mailing list
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-11-28 05:01 UTC by Owen Rees
Modified: 2007-01-21 19:07 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Owen Rees 2006-11-28 05:01:39 UTC
The initial observation was that if NumLock is on then the modifier observer
methods of org.w3c.dom.events.MouseEvent such as getShiftKey() will give the
wrong answers for the left mouse button but work for the right button.

This was observed on Windows but not on Linux but that turns out to be because
the NumLock state is not reported on Linux and so does not interfere with the
reporting of the modifier key.

The underlying problem is that if both a Lock and Modifier are on then
DOMUtilities.getModifiersList will concatenate the strings naming the keys
without an intervening separator so merging the last Lock and first Modifier
into a single symbol such as "NumLockShift".

The difference for the right mouse button is because right button reports that
Meta is on so you get something like "NumLockMeta Shift".
Comment 1 Cameron McCormack 2007-01-21 19:07:54 UTC
Hi Owen.

Half of this bug is now fixed in SVN: the space is now included in the string
returned from DOMUtilities.getModifiersList.  The problem that Meta is indicated
as being pressed with the right mouse button is only partially fixed.  Testing
under JRE 1.6, I get the correct modifier list string when pressing down the
right mouse button, but it has Meta in it when the button is released. 
Similarly for Alt and the middle mouse button.

I tried reproducing this in a small standalone program and couldn't, so there is
probably still a bug in there somewhere.  (I'm pretty sure I only call
getModifiersEx and never getModifiers, though.)

I'm leaving this bug open to track the second part of the problem.