xkb: use REQUEST_HEAD_STRUCT and REQUEST_FIELD_* macros
Use the new macros to make request struct parsing / field swapping much easier. Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
parent
95301df1a9
commit
71cbcb6f02
|
@ -12,7 +12,6 @@ srcs_xkb = [
|
||||||
'xkbUtils.c',
|
'xkbUtils.c',
|
||||||
'xkbEvents.c',
|
'xkbEvents.c',
|
||||||
'xkbAccessX.c',
|
'xkbAccessX.c',
|
||||||
'xkbSwap.c',
|
|
||||||
'xkbLEDs.c',
|
'xkbLEDs.c',
|
||||||
'xkbInit.c',
|
'xkbInit.c',
|
||||||
'xkbActions.c',
|
'xkbActions.c',
|
||||||
|
|
256
xkb/xkb.c
256
xkb/xkb.c
|
@ -33,6 +33,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <X11/extensions/XKMformat.h>
|
#include <X11/extensions/XKMformat.h>
|
||||||
|
|
||||||
#include "dix/dix_priv.h"
|
#include "dix/dix_priv.h"
|
||||||
|
#include "dix/request_priv.h"
|
||||||
#include "os/osdep.h"
|
#include "os/osdep.h"
|
||||||
#include "xkb/xkbfmisc_priv.h"
|
#include "xkb/xkbfmisc_priv.h"
|
||||||
|
|
||||||
|
@ -172,10 +173,13 @@ _XkbCheckRequestBounds(ClientPtr client, void *stuff, void *from, void *to) {
|
||||||
int
|
int
|
||||||
ProcXkbUseExtension(ClientPtr client)
|
ProcXkbUseExtension(ClientPtr client)
|
||||||
{
|
{
|
||||||
REQUEST(xkbUseExtensionReq);
|
REQUEST_HEAD_STRUCT(xkbUseExtensionReq);
|
||||||
|
REQUEST_SIZE_MATCH(xkbUseExtensionReq);
|
||||||
|
REQUEST_FIELD_CARD16(wantedMajor);
|
||||||
|
REQUEST_FIELD_CARD16(wantedMinor);
|
||||||
|
|
||||||
int supported;
|
int supported;
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH(xkbUseExtensionReq);
|
|
||||||
if (stuff->wantedMajor != SERVER_XKB_MAJOR_VERSION) {
|
if (stuff->wantedMajor != SERVER_XKB_MAJOR_VERSION) {
|
||||||
/* pre-release version 0.65 is compatible with 1.00 */
|
/* pre-release version 0.65 is compatible with 1.00 */
|
||||||
supported = ((SERVER_XKB_MAJOR_VERSION == 1) &&
|
supported = ((SERVER_XKB_MAJOR_VERSION == 1) &&
|
||||||
|
@ -218,14 +222,19 @@ ProcXkbUseExtension(ClientPtr client)
|
||||||
int
|
int
|
||||||
ProcXkbSelectEvents(ClientPtr client)
|
ProcXkbSelectEvents(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_AT_LEAST(xkbSelectEventsReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(affectWhich);
|
||||||
|
REQUEST_FIELD_CARD16(clear);
|
||||||
|
REQUEST_FIELD_CARD16(selectAll);
|
||||||
|
REQUEST_FIELD_CARD16(affectMap);
|
||||||
|
REQUEST_FIELD_CARD16(map);
|
||||||
|
/* more swapping done down below */
|
||||||
|
|
||||||
unsigned legal;
|
unsigned legal;
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
XkbInterestPtr masks;
|
XkbInterestPtr masks;
|
||||||
|
|
||||||
REQUEST(xkbSelectEventsReq);
|
|
||||||
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSelectEventsReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -247,11 +256,7 @@ ProcXkbSelectEvents(ClientPtr client)
|
||||||
masks = XkbAddClientResource((DevicePtr) dev, client, id);
|
masks = XkbAddClientResource((DevicePtr) dev, client, id);
|
||||||
}
|
}
|
||||||
if (masks) {
|
if (masks) {
|
||||||
union {
|
union { CARD8 *c8; CARD16 *c16; CARD32 *c32; } from, to;
|
||||||
CARD8 *c8;
|
|
||||||
CARD16 *c16;
|
|
||||||
CARD32 *c32;
|
|
||||||
} from, to;
|
|
||||||
register unsigned bit, ndx, maskLeft, dataLeft, size;
|
register unsigned bit, ndx, maskLeft, dataLeft, size;
|
||||||
|
|
||||||
from.c8 = (CARD8 *) &stuff[1];
|
from.c8 = (CARD8 *) &stuff[1];
|
||||||
|
@ -342,12 +347,14 @@ ProcXkbSelectEvents(ClientPtr client)
|
||||||
if (dataLeft < (size * 2))
|
if (dataLeft < (size * 2))
|
||||||
return BadLength;
|
return BadLength;
|
||||||
if (size == 2) {
|
if (size == 2) {
|
||||||
|
CLIENT_STRUCT_CARD16_2(&from, c16[0], c16[1]);
|
||||||
CHK_MASK_MATCH(ndx, from.c16[0], from.c16[1]);
|
CHK_MASK_MATCH(ndx, from.c16[0], from.c16[1]);
|
||||||
CHK_MASK_LEGAL(ndx, from.c16[0], legal);
|
CHK_MASK_LEGAL(ndx, from.c16[0], legal);
|
||||||
to.c16[0] &= ~from.c16[0];
|
to.c16[0] &= ~from.c16[0];
|
||||||
to.c16[0] |= (from.c16[0] & from.c16[1]);
|
to.c16[0] |= (from.c16[0] & from.c16[1]);
|
||||||
}
|
}
|
||||||
else if (size == 4) {
|
else if (size == 4) {
|
||||||
|
REQUEST_BUF_CARD32(from.c32, 2);
|
||||||
CHK_MASK_MATCH(ndx, from.c32[0], from.c32[1]);
|
CHK_MASK_MATCH(ndx, from.c32[0], from.c32[1]);
|
||||||
CHK_MASK_LEGAL(ndx, from.c32[0], legal);
|
CHK_MASK_LEGAL(ndx, from.c32[0], legal);
|
||||||
to.c32[0] &= ~from.c32[0];
|
to.c32[0] &= ~from.c32[0];
|
||||||
|
@ -492,13 +499,19 @@ _XkbBell(ClientPtr client, DeviceIntPtr dev, WindowPtr pWin,
|
||||||
int
|
int
|
||||||
ProcXkbBell(ClientPtr client)
|
ProcXkbBell(ClientPtr client)
|
||||||
{
|
{
|
||||||
REQUEST(xkbBellReq);
|
REQUEST_HEAD_STRUCT(xkbBellReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(bellClass);
|
||||||
|
REQUEST_FIELD_CARD16(bellID);
|
||||||
|
REQUEST_FIELD_CARD32(name);
|
||||||
|
REQUEST_FIELD_CARD32(window);
|
||||||
|
REQUEST_FIELD_CARD16(pitch);
|
||||||
|
REQUEST_FIELD_CARD16(duration);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
WindowPtr pWin;
|
WindowPtr pWin;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH(xkbBellReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -580,12 +593,12 @@ ProcXkbBell(ClientPtr client)
|
||||||
int
|
int
|
||||||
ProcXkbGetState(ClientPtr client)
|
ProcXkbGetState(ClientPtr client)
|
||||||
{
|
{
|
||||||
REQUEST(xkbGetStateReq);
|
REQUEST_HEAD_STRUCT(xkbGetStateReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
XkbStateRec *xkb;
|
XkbStateRec *xkb;
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetStateReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -621,6 +634,10 @@ ProcXkbGetState(ClientPtr client)
|
||||||
int
|
int
|
||||||
ProcXkbLatchLockState(ClientPtr client)
|
ProcXkbLatchLockState(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbLatchLockStateReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(groupLatch);
|
||||||
|
|
||||||
int status;
|
int status;
|
||||||
DeviceIntPtr dev, tmpd;
|
DeviceIntPtr dev, tmpd;
|
||||||
XkbStateRec oldState, *newState;
|
XkbStateRec oldState, *newState;
|
||||||
|
@ -628,9 +645,6 @@ ProcXkbLatchLockState(ClientPtr client)
|
||||||
xkbStateNotify sn;
|
xkbStateNotify sn;
|
||||||
XkbEventCauseRec cause;
|
XkbEventCauseRec cause;
|
||||||
|
|
||||||
REQUEST(xkbLatchLockStateReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbLatchLockStateReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -691,12 +705,12 @@ ProcXkbLatchLockState(ClientPtr client)
|
||||||
int
|
int
|
||||||
ProcXkbGetControls(ClientPtr client)
|
ProcXkbGetControls(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbGetControlsReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
|
||||||
XkbControlsPtr xkb;
|
XkbControlsPtr xkb;
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
|
|
||||||
REQUEST(xkbGetControlsReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetControlsReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -766,6 +780,31 @@ ProcXkbGetControls(ClientPtr client)
|
||||||
int
|
int
|
||||||
ProcXkbSetControls(ClientPtr client)
|
ProcXkbSetControls(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbSetControlsReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(affectInternalVMods);
|
||||||
|
REQUEST_FIELD_CARD16(internalVMods);
|
||||||
|
REQUEST_FIELD_CARD16(affectIgnoreLockVMods);
|
||||||
|
REQUEST_FIELD_CARD16(ignoreLockVMods);
|
||||||
|
REQUEST_FIELD_CARD16(axOptions);
|
||||||
|
REQUEST_FIELD_CARD32(affectEnabledCtrls);
|
||||||
|
REQUEST_FIELD_CARD32(enabledCtrls);
|
||||||
|
REQUEST_FIELD_CARD32(changeCtrls);
|
||||||
|
REQUEST_FIELD_CARD16(repeatDelay);
|
||||||
|
REQUEST_FIELD_CARD16(repeatInterval);
|
||||||
|
REQUEST_FIELD_CARD16(slowKeysDelay);
|
||||||
|
REQUEST_FIELD_CARD16(debounceDelay);
|
||||||
|
REQUEST_FIELD_CARD16(mkDelay);
|
||||||
|
REQUEST_FIELD_CARD16(mkInterval);
|
||||||
|
REQUEST_FIELD_CARD16(mkTimeToMax);
|
||||||
|
REQUEST_FIELD_CARD16(mkMaxSpeed);
|
||||||
|
REQUEST_FIELD_CARD16(mkCurve);
|
||||||
|
REQUEST_FIELD_CARD16(axTimeout);
|
||||||
|
REQUEST_FIELD_CARD32(axtCtrlsMask);
|
||||||
|
REQUEST_FIELD_CARD32(axtCtrlsValues);
|
||||||
|
REQUEST_FIELD_CARD16(axtOptsMask);
|
||||||
|
REQUEST_FIELD_CARD16(axtOptsValues);
|
||||||
|
|
||||||
DeviceIntPtr dev, tmpd;
|
DeviceIntPtr dev, tmpd;
|
||||||
XkbSrvInfoPtr xkbi;
|
XkbSrvInfoPtr xkbi;
|
||||||
XkbControlsPtr ctrl;
|
XkbControlsPtr ctrl;
|
||||||
|
@ -774,9 +813,6 @@ ProcXkbSetControls(ClientPtr client)
|
||||||
XkbEventCauseRec cause;
|
XkbEventCauseRec cause;
|
||||||
XkbSrvLedInfoPtr sli;
|
XkbSrvLedInfoPtr sli;
|
||||||
|
|
||||||
REQUEST(xkbSetControlsReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbSetControlsReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -1435,13 +1471,16 @@ XkbAssembleMap(ClientPtr client, XkbDescPtr xkb, xkbGetMapReply rep, char *desc)
|
||||||
int
|
int
|
||||||
ProcXkbGetMap(ClientPtr client)
|
ProcXkbGetMap(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbGetMapReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(full);
|
||||||
|
REQUEST_FIELD_CARD16(partial);
|
||||||
|
REQUEST_FIELD_CARD16(virtualMods);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
XkbDescRec *xkb;
|
XkbDescRec *xkb;
|
||||||
int n, status;
|
int n, status;
|
||||||
|
|
||||||
REQUEST(xkbGetMapReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetMapReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -2682,13 +2721,18 @@ _XkbSetMap(ClientPtr client, DeviceIntPtr dev, xkbSetMapReq * req, char *values)
|
||||||
int
|
int
|
||||||
ProcXkbSetMap(ClientPtr client)
|
ProcXkbSetMap(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_AT_LEAST(xkbSetMapReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(present);
|
||||||
|
REQUEST_FIELD_CARD16(flags);
|
||||||
|
REQUEST_FIELD_CARD16(totalSyms);
|
||||||
|
REQUEST_FIELD_CARD16(totalActs);
|
||||||
|
REQUEST_FIELD_CARD16(virtualMods);
|
||||||
|
|
||||||
DeviceIntPtr dev, master;
|
DeviceIntPtr dev, master;
|
||||||
char *tmp;
|
char *tmp;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
REQUEST(xkbSetMapReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetMapReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -2843,13 +2887,15 @@ XkbAssembleCompatMap(ClientPtr client,
|
||||||
int
|
int
|
||||||
ProcXkbGetCompatMap(ClientPtr client)
|
ProcXkbGetCompatMap(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbGetCompatMapReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(firstSI);
|
||||||
|
REQUEST_FIELD_CARD16(nSI);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
XkbDescPtr xkb;
|
XkbDescPtr xkb;
|
||||||
XkbCompatMapPtr compat;
|
XkbCompatMapPtr compat;
|
||||||
|
|
||||||
REQUEST(xkbGetCompatMapReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetCompatMapReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -3057,13 +3103,15 @@ _XkbSetCompatMap(ClientPtr client, DeviceIntPtr dev,
|
||||||
int
|
int
|
||||||
ProcXkbSetCompatMap(ClientPtr client)
|
ProcXkbSetCompatMap(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_AT_LEAST(xkbSetCompatMapReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(firstSI);
|
||||||
|
REQUEST_FIELD_CARD16(nSI);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
char *data;
|
char *data;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
REQUEST(xkbSetCompatMapReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetCompatMapReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -3120,12 +3168,12 @@ ProcXkbSetCompatMap(ClientPtr client)
|
||||||
int
|
int
|
||||||
ProcXkbGetIndicatorState(ClientPtr client)
|
ProcXkbGetIndicatorState(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbGetIndicatorStateReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
|
||||||
XkbSrvLedInfoPtr sli;
|
XkbSrvLedInfoPtr sli;
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
|
|
||||||
REQUEST(xkbGetIndicatorStateReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetIndicatorStateReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -3206,13 +3254,14 @@ XkbAssembleIndicatorMap(ClientPtr client,
|
||||||
int
|
int
|
||||||
ProcXkbGetIndicatorMap(ClientPtr client)
|
ProcXkbGetIndicatorMap(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbGetIndicatorMapReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD32(which);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
XkbDescPtr xkb;
|
XkbDescPtr xkb;
|
||||||
XkbIndicatorPtr leds;
|
XkbIndicatorPtr leds;
|
||||||
|
|
||||||
REQUEST(xkbGetIndicatorMapReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetIndicatorMapReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -3298,15 +3347,16 @@ _XkbSetIndicatorMap(ClientPtr client, DeviceIntPtr dev,
|
||||||
int
|
int
|
||||||
ProcXkbSetIndicatorMap(ClientPtr client)
|
ProcXkbSetIndicatorMap(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_AT_LEAST(xkbSetIndicatorMapReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD32(which);
|
||||||
|
|
||||||
int i, bit;
|
int i, bit;
|
||||||
int nIndicators;
|
int nIndicators;
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
xkbIndicatorMapWireDesc *from;
|
xkbIndicatorMapWireDesc *from;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
REQUEST(xkbSetIndicatorMapReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetIndicatorMapReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -3364,14 +3414,17 @@ ProcXkbSetIndicatorMap(ClientPtr client)
|
||||||
int
|
int
|
||||||
ProcXkbGetNamedIndicator(ClientPtr client)
|
ProcXkbGetNamedIndicator(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbGetNamedIndicatorReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(ledClass);
|
||||||
|
REQUEST_FIELD_CARD16(ledID);
|
||||||
|
REQUEST_FIELD_CARD32(indicator);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
register int i = 0;
|
register int i = 0;
|
||||||
XkbSrvLedInfoPtr sli;
|
XkbSrvLedInfoPtr sli;
|
||||||
XkbIndicatorMapPtr map = NULL;
|
XkbIndicatorMapPtr map = NULL;
|
||||||
|
|
||||||
REQUEST(xkbGetNamedIndicatorReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetNamedIndicatorReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -3565,14 +3618,19 @@ _XkbSetNamedIndicator(ClientPtr client, DeviceIntPtr dev,
|
||||||
int
|
int
|
||||||
ProcXkbSetNamedIndicator(ClientPtr client)
|
ProcXkbSetNamedIndicator(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbSetNamedIndicatorReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(ledClass);
|
||||||
|
REQUEST_FIELD_CARD16(ledID);
|
||||||
|
REQUEST_FIELD_CARD32(indicator);
|
||||||
|
REQUEST_FIELD_CARD16(virtualMods);
|
||||||
|
REQUEST_FIELD_CARD32(ctrls);
|
||||||
|
|
||||||
int rc;
|
int rc;
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
int led = 0;
|
int led = 0;
|
||||||
XkbIndicatorMapPtr map;
|
XkbIndicatorMapPtr map;
|
||||||
|
|
||||||
REQUEST(xkbSetNamedIndicatorReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbSetNamedIndicatorReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -3881,12 +3939,13 @@ XkbAssembleNames(ClientPtr client, XkbDescPtr xkb, xkbGetNamesReply rep, char *b
|
||||||
int
|
int
|
||||||
ProcXkbGetNames(ClientPtr client)
|
ProcXkbGetNames(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbGetNamesReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD32(which);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
XkbDescPtr xkb;
|
XkbDescPtr xkb;
|
||||||
|
|
||||||
REQUEST(xkbGetNamesReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetNamesReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -4333,14 +4392,18 @@ _XkbSetNames(ClientPtr client, DeviceIntPtr dev, xkbSetNamesReq * stuff)
|
||||||
int
|
int
|
||||||
ProcXkbSetNames(ClientPtr client)
|
ProcXkbSetNames(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_AT_LEAST(xkbSetNamesReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(virtualMods);
|
||||||
|
REQUEST_FIELD_CARD32(which);
|
||||||
|
REQUEST_FIELD_CARD32(indicators);
|
||||||
|
REQUEST_FIELD_CARD16(totalKTLevelNames);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
CARD32 *tmp;
|
CARD32 *tmp;
|
||||||
Atom bad;
|
Atom bad;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
REQUEST(xkbSetNamesReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetNamesReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -4942,14 +5005,15 @@ XkbAssembleGeometry(ClientPtr client,
|
||||||
int
|
int
|
||||||
ProcXkbGetGeometry(ClientPtr client)
|
ProcXkbGetGeometry(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbGetGeometryReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD32(name);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
XkbGeometryPtr geom;
|
XkbGeometryPtr geom;
|
||||||
Bool shouldFree;
|
Bool shouldFree;
|
||||||
Status status;
|
Status status;
|
||||||
|
|
||||||
REQUEST(xkbGetGeometryReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetGeometryReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -5546,12 +5610,19 @@ _XkbSetGeometry(ClientPtr client, DeviceIntPtr dev, xkbSetGeometryReq * stuff)
|
||||||
int
|
int
|
||||||
ProcXkbSetGeometry(ClientPtr client)
|
ProcXkbSetGeometry(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_AT_LEAST(xkbSetGeometryReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD32(name);
|
||||||
|
REQUEST_FIELD_CARD16(widthMM);
|
||||||
|
REQUEST_FIELD_CARD16(heightMM);
|
||||||
|
REQUEST_FIELD_CARD16(nProperties);
|
||||||
|
REQUEST_FIELD_CARD16(nColors);
|
||||||
|
REQUEST_FIELD_CARD16(nDoodads);
|
||||||
|
REQUEST_FIELD_CARD16(nKeyAliases);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
REQUEST(xkbSetGeometryReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetGeometryReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -5583,13 +5654,18 @@ ProcXkbSetGeometry(ClientPtr client)
|
||||||
int
|
int
|
||||||
ProcXkbPerClientFlags(ClientPtr client)
|
ProcXkbPerClientFlags(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbPerClientFlagsReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD32(change);
|
||||||
|
REQUEST_FIELD_CARD32(value);
|
||||||
|
REQUEST_FIELD_CARD32(ctrlsToChange);
|
||||||
|
REQUEST_FIELD_CARD32(autoCtrls);
|
||||||
|
REQUEST_FIELD_CARD32(autoCtrlValues);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
XkbInterestPtr interest;
|
XkbInterestPtr interest;
|
||||||
Mask access_mode = DixGetAttrAccess | DixSetAttrAccess;
|
Mask access_mode = DixGetAttrAccess | DixSetAttrAccess;
|
||||||
|
|
||||||
REQUEST(xkbPerClientFlagsReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbPerClientFlagsReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -5728,15 +5804,16 @@ GetComponentSpec(ClientPtr client, xkbGetKbdByNameReq *stuff,
|
||||||
int
|
int
|
||||||
ProcXkbListComponents(ClientPtr client)
|
ProcXkbListComponents(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_AT_LEAST(xkbListComponentsReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(maxNames);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
unsigned len;
|
unsigned len;
|
||||||
unsigned char *str;
|
unsigned char *str;
|
||||||
uint8_t size;
|
uint8_t size;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
REQUEST(xkbListComponentsReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbListComponentsReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -5815,6 +5892,11 @@ XkbConvertGetByNameComponents(Bool toXkm, unsigned orig)
|
||||||
int
|
int
|
||||||
ProcXkbGetKbdByName(ClientPtr client)
|
ProcXkbGetKbdByName(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_AT_LEAST(xkbGetKbdByNameReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(want);
|
||||||
|
REQUEST_FIELD_CARD16(need);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
DeviceIntPtr tmpd;
|
DeviceIntPtr tmpd;
|
||||||
DeviceIntPtr master;
|
DeviceIntPtr master;
|
||||||
|
@ -5830,9 +5912,6 @@ ProcXkbGetKbdByName(ClientPtr client)
|
||||||
XkbSrvLedInfoPtr sli;
|
XkbSrvLedInfoPtr sli;
|
||||||
Mask access_mode = DixGetAttrAccess | DixManageAccess;
|
Mask access_mode = DixGetAttrAccess | DixManageAccess;
|
||||||
|
|
||||||
REQUEST(xkbGetKbdByNameReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbGetKbdByNameReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -6423,15 +6502,18 @@ FillDeviceLedFBs(DeviceIntPtr dev, int class, int id, unsigned wantLength,
|
||||||
int
|
int
|
||||||
ProcXkbGetDeviceInfo(ClientPtr client)
|
ProcXkbGetDeviceInfo(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_STRUCT(xkbGetDeviceInfoReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(wanted);
|
||||||
|
REQUEST_FIELD_CARD16(ledClass);
|
||||||
|
REQUEST_FIELD_CARD16(ledID);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
int status;
|
int status;
|
||||||
unsigned length, nameLen;
|
unsigned length, nameLen;
|
||||||
CARD16 ledClass, ledID;
|
CARD16 ledClass, ledID;
|
||||||
unsigned wanted;
|
unsigned wanted;
|
||||||
|
|
||||||
REQUEST(xkbGetDeviceInfoReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetDeviceInfoReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -6843,12 +6925,14 @@ _XkbSetDeviceInfo(ClientPtr client, DeviceIntPtr dev,
|
||||||
int
|
int
|
||||||
ProcXkbSetDeviceInfo(ClientPtr client)
|
ProcXkbSetDeviceInfo(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_AT_LEAST(xkbSetDeviceInfoReq);
|
||||||
|
REQUEST_FIELD_CARD16(deviceSpec);
|
||||||
|
REQUEST_FIELD_CARD16(change);
|
||||||
|
REQUEST_FIELD_CARD16(nDeviceLedFBs);
|
||||||
|
|
||||||
DeviceIntPtr dev;
|
DeviceIntPtr dev;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
REQUEST(xkbSetDeviceInfoReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetDeviceInfoReq);
|
|
||||||
|
|
||||||
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
if (!(client->xkbClientFlags & _XkbClientInitialized))
|
||||||
return BadAccess;
|
return BadAccess;
|
||||||
|
|
||||||
|
@ -6911,12 +6995,16 @@ ProcXkbSetDeviceInfo(ClientPtr client)
|
||||||
int
|
int
|
||||||
ProcXkbSetDebuggingFlags(ClientPtr client)
|
ProcXkbSetDebuggingFlags(ClientPtr client)
|
||||||
{
|
{
|
||||||
|
REQUEST_HEAD_AT_LEAST(xkbSetDebuggingFlagsReq);
|
||||||
|
REQUEST_FIELD_CARD32(affectFlags);
|
||||||
|
REQUEST_FIELD_CARD32(flags);
|
||||||
|
REQUEST_FIELD_CARD32(affectCtrls);
|
||||||
|
REQUEST_FIELD_CARD32(ctrls);
|
||||||
|
REQUEST_FIELD_CARD16(msgLength);
|
||||||
|
|
||||||
CARD32 newFlags, newCtrls, extraLength;
|
CARD32 newFlags, newCtrls, extraLength;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
REQUEST(xkbSetDebuggingFlagsReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetDebuggingFlagsReq);
|
|
||||||
|
|
||||||
rc = XaceHookServerAccess(client, DixDebugAccess);
|
rc = XaceHookServerAccess(client, DixDebugAccess);
|
||||||
if (rc != Success)
|
if (rc != Success)
|
||||||
return rc;
|
return rc;
|
||||||
|
@ -7061,7 +7149,7 @@ XkbExtensionInit(void)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ((extEntry = AddExtension(XkbName, XkbNumberEvents, XkbNumberErrors,
|
if ((extEntry = AddExtension(XkbName, XkbNumberEvents, XkbNumberErrors,
|
||||||
ProcXkbDispatch, SProcXkbDispatch,
|
ProcXkbDispatch, ProcXkbDispatch,
|
||||||
NULL, StandardMinorOpcode))) {
|
NULL, StandardMinorOpcode))) {
|
||||||
XkbReqCode = (unsigned char) extEntry->base;
|
XkbReqCode = (unsigned char) extEntry->base;
|
||||||
XkbEventBase = (unsigned char) extEntry->eventBase;
|
XkbEventBase = (unsigned char) extEntry->eventBase;
|
||||||
|
|
486
xkb/xkbSwap.c
486
xkb/xkbSwap.c
|
@ -1,486 +0,0 @@
|
||||||
/************************************************************
|
|
||||||
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and distribute this
|
|
||||||
software and its documentation for any purpose and without
|
|
||||||
fee is hereby granted, provided that the above copyright
|
|
||||||
notice appear in all copies and that both that copyright
|
|
||||||
notice and this permission notice appear in supporting
|
|
||||||
documentation, and that the name of Silicon Graphics not be
|
|
||||||
used in advertising or publicity pertaining to distribution
|
|
||||||
of the software without specific prior written permission.
|
|
||||||
Silicon Graphics makes no representation about the suitability
|
|
||||||
of this software for any purpose. It is provided "as is"
|
|
||||||
without any express or implied warranty.
|
|
||||||
|
|
||||||
SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
|
|
||||||
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
||||||
AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
|
|
||||||
GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
|
|
||||||
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
|
|
||||||
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
|
|
||||||
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
|
|
||||||
THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
********************************************************/
|
|
||||||
|
|
||||||
#include <dix-config.h>
|
|
||||||
|
|
||||||
#include "stdio.h"
|
|
||||||
#include <X11/X.h>
|
|
||||||
#include <X11/Xproto.h>
|
|
||||||
#include "misc.h"
|
|
||||||
#include "inputstr.h"
|
|
||||||
#include <xkbsrv.h>
|
|
||||||
#include "xkbstr.h"
|
|
||||||
#include "extnsionst.h"
|
|
||||||
#include "xkb-procs.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* REQUEST SWAPPING
|
|
||||||
*/
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbUseExtension(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbUseExtensionReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbUseExtensionReq);
|
|
||||||
swaps(&stuff->wantedMajor);
|
|
||||||
swaps(&stuff->wantedMinor);
|
|
||||||
return ProcXkbUseExtension(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbSelectEvents(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbSelectEventsReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSelectEventsReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->affectWhich);
|
|
||||||
swaps(&stuff->clear);
|
|
||||||
swaps(&stuff->selectAll);
|
|
||||||
swaps(&stuff->affectMap);
|
|
||||||
swaps(&stuff->map);
|
|
||||||
if ((stuff->affectWhich & (~XkbMapNotifyMask)) != 0) {
|
|
||||||
union {
|
|
||||||
BOOL *b;
|
|
||||||
CARD8 *c8;
|
|
||||||
CARD16 *c16;
|
|
||||||
CARD32 *c32;
|
|
||||||
} from;
|
|
||||||
register unsigned bit, ndx, maskLeft, dataLeft;
|
|
||||||
|
|
||||||
from.c8 = (CARD8 *) &stuff[1];
|
|
||||||
dataLeft = (client->req_len * 4) - sizeof(xkbSelectEventsReq);
|
|
||||||
maskLeft = (stuff->affectWhich & (~XkbMapNotifyMask));
|
|
||||||
for (ndx = 0, bit = 1; (maskLeft != 0); ndx++, bit <<= 1) {
|
|
||||||
if (((bit & maskLeft) == 0) || (ndx == XkbMapNotify))
|
|
||||||
continue;
|
|
||||||
maskLeft &= ~bit;
|
|
||||||
if ((stuff->selectAll & bit) || (stuff->clear & bit))
|
|
||||||
continue;
|
|
||||||
switch (ndx) {
|
|
||||||
// CARD16
|
|
||||||
case XkbNewKeyboardNotify:
|
|
||||||
case XkbStateNotify:
|
|
||||||
case XkbNamesNotify:
|
|
||||||
case XkbAccessXNotify:
|
|
||||||
case XkbExtensionDeviceNotify:
|
|
||||||
if (dataLeft < sizeof(CARD16)*2)
|
|
||||||
return BadLength;
|
|
||||||
swaps(&from.c16[0]);
|
|
||||||
swaps(&from.c16[1]);
|
|
||||||
from.c8 += sizeof(CARD16)*2;
|
|
||||||
dataLeft -= sizeof(CARD16)*2;
|
|
||||||
break;
|
|
||||||
// CARD32
|
|
||||||
case XkbControlsNotify:
|
|
||||||
case XkbIndicatorStateNotify:
|
|
||||||
case XkbIndicatorMapNotify:
|
|
||||||
if (dataLeft < sizeof(CARD32)*2)
|
|
||||||
return BadLength;
|
|
||||||
swapl(&from.c32[0]);
|
|
||||||
swapl(&from.c32[1]);
|
|
||||||
from.c8 += sizeof(CARD32)*2;
|
|
||||||
dataLeft -= sizeof(CARD32)*2;
|
|
||||||
break;
|
|
||||||
// CARD8
|
|
||||||
case XkbBellNotify:
|
|
||||||
case XkbActionMessage:
|
|
||||||
case XkbCompatMapNotify:
|
|
||||||
if (dataLeft < 2)
|
|
||||||
return BadLength;
|
|
||||||
from.c8 += 4;
|
|
||||||
dataLeft -= 4;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
client->errorValue = _XkbErrCode2(0x1, bit);
|
|
||||||
return BadValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (dataLeft > 2) {
|
|
||||||
ErrorF("[xkb] Extra data (%d bytes) after SelectEvents\n",
|
|
||||||
dataLeft);
|
|
||||||
return BadLength;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ProcXkbSelectEvents(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbBell(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbBellReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbBellReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->bellClass);
|
|
||||||
swaps(&stuff->bellID);
|
|
||||||
swapl(&stuff->name);
|
|
||||||
swapl(&stuff->window);
|
|
||||||
swaps(&stuff->pitch);
|
|
||||||
swaps(&stuff->duration);
|
|
||||||
return ProcXkbBell(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbGetState(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbGetStateReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetStateReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
return ProcXkbGetState(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbLatchLockState(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbLatchLockStateReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbLatchLockStateReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->groupLatch);
|
|
||||||
return ProcXkbLatchLockState(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbGetControls(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbGetControlsReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetControlsReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
return ProcXkbGetControls(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbSetControls(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbSetControlsReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbSetControlsReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->affectInternalVMods);
|
|
||||||
swaps(&stuff->internalVMods);
|
|
||||||
swaps(&stuff->affectIgnoreLockVMods);
|
|
||||||
swaps(&stuff->ignoreLockVMods);
|
|
||||||
swaps(&stuff->axOptions);
|
|
||||||
swapl(&stuff->affectEnabledCtrls);
|
|
||||||
swapl(&stuff->enabledCtrls);
|
|
||||||
swapl(&stuff->changeCtrls);
|
|
||||||
swaps(&stuff->repeatDelay);
|
|
||||||
swaps(&stuff->repeatInterval);
|
|
||||||
swaps(&stuff->slowKeysDelay);
|
|
||||||
swaps(&stuff->debounceDelay);
|
|
||||||
swaps(&stuff->mkDelay);
|
|
||||||
swaps(&stuff->mkInterval);
|
|
||||||
swaps(&stuff->mkTimeToMax);
|
|
||||||
swaps(&stuff->mkMaxSpeed);
|
|
||||||
swaps(&stuff->mkCurve);
|
|
||||||
swaps(&stuff->axTimeout);
|
|
||||||
swapl(&stuff->axtCtrlsMask);
|
|
||||||
swapl(&stuff->axtCtrlsValues);
|
|
||||||
swaps(&stuff->axtOptsMask);
|
|
||||||
swaps(&stuff->axtOptsValues);
|
|
||||||
return ProcXkbSetControls(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbGetMap(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbGetMapReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetMapReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->full);
|
|
||||||
swaps(&stuff->partial);
|
|
||||||
swaps(&stuff->virtualMods);
|
|
||||||
return ProcXkbGetMap(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbSetMap(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbSetMapReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetMapReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->present);
|
|
||||||
swaps(&stuff->flags);
|
|
||||||
swaps(&stuff->totalSyms);
|
|
||||||
swaps(&stuff->totalActs);
|
|
||||||
swaps(&stuff->virtualMods);
|
|
||||||
return ProcXkbSetMap(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbGetCompatMap(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbGetCompatMapReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetCompatMapReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->firstSI);
|
|
||||||
swaps(&stuff->nSI);
|
|
||||||
return ProcXkbGetCompatMap(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbSetCompatMap(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbSetCompatMapReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetCompatMapReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->firstSI);
|
|
||||||
swaps(&stuff->nSI);
|
|
||||||
return ProcXkbSetCompatMap(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbGetIndicatorState(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbGetIndicatorStateReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetIndicatorStateReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
return ProcXkbGetIndicatorState(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbGetIndicatorMap(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbGetIndicatorMapReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetIndicatorMapReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swapl(&stuff->which);
|
|
||||||
return ProcXkbGetIndicatorMap(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbSetIndicatorMap(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbSetIndicatorMapReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetIndicatorMapReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swapl(&stuff->which);
|
|
||||||
return ProcXkbSetIndicatorMap(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbGetNamedIndicator(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbGetNamedIndicatorReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetNamedIndicatorReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->ledClass);
|
|
||||||
swaps(&stuff->ledID);
|
|
||||||
swapl(&stuff->indicator);
|
|
||||||
return ProcXkbGetNamedIndicator(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbSetNamedIndicator(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbSetNamedIndicatorReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbSetNamedIndicatorReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->ledClass);
|
|
||||||
swaps(&stuff->ledID);
|
|
||||||
swapl(&stuff->indicator);
|
|
||||||
swaps(&stuff->virtualMods);
|
|
||||||
swapl(&stuff->ctrls);
|
|
||||||
return ProcXkbSetNamedIndicator(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbGetNames(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbGetNamesReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetNamesReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swapl(&stuff->which);
|
|
||||||
return ProcXkbGetNames(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbSetNames(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbSetNamesReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetNamesReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->virtualMods);
|
|
||||||
swapl(&stuff->which);
|
|
||||||
swapl(&stuff->indicators);
|
|
||||||
swaps(&stuff->totalKTLevelNames);
|
|
||||||
return ProcXkbSetNames(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbGetGeometry(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbGetGeometryReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetGeometryReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swapl(&stuff->name);
|
|
||||||
return ProcXkbGetGeometry(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbSetGeometry(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbSetGeometryReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetGeometryReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swapl(&stuff->name);
|
|
||||||
swaps(&stuff->widthMM);
|
|
||||||
swaps(&stuff->heightMM);
|
|
||||||
swaps(&stuff->nProperties);
|
|
||||||
swaps(&stuff->nColors);
|
|
||||||
swaps(&stuff->nDoodads);
|
|
||||||
swaps(&stuff->nKeyAliases);
|
|
||||||
return ProcXkbSetGeometry(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbPerClientFlags(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbPerClientFlagsReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbPerClientFlagsReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swapl(&stuff->change);
|
|
||||||
swapl(&stuff->value);
|
|
||||||
swapl(&stuff->ctrlsToChange);
|
|
||||||
swapl(&stuff->autoCtrls);
|
|
||||||
swapl(&stuff->autoCtrlValues);
|
|
||||||
return ProcXkbPerClientFlags(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbListComponents(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbListComponentsReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbListComponentsReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->maxNames);
|
|
||||||
return ProcXkbListComponents(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbGetKbdByName(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbGetKbdByNameReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbGetKbdByNameReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->want);
|
|
||||||
swaps(&stuff->need);
|
|
||||||
return ProcXkbGetKbdByName(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbGetDeviceInfo(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbGetDeviceInfoReq);
|
|
||||||
REQUEST_SIZE_MATCH(xkbGetDeviceInfoReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->wanted);
|
|
||||||
swaps(&stuff->ledClass);
|
|
||||||
swaps(&stuff->ledID);
|
|
||||||
return ProcXkbGetDeviceInfo(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbSetDeviceInfo(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbSetDeviceInfoReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetDeviceInfoReq);
|
|
||||||
swaps(&stuff->deviceSpec);
|
|
||||||
swaps(&stuff->change);
|
|
||||||
swaps(&stuff->nDeviceLedFBs);
|
|
||||||
return ProcXkbSetDeviceInfo(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _X_COLD
|
|
||||||
SProcXkbSetDebuggingFlags(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xkbSetDebuggingFlagsReq);
|
|
||||||
REQUEST_AT_LEAST_SIZE(xkbSetDebuggingFlagsReq);
|
|
||||||
swapl(&stuff->affectFlags);
|
|
||||||
swapl(&stuff->flags);
|
|
||||||
swapl(&stuff->affectCtrls);
|
|
||||||
swapl(&stuff->ctrls);
|
|
||||||
swaps(&stuff->msgLength);
|
|
||||||
return ProcXkbSetDebuggingFlags(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
int _X_COLD
|
|
||||||
SProcXkbDispatch(ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xReq);
|
|
||||||
switch (stuff->data) {
|
|
||||||
case X_kbUseExtension:
|
|
||||||
return SProcXkbUseExtension(client);
|
|
||||||
case X_kbSelectEvents:
|
|
||||||
return SProcXkbSelectEvents(client);
|
|
||||||
case X_kbBell:
|
|
||||||
return SProcXkbBell(client);
|
|
||||||
case X_kbGetState:
|
|
||||||
return SProcXkbGetState(client);
|
|
||||||
case X_kbLatchLockState:
|
|
||||||
return SProcXkbLatchLockState(client);
|
|
||||||
case X_kbGetControls:
|
|
||||||
return SProcXkbGetControls(client);
|
|
||||||
case X_kbSetControls:
|
|
||||||
return SProcXkbSetControls(client);
|
|
||||||
case X_kbGetMap:
|
|
||||||
return SProcXkbGetMap(client);
|
|
||||||
case X_kbSetMap:
|
|
||||||
return SProcXkbSetMap(client);
|
|
||||||
case X_kbGetCompatMap:
|
|
||||||
return SProcXkbGetCompatMap(client);
|
|
||||||
case X_kbSetCompatMap:
|
|
||||||
return SProcXkbSetCompatMap(client);
|
|
||||||
case X_kbGetIndicatorState:
|
|
||||||
return SProcXkbGetIndicatorState(client);
|
|
||||||
case X_kbGetIndicatorMap:
|
|
||||||
return SProcXkbGetIndicatorMap(client);
|
|
||||||
case X_kbSetIndicatorMap:
|
|
||||||
return SProcXkbSetIndicatorMap(client);
|
|
||||||
case X_kbGetNamedIndicator:
|
|
||||||
return SProcXkbGetNamedIndicator(client);
|
|
||||||
case X_kbSetNamedIndicator:
|
|
||||||
return SProcXkbSetNamedIndicator(client);
|
|
||||||
case X_kbGetNames:
|
|
||||||
return SProcXkbGetNames(client);
|
|
||||||
case X_kbSetNames:
|
|
||||||
return SProcXkbSetNames(client);
|
|
||||||
case X_kbGetGeometry:
|
|
||||||
return SProcXkbGetGeometry(client);
|
|
||||||
case X_kbSetGeometry:
|
|
||||||
return SProcXkbSetGeometry(client);
|
|
||||||
case X_kbPerClientFlags:
|
|
||||||
return SProcXkbPerClientFlags(client);
|
|
||||||
case X_kbListComponents:
|
|
||||||
return SProcXkbListComponents(client);
|
|
||||||
case X_kbGetKbdByName:
|
|
||||||
return SProcXkbGetKbdByName(client);
|
|
||||||
case X_kbGetDeviceInfo:
|
|
||||||
return SProcXkbGetDeviceInfo(client);
|
|
||||||
case X_kbSetDeviceInfo:
|
|
||||||
return SProcXkbSetDeviceInfo(client);
|
|
||||||
case X_kbSetDebuggingFlags:
|
|
||||||
return SProcXkbSetDebuggingFlags(client);
|
|
||||||
default:
|
|
||||||
return BadRequest;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue