add access control requests.

fix wrong field lengths for RegisterPairing request and reply.
This commit is contained in:
Peter Hutterer 2007-02-22 20:03:36 +10:30 committed by Peter Hutterer
parent bb5c144c53
commit de6f3fcaff
3 changed files with 147 additions and 5 deletions

21
XI.h
View file

@ -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

View file

@ -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_ */

View file

@ -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;
@ -1541,6 +1544,85 @@ typedef struct {
CARD32 pad6 B32;
} xRegisterPairingClientReply;
/**********************************************************
*
* 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.