summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter@cs.unisa.edu.au>2007-02-22 20:03:36 +1030
committerPeter Hutterer <whot@hyena.localdomain>2007-02-22 20:03:36 +1030
commitde6f3fcaffe204e8f7c811f8a1599e9ed0999f9c (patch)
tree20fe900bf46515e17f2f648b11fcfc9ca21c2b0b
parentbb5c144c53fcb03c56b247b439915d72ad284856 (diff)
add access control requests.
fix wrong field lengths for RegisterPairing request and reply.
-rw-r--r--XI.h21
-rw-r--r--XInput.h43
-rw-r--r--XIproto.h88
3 files changed, 147 insertions, 5 deletions
diff --git a/XI.h b/XI.h
index 11a1416..d0bfc92 100644
--- 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
diff --git a/XInput.h b/XInput.h
index a954ab1..df47da2 100644
--- 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_ */
diff --git a/XIproto.h b/XIproto.h
index 7a18c2b..418be4b 100644
--- 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