]> git.sur5r.net Git - i3/i3/commit
Don’t use SYNC key bindings for Mode_switch but re-grab keys
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 14 Mar 2010 21:35:51 +0000 (22:35 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 14 Mar 2010 21:40:58 +0000 (22:40 +0100)
commitc738b2e454bb8b096dd99d44e9e51030f8355b90
tree2e63acb4fa07ee6b929211811cee152b26dcc245
parent2df1fb8ac825c77b2744812d12dfcdc762bc7d75
Don’t use SYNC key bindings for Mode_switch but re-grab keys

Before this commit, i3 used key bindings in SYNC mode for bindings
like Mode_switch + <a> and replayed the key if the current state
did not include Mode_switch. This had some problems:

1) The WM needed to acknowledge much more key presses than you
   actually had bindings for, thus making the system a bit laggy
   sometimes.
2) Users of layouts who constantly type in the third level (like
   russian layouts) did not get their cyrillic symbols correctly
   (they were not replayed right), neither did the keybindings
   work in both modes.

So, the current implementation uses the following approach: XKB
provides an event which contains the current state (including
the current level). i3 signs up for this event and upon receival,
it re-maps the bindings using Mode_switch (enables them when the
level goes to the third level and disables them as soon as the
level goes back to normal). This fixes both problems.
include/config.h
include/handlers.h
include/i3.h
src/config.c
src/handlers.c
src/mainx.c