Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite of event engine #307

Open
wants to merge 26 commits into
base: master
Choose a base branch
from
Open

Rewrite of event engine #307

wants to merge 26 commits into from

Commits on Mar 31, 2018

  1. Remove useless statement

    boppreh committed Mar 31, 2018
    Configuration menu
    Copy the full SHA
    27d9d05 View commit details
    Browse the repository at this point in the history

Commits on Apr 1, 2018

  1. Configuration menu
    Copy the full SHA
    e53822f View commit details
    Browse the repository at this point in the history

Commits on Apr 2, 2018

  1. Finish third iteration of suppression code

    The first version that could suppress events was introduced by @xoviat
    via #38. It was a separate module, using nested dictionaries to simulate
    a state machine that had to be updated on every hotkey registered. It
    also handled the entire hotkey process, including multi-steps and
    timeouts. It was very complex, and had some bugs that we weren't sure
    were fixable with that architecture.
    
    The second version was developed in the `suppress` branch for over an
    year. It used an explicit state machine for each key, divided by several
    attributes (is it a modifier, was it processed by a key, etc). It
    processed only single-step hotkeys. Multi-step hotkeys were simulated by
    adding and removing hotkeys as necessary, and keeping track separately of
    which events were suppressed from previous steps. This version worked
    better, with fewer bugs and somewhat simpler, but the execution was
    still hard to understand and some bugs were creeping in.
    
    This commit introduces the third attempt at making a resiliant and
    simple to understand key event suppression system. It borrows the
    concept of multi-step hotkeys as being sequences of single-step hotkeys,
    but revamps everything else.
    
    The meat of the code is a set of global variables and a decision tree.
    
    The decision tree is executed for each incoming event, and uses the
    global state to decide if a given event should be:
    1) Suppressed. It's part of a blocking hotkey and at least one callback
    returned False. The event is blocked with no hope of recovery. For key
    down events, the corresponding key up event will also be suppressed.
    2) Delayed. This event is part of a *subset* of one or more blocking
    hotkeys. We block it now, but may decide to resend it later.
    3) Allowed. The event is passed along normally. If there were any
    pending events, they are resent before allowing this one.
    
    The global variables keep track of which keys the OS reports as
    currently pressed (i.e. physically pressed keys), which keys were
    allowed to be passed (i.e. logically pressed keys, from the point of
    view of other applications), which key presses have been tentatively
    suppressed, and which key presses were definitely suppressed by hotkeys.
    
    It's still complex, but much easier to understand than the two previous
    versions, doesn't have the same bugs (I hope it has no bugs at all), and
    is much easier to debug and amend.
    
    Third time is the charm, wish me luck.
    boppreh committed Apr 2, 2018
    Configuration menu
    Copy the full SHA
    d3439be View commit details
    Browse the repository at this point in the history

Commits on May 18, 2018

  1. Configuration menu
    Copy the full SHA
    a5d81fb View commit details
    Browse the repository at this point in the history

Commits on Jun 7, 2018

  1. Configuration menu
    Copy the full SHA
    a4e60db View commit details
    Browse the repository at this point in the history

Commits on Aug 14, 2018

  1. Configuration menu
    Copy the full SHA
    7ee721c View commit details
    Browse the repository at this point in the history
  2. Partial fixes

    boppreh committed Aug 14, 2018
    Configuration menu
    Copy the full SHA
    2a87014 View commit details
    Browse the repository at this point in the history
  3. Correct test_record test

    boppreh committed Aug 14, 2018
    Configuration menu
    Copy the full SHA
    e717860 View commit details
    Browse the repository at this point in the history
  4. Add hotkey timeout

    boppreh committed Aug 14, 2018
    Configuration menu
    Copy the full SHA
    d1bfdac View commit details
    Browse the repository at this point in the history
  5. Remove debug statements

    boppreh committed Aug 14, 2018
    Configuration menu
    Copy the full SHA
    7d6b220 View commit details
    Browse the repository at this point in the history

Commits on Aug 15, 2018

  1. Configuration menu
    Copy the full SHA
    213ee14 View commit details
    Browse the repository at this point in the history
  2. Change test_record

    boppreh committed Aug 15, 2018
    Configuration menu
    Copy the full SHA
    a96f075 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    fb594e8 View commit details
    Browse the repository at this point in the history

Commits on Aug 16, 2018

  1. Add tests for queueing order

    boppreh committed Aug 16, 2018
    Configuration menu
    Copy the full SHA
    b0ad839 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    8e793fe View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    0c272aa View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    9bf33f8 View commit details
    Browse the repository at this point in the history

Commits on Sep 5, 2018

  1. Configuration menu
    Copy the full SHA
    7bfbf60 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c498b3e View commit details
    Browse the repository at this point in the history

Commits on Oct 22, 2018

  1. Configuration menu
    Copy the full SHA
    e55daf8 View commit details
    Browse the repository at this point in the history

Commits on Sep 23, 2019

  1. Configuration menu
    Copy the full SHA
    6b22b38 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    9f20d44 View commit details
    Browse the repository at this point in the history

Commits on Sep 26, 2019

  1. Configuration menu
    Copy the full SHA
    22a3b70 View commit details
    Browse the repository at this point in the history

Commits on Oct 29, 2019

  1. Configuration menu
    Copy the full SHA
    2f7ddf7 View commit details
    Browse the repository at this point in the history

Commits on Mar 23, 2020

  1. Fix typo

    boppreh committed Mar 23, 2020
    Configuration menu
    Copy the full SHA
    d37a00d View commit details
    Browse the repository at this point in the history

Commits on Aug 29, 2021

  1. Typo in argument name

    argstypes -> argtypes
    FabianSt305 authored and boppreh committed Aug 29, 2021
    Configuration menu
    Copy the full SHA
    7f06258 View commit details
    Browse the repository at this point in the history