diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2012-01-12 16:01:28 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2012-01-12 16:01:28 +1000 |
commit | fb6f41ced063c558f7bf8f10898f027612e2ad34 (patch) | |
tree | 10313d8e630f48c9e13d1c0d27df1aa44f621488 | |
parent | c690fad9aa0dbc9d574d25e014d1dc15281b0870 (diff) | |
parent | 7f2f41d2c8fa7dad9596c34160a85fea026afccb (diff) |
Merge branch 'multitouch'
-rw-r--r-- | configure.ac | 3 | ||||
-rw-r--r-- | src/list.c | 11 | ||||
-rw-r--r-- | src/test_xi2.c | 27 | ||||
-rw-r--r-- | src/xinput.c | 2 |
4 files changed, 41 insertions, 2 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 @@ -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 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); |