On Wed, 5 Nov 2014 16:23:29 +0200
Pekka Paalanen <[email protected]> wrote:

> On Tue,  7 Oct 2014 22:30:25 +0300
> Giulio Camuffo <[email protected]> wrote:
> 
> > weston key bindings are supposed to eat the key events, and not pass it
> > on to clients, and indeed the wl_keyboard.key event is not sent. But
> > we must also not put the key in the keys array to pass to client with
> > the wl_keyboard.enter event, or else we may send the 'eaten' one too.
> > In the case of a key binding hiding a surface having the keyboard focus,
> > the shell may decide to give the focus to another surface, but that will
> > happen before the key is released, so the new focus surface will receive
> > the code of the bound key in the wl_keyboard.enter array.
> > ---
> >  src/bindings.c   |  7 +++++--
> >  src/compositor.h |  2 +-
> >  src/input.c      | 35 +++++++++++++++++++----------------
> >  3 files changed, 25 insertions(+), 19 deletions(-)
> 
> Ok, reproducing this problem with visible effects requires Xwayland.
> Here's how I did it:
> 
> - open xterm (via Xwayland)
> - open weston-terminal
> - press Mod
> - press 'k' (Mod+k is a weston hotkey for killing an app)
> - weston-terminal gets killed, focus moves to xterm
> - before xterm gets killed too, release Mod
> - 'k' starts repeating in xterm until you release 'k'
> 
> The premise here is that since 'k' was the final key that triggered a
> keybinding, the press and release of 'k' must not be sent to any client.
> 
> This obviously fails in the above experiment, not via a key-press event
> but via the list of pressed keys in keyboard enter event. (You cannot
> see it with WAYLAND_DEBUG, because it cannot decode wl_array type.)
> 
> So, problem confirmed.

...

> Hmm, btw, why does the repeating of 'k' stop when I release the key in
> my experiment? I suppose the grab ends when I release the Mod key, so
> the release event gets sent. And that's actually correct in that case,
> because on keyboard enter the 'k' was listed depressed. So my test case
> is actually wrong! ...is it? This is starting to hurt my head now.

Sorry, the test case is correct, I just did it wrong. Here's how it
really works:

- open xterm (via Xwayland)
- open weston-terminal
- press Mod
- press 'k' (Mod+k is a weston hotkey for killing an app)
- weston-terminal gets killed, focus moves to xterm
- 'k' starts repeating in xterm

The 'k' repeating continues even if you release Mod and 'k', until
keyboard leaves the xterm or you press another key.


Thanks,
pq
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to