[PATCH weston v2 2/2] libinput: Only forward first and last press and release for a key
Derek Foreman
derekf at osg.samsung.com
Tue Feb 3 15:01:30 PST 2015
fwiw,
Reviewed-by: Derek Foreman <derekf at osg.samsung.com>
for both.
On 29/01/15 10:23 PM, Jonas Ådahl wrote:
> Keyboard key events will be received from a device where a key has
> been pressed, even though an equivalent key has been pressed (same
> key code) on a device connected to the same seat. notify_key()
> expects to only be called as if there was only one keyboard device
> associated with the given seat, so to achieve this, ignore every event
> where forwarding it would result in multiple 'pressed' or 'released'
> notifications.
>
> Signed-off-by: Jonas Ådahl <jadahl at gmail.com>
> Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
> Reviewed-by: Daniel Stone <daniels at collabora.com>
> ---
>
> Changed since v1:
>
> New commit message subject
>
>
> src/libinput-device.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/src/libinput-device.c b/src/libinput-device.c
> index 5c5b9b9..567e5ea 100644
> --- a/src/libinput-device.c
> +++ b/src/libinput-device.c
> @@ -59,6 +59,17 @@ handle_keyboard_key(struct libinput_device *libinput_device,
> {
> struct evdev_device *device =
> libinput_device_get_user_data(libinput_device);
> + int key_state =
> + libinput_event_keyboard_get_key_state(keyboard_event);
> + int seat_key_count =
> + libinput_event_keyboard_get_seat_key_count(keyboard_event);
> +
> + /* Ignore key events that are not seat wide state changes. */
> + if ((key_state == LIBINPUT_KEY_STATE_PRESSED &&
> + seat_key_count != 1) ||
> + (key_state == LIBINPUT_KEY_STATE_RELEASED &&
> + seat_key_count != 0))
> + return;
>
> notify_key(device->seat,
> libinput_event_keyboard_get_time(keyboard_event),
>
More information about the wayland-devel
mailing list