[gtk+] x11: Detect libinput touchpads
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] x11: Detect libinput touchpads
- Date: Mon, 2 Feb 2015 12:58:02 +0000 (UTC)
commit 6f07d5e761f2c1d18825f73033ab7d095ea2c70d
Author: Carlos Garnacho <carlosg gnome org>
Date: Sun Feb 1 12:08:04 2015 +0100
x11: Detect libinput touchpads
These aren't reported as XIDependentTouch devices, so make it poke a
property that's specific to touchpads managed by the libinput driver.
gdk/x11/gdkdevicemanager-xi2.c | 28 ++++++++++++++++++++++++++++
1 files changed, 28 insertions(+), 0 deletions(-)
---
diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c
index b0f3138..50c1a00 100644
--- a/gdk/x11/gdkdevicemanager-xi2.c
+++ b/gdk/x11/gdkdevicemanager-xi2.c
@@ -334,6 +334,32 @@ get_device_ids (GdkDisplay *display,
return TRUE;
}
+static gboolean
+is_touchpad_device (GdkDisplay *display,
+ XIDeviceInfo *info)
+{
+ gulong nitems, bytes_after;
+ guint32 *data;
+ int rc, format;
+ Atom type;
+
+ gdk_x11_display_error_trap_push (display);
+
+ rc = XIGetProperty (GDK_DISPLAY_XDISPLAY (display),
+ info->deviceid,
+ gdk_x11_get_xatom_by_name_for_display (display, "libinput Tapping Enabled"),
+ 0, 1, False, XA_INTEGER, &type, &format, &nitems, &bytes_after,
+ (guchar **) &data);
+ gdk_x11_display_error_trap_pop_ignored (display);
+
+ if (rc != Success || type != XA_INTEGER || format != 8 || nitems != 1)
+ return FALSE;
+
+ XFree (data);
+
+ return TRUE;
+}
+
static GdkDevice *
create_device (GdkDeviceManager *device_manager,
GdkDisplay *display,
@@ -349,6 +375,8 @@ create_device (GdkDeviceManager *device_manager,
if (dev->use == XIMasterKeyboard || dev->use == XISlaveKeyboard)
input_source = GDK_SOURCE_KEYBOARD;
+ else if (is_touchpad_device (display, dev))
+ input_source = GDK_SOURCE_TOUCHPAD;
else if (dev->use == XISlavePointer &&
is_touch_device (dev->classes, dev->num_classes, &touch_source, &num_touches))
input_source = touch_source;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]