Daniel Stone 6b055e5d97 Input: Fix stuck modifiers (bug #11683)
Disclaimer: It's 6:51am.  I'm trying to be as understandable as possible.

What was happening previously was this:
 * Press Alt
 * Extended event generated and processed: state is now Alt down once
 * Core event generated
   - keyboard switched: inherited state is Alt down once
   - event processed: Alt down twice
 * Release Alt
 * Extended event generated and processed: state is now null
 * Core event generated and processed: Alt down once

If we switch the order:
 * Press Alt
 * Core event generated:
  - keyboard switched: inherited state is null
  - event processed: Alt down once
 * Extended event generated and processed: state is now Alt down once
 * Release Alt
 * Core event generated and processed: state is now null
 * Extended event generated and processed: state is now null

When we carry over the previous state, it needs to be the _previous_ state
(state and modifiersPerKey), assuming that we're going to catch now-core
events for any of these.  For example, if Ctrl is held down as we pivot, we
need to carry Ctrl over with a count of one, for which an extended + core
release will then clear.  Carrying over the union of the previous state _and
the state resulting from the immediate action_ was what broke things.
2007-08-01 06:55:36 +03:00
2007-06-29 14:06:52 -04:00
2007-06-29 14:06:52 -04:00
2007-06-29 14:06:52 -04:00
2007-06-29 14:06:52 -04:00
2007-08-01 03:33:06 +03:00
2007-06-29 14:06:52 -04:00
2007-06-29 14:06:52 -04:00
2007-06-29 14:06:52 -04:00
2007-06-29 14:06:52 -04:00
2007-06-29 14:06:52 -04:00
2007-06-29 14:06:52 -04:00
2007-07-04 23:38:27 -07:00
2007-06-29 14:06:52 -04:00
2005-12-19 16:34:07 +00:00
Description
Truly free fork of the XOrg project.
92 MiB
Languages
C 96.4%
Roff 1.1%
Objective-C 1%
Meson 0.9%
Shell 0.2%
Other 0.2%