[PATCH weston] input: don't send to clients key events eaten by bindings

Giulio Camuffo giuliocamuffo at gmail.com
Tue Nov 18 08:54:04 PST 2014


2014-11-13 13:30 GMT+02:00 Daniel Stone <daniel at fooishbar.org>:
> Hi,
>
> On Thursday, November 13, 2014, Giulio Camuffo <giuliocamuffo at gmail.com>
> wrote:
>>
>> 2014-11-13 12:06 GMT+02:00 Daniel Stone <daniel at fooishbar.org>:
>> > But this is just a client issue, and nothing in sending the full keys
>> > array
>> > precludes this working.
>> >
>> > If Alt+X is a modifier (i.e. any time Alt+X is held, pressing Y triggers
>> > the
>> > shortcut), then the client can use the keys array to notice this, and
>> > ensure
>> > the shortcut is fired.
>> >
>> > If Alt+(X+Y) is a cumulative shortcut, then the client knows from seeing
>> > X
>> > in the enter array but not a key event, that it must wait for a release
>> > on X
>> > before it arms the shortcut for Y.
>>
>> But no, because, when the focus isn't switched, there is no enter
>> event and no keys array. The client has no idea X was pressed, so it
>> can't possibly trigger the binding.
>> So without the patch this is not consistent. Depending on whether the
>> compositor binding switches the focus, the client binding works or it
>> doesn't work.
>
>
> A problem we can solve by switching the focus. ;) I agree that it's annoying
> to always do this for every hotkey, so we could introduce a new
> wl_keyboard::leave_temporary which would inform the client that it's about
> to get another enter event very shortly, but shouldn't redraw itself
> insensitive or anything.
>
> Alternately, we could bump the wl_keyboard version to just allow for
> consecutive enter events and never send a leave in these temporal cases.

Do we really need to bump the version? The description of
wl_keyboard.leave says " Notification that this seat's keyboard focus
is on a certain surface.", it doesn't say the leave and enter events
always go in pair, so it seems to me we can just send the new enters
without changing anything.


--
Giulio

>
> For older clients, we can just send leave/enter and they can suck it up.
>
> Either way, it makes things more predictable and allows clients to work out
> what's best.
>
> Cheers,
> Daniel


More information about the wayland-devel mailing list