add access control requests.
authorPeter Hutterer <peter@cs.unisa.edu.au>
Thu, 22 Feb 2007 09:33:36 +0000 (20:03 +1030)
committerPeter Hutterer <whot@hyena.localdomain>
Thu, 22 Feb 2007 09:33:36 +0000 (20:03 +1030)
fix wrong field lengths for RegisterPairing request and reply.

XI.h
XInput.h
XIproto.h

diff --git a/XI.h b/XI.h
index 11a1416..d0bfc92 100644 (file)
--- a/XI.h
+++ b/XI.h
@@ -114,9 +114,14 @@ SOFTWARE.
 #define sz_xQueryDevicePointerReply             32
 #define sz_xWarpDevicePointerReq                28
 #define sz_xChangeDeviceCursorReq               16
-#define sz_xChangePointerKeyboardPairingReq      8
-#define sz_xRegisterPairingClientReq             8
+#define sz_xChangePointerKeyboardPairingReq     8
+#define sz_xRegisterPairingClientReq            8
 #define sz_xRegisterPairingClientReply          32 
+#define sz_xGrabAccessControlReq                8
+#define sz_xGrabAccessControlReply              32
+#define sz_xChangeWindowAccessReq               12 
+#define sz_xQueryWindowAccessReq                8
+#define sz_xQueryWindowAccessReply              32
 
 #define INAME                  "XInputExtension"
 
@@ -264,6 +269,18 @@ SOFTWARE.
 #define _deviceEnter             0
 #define _deviceLeave             1
 
+/* Flags for ChangeWindowAccess defaultRule. Pick one. */
+#define WindowAccessNoRule       0
+#define WindowAccessKeepRule     1
+#define WindowAccessDenyAll      2
+
+/* Flags for ChangeWindowAccess. */
+#define WindowAccessClearNone    0
+#define WindowAccessClearPerm   (1)
+#define WindowAccessClearDeny   (1 << 1)
+#define WindowAccessClearRule   (1 << 2)
+#define WindowAccessClearAll \
+    WindowAccessClearPerm | WindowAccessClearDeny | WindowAccessClearRule
 
 #define XI_BadDevice   0
 #define XI_BadEvent    1
index a954ab1..df47da2 100644 (file)
--- a/XInput.h
+++ b/XInput.h
@@ -1309,6 +1309,49 @@ extern Bool     XUnregisterPairingClient(
     Display*            /* display */
 );
 
+extern Bool     XGrabAccessControl(
+    Display*            /* display */
+);
+
+extern Bool     XUngrabAccessControl(
+    Display*            /* display */
+);
+
+extern Bool     XClearAccessControl(
+    Display*            /* display*/,
+    int                 /* what */
+);
+
+extern Bool     XChangeAcccessRule(
+    Display*            /* display */,
+    int                 /* rule */
+);
+
+extern Status   XPermitDevices(
+    Display*            /* display */,
+    Window              /* win */,
+    char*               /* deviceids */,
+    int                 /* ndevices */
+);
+
+extern Status   XDenyDevices(
+    Display*            /* display */,
+    Window              /* win */,
+    char*               /* deviceids */,
+    int                 /* ndevices */
+);
+
+extern Status   XQueryWindowAccess(
+    Display*            /* dpy */,
+    Window              /* win */,
+    int*                /* rule */,
+    char**               /* permdevices */,
+    int*                /* nperm */,
+    char**               /* denydevices */,
+    int*                /* ndeny */
+);
+
+
 _XFUNCPROTOEND
 
 #endif /* _XINPUT_H_ */
index 7a18c2b..418be4b 100644 (file)
--- a/XIproto.h
+++ b/XIproto.h
@@ -164,6 +164,9 @@ struct tmask
 #define X_ChangeDeviceCursor            38
 #define X_ChangePointerKeyboardPairing  39
 #define X_RegisterPairingClient         40
+#define X_GrabAccessControl             41
+#define X_ChangeWindowAccess            42
+#define X_QueryWindowAccess             43
 
 /*********************************************************
  *
@@ -1513,7 +1516,7 @@ typedef struct {
 
 /**********************************************************
  *
- * ChangePointerKeyboardPairing.
+ * RegisterPairingClient.
  *
  */
 
@@ -1523,14 +1526,14 @@ typedef struct {
     CARD16      length B16;
     CARD8       disable;        /* True to disable registration */
     CARD8       pad0;
-    CARD16      pad1;
+    CARD16      pad1 B16;
 } xRegisterPairingClientReq;
 
 typedef struct {
     CARD8       repType;        /* input extension major code */
     CARD8       RepType;        /* always X_RegisterPairingClient */
     CARD16     sequenceNumber B16;
-    CARD32      length B16;     /* 0 */
+    CARD32      length B32;     /* 0 */
     CARD8       success;        /* True on success, false otherwise */
     CARD8       pad0;
     CARD16      pad1 B16;
@@ -1543,6 +1546,85 @@ typedef struct {
 
 /**********************************************************
  *
+ * GrabAccessControl.
+ *
+ */
+
+typedef struct {
+    CARD8       reqType;        /* input extension major code */
+    CARD8       ReqType;        /* always X_GrabAccessControl */
+    CARD16      length B16;     
+    BOOL        ungrab;         /* true if request is ungrab request */
+    CARD8       pad0, pad1, pad2;
+} xGrabAccessControlReq;
+
+typedef struct {
+    CARD8       repType;        /* input extension major code */
+    CARD8       RepType;        /* always X_GrabAccessControl */
+    CARD16      sequenceNumber B16;
+    CARD32      length B32;
+    CARD8       success;
+    CARD8       pad0,
+                pad1,
+                pad2;
+    CARD32      pad3 B32;
+    CARD32      pad4 B32;
+    CARD32      pad5 B32;
+    CARD32      pad6 B32;
+    CARD32      pad7 B32;
+} xGrabAccessControlReply; 
+
+/**********************************************************
+ *
+ * ChangeWindowAccess.
+ *
+ */
+
+typedef struct {
+    CARD8       reqType;        /* input extension major opcode */
+    CARD8       ReqType;        /* Always X_ChangeWindowAccess */
+    CARD16      length B16;
+    Window      win B32;
+    CARD8       npermit;       /* number of devices for permit rule */
+    CARD8       ndeny;         /* number of devices for deny rule */
+    CARD8       defaultRule;   /* default rule */
+    CARD8       clear;         /* WindowAccessClearPerm,
+                                  WindowAccessClearDeny,
+                                  WindowAccessClearRule,
+                                  WindowAccessClearAll */
+} xChangeWindowAccessReq;
+
+/**********************************************************
+ *
+ * QueryAccessToWindow.
+ *
+ */
+
+typedef struct {
+    CARD8       reqType;        /* input extension major code */
+    CARD8       ReqType;        /* always X_RegisterAccessControl */
+    CARD16      length B16;
+    Window      win B32;
+} xQueryWindowAccessReq;
+
+typedef struct {
+    CARD8       repType;        /* input extension major opcode */
+    CARD8       RepType;        /* Always X_ChangeAccessToWindow */
+    CARD16      sequenceNumber B16;
+    CARD32      length B32;
+    CARD8       defaultRule;    /* default rule setting */
+    CARD8       npermit;        /* number of devices in permit */
+    CARD8       ndeny;          /* number of devices in deny */
+    CARD8       pad0; 
+    CARD32      pad1 B32;
+    CARD32      pad2 B32;
+    CARD32      pad3 B32;
+    CARD32      pad4 B32;
+    CARD32      pad5 B32;
+} xQueryWindowAccessReply;
+
+/**********************************************************
+ *
  * Input extension events.
  *
  * DeviceValuator