evdev: write EV_SYN input_event along with led events to device

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.
dev
Rolf Morel 11 years ago committed by Kristian Høgsberg
parent e9cabc1bc3
commit 14c9892069
  1. 4
      src/evdev.c

@ -45,7 +45,7 @@ evdev_led_update(struct evdev_device *device, enum weston_led leds)
{ LED_CAPS_LOCK, LED_CAPSL }, { LED_CAPS_LOCK, LED_CAPSL },
{ LED_SCROLL_LOCK, LED_SCROLLL }, { LED_SCROLL_LOCK, LED_SCROLLL },
}; };
struct input_event ev[ARRAY_LENGTH(map)]; struct input_event ev[ARRAY_LENGTH(map) + 1];
unsigned int i; unsigned int i;
if (!device->caps & EVDEV_KEYBOARD) 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].code = map[i].evdev;
ev[i].value = !!(leds & map[i].weston); ev[i].value = !!(leds & map[i].weston);
} }
ev[i].type = EV_SYN;
ev[i].code = SYN_REPORT;
i = write(device->fd, ev, sizeof ev); i = write(device->fd, ev, sizeof ev);
(void)i; /* no, we really don't care about the return value */ (void)i; /* no, we really don't care about the return value */

Loading…
Cancel
Save