From: Peter Hutterer Date: Thu, 12 Jan 2012 06:01:28 +0000 (+1000) Subject: Merge branch 'multitouch' X-Git-Url: https://diplodocus.org/git/xorg-xinput/commitdiff_plain/fb6f41ced063c558f7bf8f10898f027612e2ad34?hp=c690fad9aa0dbc9d574d25e014d1dc15281b0870 Merge branch 'multitouch' --- 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 @@ -224,6 +224,17 @@ print_classes_xi2(Display* display, XIAnyClassInfo **classes, printf("\n"); } 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 4a6c3b6..7fd6f85 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; } @@ -318,8 +324,12 @@ test_xi2(Display *display, XIEventMask mask; Window win; int deviceid = -1; + int rc; + + rc = list(display, argc, argv, name, desc); + if (rc != EXIT_SUCCESS) + return rc; - list(display, argc, argv, name, desc); if (argc >= 1) { XIDeviceInfo *info; info = xi2_find_device_info(display, argv[0]); @@ -329,7 +339,7 @@ test_xi2(Display *display, /* Select for motion events */ mask.deviceid = (deviceid == -1) ? XIAllDevices : deviceid; - mask.mask_len = XIMaskLen(XI_RawMotion); + mask.mask_len = XIMaskLen(XI_LASTEVENT); mask.mask = calloc(mask.mask_len, sizeof(char)); XISetMask(mask.mask, XI_ButtonPress); XISetMask(mask.mask, XI_ButtonRelease); @@ -341,6 +351,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 +389,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); @@ -412,6 +432,9 @@ test_xi2(Display *display, case XI_RawButtonPress: case XI_RawButtonRelease: case XI_RawMotion: + case XI_RawTouchBegin: + case XI_RawTouchUpdate: + case XI_RawTouchEnd: print_rawevent(cookie->data); break; case XI_Enter: diff --git a/src/xinput.c b/src/xinput.c index 9460175..80a1789 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);