Bug 11683 - stuck-arse modifiers
Summary: stuck-arse modifiers
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Server/General (show other bugs)
Version: git
Hardware: Other FreeBSD
: medium blocker
Assignee: Daniel Stone
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
: 11587 (view as bug list)
Depends on:
Blocks: xorg-7.3
  Show dependency treegraph
 
Reported: 2007-07-21 11:08 UTC by Eric Anholt
Modified: 2007-08-02 03:16 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Eric Anholt 2007-07-21 11:08:11 UTC
1) startx
2) click gnome-terminal
3) alt-click drag window into place
4) oh god why do menus pop down when I type
5) harass daniels until he fixes input
Comment 1 Daniel Stone 2007-07-31 20:55:36 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.
Comment 2 Daniel Stone 2007-08-02 03:16:49 UTC
*** Bug 11587 has been marked as a duplicate of this bug. ***


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.