Summary: | stuck-arse modifiers | ||
---|---|---|---|
Product: | xorg | Reporter: | Eric Anholt <eric> |
Component: | Server/General | Assignee: | Daniel Stone <daniel> |
Status: | RESOLVED FIXED | QA Contact: | Xorg Project Team <xorg-team> |
Severity: | blocker | ||
Priority: | medium | CC: | dr-xorg |
Version: | git | ||
Hardware: | Other | ||
OS: | FreeBSD | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Bug Depends on: | |||
Bug Blocks: | 8888 |
Description
Eric Anholt
2007-07-21 11:08:11 UTC
commit 6b055e5d9751e3679ff98065e43225ec8a960053 Author: Daniel Stone <daniel@fooishbar.org> Date: Wed Aug 1 06:55:36 2007 +0300 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. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.