From cfd0e726cc13f7eb341cc5a1444d2153b5b516b0 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Fri, 1 Jun 2012 12:13:59 +0100 Subject: [PATCH] Brown-paper bag fix for LED The O_RDWR change got lost in a rebase, and as Peter suggested as well, make sure to set EVDEV_KEYBOARD if the device has EV_LED. Signed-off-by: Daniel Stone --- src/evdev.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/evdev.c b/src/evdev.c index 8439eda..23d22d7 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -58,7 +58,7 @@ evdev_led_update(struct weston_seat *seat_base, enum weston_led leds) wl_list_for_each(device, &seat->devices_list, link) { if (device->caps & EVDEV_KEYBOARD) - write(device->fd, ev, sizeof *ev); + write(device->fd, ev, sizeof ev); } } @@ -433,6 +433,9 @@ evdev_configure_device(struct evdev_input_device *device) } } } + if (TEST_BIT(ev_bits, EV_LED)) { + device->caps |= EVDEV_KEYBOARD; + } /* This rule tries to catch accelerometer devices and opt out. We may * want to adjust the protocol later adding a proper event for dealing @@ -478,7 +481,7 @@ evdev_input_device_create(struct evdev_seat *master, /* Use non-blocking mode so that we can loop on read on * evdev_input_device_data() until all events on the fd are * read. mtdev_get() also expects this. */ - device->fd = weston_launcher_open(ec, path, O_RDONLY | O_NONBLOCK); + device->fd = weston_launcher_open(ec, path, O_RDWR | O_NONBLOCK); if (device->fd < 0) goto err0; -- 2.7.4