diff options
author | Peter Hutterer <peter@cs.unisa.edu.au> | 2007-02-22 20:03:36 +1030 |
---|---|---|
committer | Peter Hutterer <whot@hyena.localdomain> | 2007-02-22 20:03:36 +1030 |
commit | de6f3fcaffe204e8f7c811f8a1599e9ed0999f9c (patch) | |
tree | 20fe900bf46515e17f2f648b11fcfc9ca21c2b0b | |
parent | bb5c144c53fcb03c56b247b439915d72ad284856 (diff) |
add access control requests.
fix wrong field lengths for RegisterPairing request and reply.
-rw-r--r-- | XI.h | 21 | ||||
-rw-r--r-- | XInput.h | 43 | ||||
-rw-r--r-- | XIproto.h | 88 |
3 files changed, 147 insertions, 5 deletions
@@ -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 @@ -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_ */ @@ -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 |