[PATCH weston] evdev: write EV_SYN input_event along with led events to device

Rolf Morel rolfmorel at gmail.com
Fri Aug 9 07:32:17 PDT 2013


Other clients of an evdev device need to have the events they receive
be separated, in moment in time, from other events by an EV_SYN/
SYN_REPORT. This is the responsibility of the client who writes events
into the stream.
---
 src/evdev.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/evdev.c b/src/evdev.c
index 5ad4d6b..4d818be 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -45,7 +45,7 @@ evdev_led_update(struct evdev_device *device, enum weston_led leds)
 		{ LED_CAPS_LOCK, LED_CAPSL },
 		{ LED_SCROLL_LOCK, LED_SCROLLL },
 	};
-	struct input_event ev[ARRAY_LENGTH(map)];
+	struct input_event ev[ARRAY_LENGTH(map) + 1];
 	unsigned int i;
 
 	if (!device->caps & EVDEV_KEYBOARD)
@@ -57,6 +57,8 @@ evdev_led_update(struct evdev_device *device, enum weston_led leds)
 		ev[i].code = map[i].evdev;
 		ev[i].value = !!(leds & map[i].weston);
 	}
+	ev[i].type = EV_SYN;
+	ev[i].code = SYN_REPORT;
 
 	i = write(device->fd, ev, sizeof ev);
 	(void)i; /* no, we really don't care about the return value */
-- 
1.8.3.4



More information about the wayland-devel mailing list