]> diplodocus.org Git - xorg-xinput/commitdiff
Merge branch 'multitouch'
authorPeter Hutterer <peter.hutterer@who-t.net>
Thu, 12 Jan 2012 06:01:28 +0000 (16:01 +1000)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 12 Jan 2012 06:01:28 +0000 (16:01 +1000)
configure.ac
src/list.c
src/test_xi2.c
src/xinput.c

index 5a648375bb54f9f8ceb90e52f15b98fe3316ba9c..ea2b5bb494f00685fca1a3e05e49103638da5fc6 100644 (file)
@@ -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
index 3be20eb683d3bebfe55c0d6183a4af1df95e7965..cc39bd3a9877871d42c88687047fd3d9dd53c2ab 100644 (file)
@@ -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
         }
     }
index 4a6c3b665edb2d3314cbb3539c131978afad046d..7fd6f8500574925a6ea6089656ddf20260572bf9 100644 (file)
@@ -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:
index 946017571c85cf215400454182a0066e1f89bcca..80a1789cee6e980890457b283339bf32c2bc636b 100644 (file)
@@ -197,6 +197,8 @@ xinput_version(Display      *display)
 
 #if HAVE_XI21
         min = 1;
+#elif HAVE_XI22
+        min = 2;
 #endif
 
         XIQueryVersion(display, &maj, &min);