Sync the key state on startup

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Rename libevdev_kernel_set_abs_value to libevdev_kernel_set_abs_info

Keep it in line with the non-kernel setter

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Add setters for an event or slot value

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Keep the LED state and sync it after SYN_DROPPED

This enables libevdev_get_event_value(dev, EV_LED, LED_NUML); to check
if a LED is on or off.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Add functions to toggle LEDs on the device

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Pass --no-print-directory to make

The "Entering/Leaving directroy /xyz" messages only add noise to
make-output. Even without we still get short hints which directory is
currently processed. Compare the two outputs below:

With --no-print-directory added:
  make --no-print-directory all-recursive
  Making all in doc
  doxygen libevdev.doxygen
  Making all in libevdev
  python2 ./make-event-names.py --output=c > event-names.h
  make  all-am
    CC       libevdev.lo
    CCLD     libevdev.la
  Making all in tools
    CC       libevdev-events.o
    CCLD     libevdev-events
  Making all in test
    CC       test-main.o
    CC       test-event-names.o
    CC       test-libevdev-init.o
    CC       test-libevdev-has-event.o
    CC       test-int-queue.o
    CC       test-libevdev-events.o
    CC       libevdev.o
    CC       test-common-uinput.o
    CC       test-common.o
    CCLD     test-libevdev

Without it:
  make  all-recursive
  make[1]: Entering directory `/home/david/dev/libevdev'
  Making all in doc
  make[2]: Entering directory `/home/david/dev/libevdev/doc'
  doxygen libevdev.doxygen
  make[2]: Leaving directory `/home/david/dev/libevdev/doc'
  Making all in libevdev
  make[2]: Entering directory `/home/david/dev/libevdev/libevdev'
  python2 ./make-event-names.py --output=c > event-names.h
  make  all-am
  make[3]: Entering directory `/home/david/dev/libevdev/libevdev'
    CC       libevdev.lo
    CCLD     libevdev.la
  make[3]: Leaving directory `/home/david/dev/libevdev/libevdev'
  make[2]: Leaving directory `/home/david/dev/libevdev/libevdev'
  Making all in tools
  make[2]: Entering directory `/home/david/dev/libevdev/tools'
    CC       libevdev-events.o
    CCLD     libevdev-events
  make[2]: Leaving directory `/home/david/dev/libevdev/tools'
  Making all in test
  make[2]: Entering directory `/home/david/dev/libevdev/test'
    CC       test-main.o
    CC       test-event-names.o
    CC       test-libevdev-init.o
    CC       test-libevdev-has-event.o
    CC       test-int-queue.o
    CC       test-libevdev-events.o
    CC       libevdev.o
    CC       test-common-uinput.o
    CC       test-common.o
    CCLD     test-libevdev
  make[2]: Leaving directory `/home/david/dev/libevdev/test'
  make[2]: Entering directory `/home/david/dev/libevdev'
  make[2]: Leaving directory `/home/david/dev/libevdev'
  make[1]: Leaving directory `/home/david/dev/libevdev'

We don't really win any useful information from these messages.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Fix build without MSC_TIMESTAMP

To build with older input.h

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
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.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Store the abs value after handling mt events

This way any ABS_MT_ event value that comes in will also be stored in abs_info.
That always corresponds to "current slot", so if a user calls
libevdev_set_event_value() or libevdev_get_event_value() they're actually
modifying the current slot value.

When the current slot changes, sync the state back into the absinfo values.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Rename enums to match lower_case format

This is technically an API, but not an ABI change.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by:  David Herrmann <dh.herrmann@gmail.com>
Merge branch 'led-handling'