summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2011-10-25 13:48:57 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2011-11-10 13:04:43 +1000
commit9c3baacbd819eae122a4c0b679efc3c36895cff9 (patch)
tree36dd7b02a36225f8e8cffcf86dc50eb60bfa4d53
parent9aea497432322054ff61711abe1d5028a108bcaf (diff)
test-xi2: add basic touch support
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--configure.ac3
-rw-r--r--src/list.c11
-rw-r--r--src/test_xi2.c16
-rw-r--r--src/xinput.c2
4 files changed, 32 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 5a64837..ea2b5bb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -50,6 +50,9 @@ AC_SUBST(HAVE_XI2)
# XI2.1 support
PKG_CHECK_MODULES(XI21, [xi >= 1.4.99.1] [inputproto >= 2.0.99.1],
AC_DEFINE(HAVE_XI21, 1, [XI2.1 available]));
+# XI2.2 support
+PKG_CHECK_MODULES(XI22, [xi >= 1.5.99.1] [inputproto >= 2.1.99.1],
+ AC_DEFINE(HAVE_XI22, 1, [XI2.2 available]));
AC_OUTPUT([Makefile
src/Makefile
diff --git a/src/list.c b/src/list.c
index 3be20eb..cc39bd3 100644
--- a/src/list.c
+++ b/src/list.c
@@ -225,6 +225,17 @@ print_classes_xi2(Display* display, XIAnyClassInfo **classes,
}
break;
#endif
+#if HAVE_XI22
+ case XITouchClass:
+ {
+ XITouchClassInfo *t = (XITouchClassInfo*)classes[i];
+
+ printf("XITouchClass\n");
+ printf("\t\tTouch mode: %s\n",
+ (t->mode == XIDirectTouch) ? "direct" : "dependent");
+ printf("\t\tMax number of touches: %d\n", t->num_touches);
+ }
+#endif
}
}
diff --git a/src/test_xi2.c b/src/test_xi2.c
index 06be4e7..9ecfa1d 100644
--- a/src/test_xi2.c
+++ b/src/test_xi2.c
@@ -301,6 +301,12 @@ static const char* type_to_name(int evtype)
case XI_RawButtonPress: name = "RawButtonPress"; break;
case XI_RawButtonRelease: name = "RawButtonRelease"; break;
case XI_RawMotion: name = "RawMotion"; break;
+ case XI_TouchBegin: name = "TouchBegin"; break;
+ case XI_TouchUpdate: name = "TouchUpdate"; break;
+ case XI_TouchEnd: name = "TouchEnd"; break;
+ case XI_RawTouchBegin: name = "RawTouchBegin"; break;
+ case XI_RawTouchUpdate: name = "RawTouchUpdate"; break;
+ case XI_RawTouchEnd: name = "RawTouchEnd"; break;
default:
name = "unknown event type"; break;
}
@@ -341,6 +347,11 @@ test_xi2(Display *display,
XISetMask(mask.mask, XI_Leave);
XISetMask(mask.mask, XI_FocusIn);
XISetMask(mask.mask, XI_FocusOut);
+#ifdef HAVE_XI22
+ XISetMask(mask.mask, XI_TouchBegin);
+ XISetMask(mask.mask, XI_TouchUpdate);
+ XISetMask(mask.mask, XI_TouchEnd);
+#endif
if (mask.deviceid == XIAllDevices)
XISetMask(mask.mask, XI_HierarchyChanged);
XISetMask(mask.mask, XI_PropertyEvent);
@@ -374,6 +385,11 @@ test_xi2(Display *display,
XISetMask(mask.mask, XI_RawButtonPress);
XISetMask(mask.mask, XI_RawButtonRelease);
XISetMask(mask.mask, XI_RawMotion);
+#ifdef HAVE_XI22
+ XISetMask(mask.mask, XI_RawTouchBegin);
+ XISetMask(mask.mask, XI_RawTouchUpdate);
+ XISetMask(mask.mask, XI_RawTouchEnd);
+#endif
XISelectEvents(display, DefaultRootWindow(display), &mask, 1);
free(mask.mask);
diff --git a/src/xinput.c b/src/xinput.c
index 1ed0c8c..f12d69c 100644
--- a/src/xinput.c
+++ b/src/xinput.c
@@ -197,6 +197,8 @@ xinput_version(Display *display)
#if HAVE_XI21
min = 1;
+#elif HAVE_XI22
+ min = 2;
#endif
XIQueryVersion(display, &maj, &min);