Read MSC_TIMESTAMP from evdev and pass along
This CL passes along MSC_TIMESTAMP if the device reports it. We will
use this in the touchpad gesture library for more accurate time deltas,
particularly for lux/hammer.
BUG=b:65041115
TEST=Deploy to device which supports MSC_TIMESTAMP: values are
succesfully passed. Deploy to device without MSC_TIMESTAMP support: no
problems.
Change-Id: Ib7c6431d11f593eb10481de6cc6348f837aee05c
Reviewed-on: https://chromium-review.googlesource.com/742488
Commit-Ready: Sean O'Brien <seobrien@chromium.org>
Tested-by: Sean O'Brien <seobrien@chromium.org>
Reviewed-by: Michael Spang <spang@chromium.org>
Reviewed-by: Sean O'Brien <seobrien@chromium.org>
diff --git a/src/libevdev.c b/src/libevdev.c
index e920a02..1b4d52e 100644
--- a/src/libevdev.c
+++ b/src/libevdev.c
@@ -160,6 +160,20 @@
Event_To_String(EV_KEY, i));
}
+ len = ioctl(fd, EVIOCGBIT(EV_MSC, sizeof(info->msc_bitmask)),
+ info->msc_bitmask);
+ if (len < 0) {
+ LOG_ERROR(device, "ioctl EVIOCGBIT(EV_MSC) failed: %s\n",
+ strerror(errno));
+ return !Success;
+ }
+ for (i = 0; i < len*8; i++) {
+ if (TestBit(i, info->msc_bitmask)) {
+ LOG_DEBUG(device, "Has MSC[%d] = %s\n", i,
+ Event_To_String(EV_MSC, i));
+ }
+ }
+
len = ioctl(fd, EVIOCGBIT(EV_LED, sizeof(info->led_bitmask)),
info->led_bitmask);
if (len < 0) {