aboutsummaryrefslogtreecommitdiff
path: root/libX11/src/xkb/XKBExtDev.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-08-26 09:04:58 +0200
committermarha <marha@users.sourceforge.net>2013-08-26 09:04:58 +0200
commit5ee5b91b019005aa27273dff01388a68c12be293 (patch)
treed2db8b0d1533d2eea8bfe77f8a6b3d52fa3f633e /libX11/src/xkb/XKBExtDev.c
parent854ec4da20ddff9b830be0a7d5b81d8cb4774132 (diff)
downloadvcxsrv-5ee5b91b019005aa27273dff01388a68c12be293.tar.gz
vcxsrv-5ee5b91b019005aa27273dff01388a68c12be293.tar.bz2
vcxsrv-5ee5b91b019005aa27273dff01388a68c12be293.zip
xserver mesa fontconfig libX11 libxcb libxcb/xcb-proto xkeyboard-config git update 26 Aug 2013
xserver commit e01a3f65d3e6d92f92ef2992b338cc9625bde082 libxcb commit c52f2891b43ae77008f63700982f800371458f4d libxcb/xcb-proto commit bd7708ac1037e647b094fa7440ebb6171b9bc75f xkeyboard-config commit 77026e8c59cc64856180452c5f89be86928fea7c libX11 commit e9b14d10d0258bfcc273ff8bc84cd349dccda62c libXdmcp commit 66514a4af7eaa47e8718434356d7efce95e570cf libXext commit 7378d4bdbd33ed49ed6cfa5c4f73d7527982aab4 libfontenc commit 3acba630d8b57084f7e92c15732408711ed5137a libXinerama commit 6e1d1dc328ba8162bba2f4694e7f3c706a1491ff libXau commit 899790011304c4029e15abf410e49ce7cec17e0a xkbcomp commit 0ebdf47fd4bc434ac3d2339544c022a869510738 pixman commit 3518a0dafa63098d41e466f73d105b7e3e4b12de xextproto commit f27fcc99d1cf935cc289933326f7d3baacd5107a randrproto commit ca7cc541c2e43e6c784df19b4583ac35829d2f72 glproto commit 8e3407e02980d088e20041e79bdcdd3737e7827e mkfontscale commit f48de13423c7300f4da9f61993b624426b38ddc0 xwininfo commit ba0d1b0da21d2dbdd81098ed5778f3792b472e13 libXft commit c5e760a239afc62a1c75e0509868e35957c8df52 libXmu commit d5dac08d65c4865f311cb62c161dbb1300eecd11 libxtrans commit f6a161f2a003f4da0a2e414b4faa0ee0de0c01f0 fontconfig commit fba9efecd2ef3aca84e0a4806899c09ba95f4c19 mesa commit 7fa18774bd9d0e97a82ee9b7dfce8fc5a1041c3a
Diffstat (limited to 'libX11/src/xkb/XKBExtDev.c')
-rw-r--r--libX11/src/xkb/XKBExtDev.c1180
1 files changed, 599 insertions, 581 deletions
diff --git a/libX11/src/xkb/XKBExtDev.c b/libX11/src/xkb/XKBExtDev.c
index dd383bc10..4065dcd0e 100644
--- a/libX11/src/xkb/XKBExtDev.c
+++ b/libX11/src/xkb/XKBExtDev.c
@@ -37,68 +37,72 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
/***====================================================================***/
extern void
-XkbNoteDeviceChanges( XkbDeviceChangesPtr old,
- XkbExtensionDeviceNotifyEvent * new,
- unsigned int wanted)
+XkbNoteDeviceChanges(XkbDeviceChangesPtr old,
+ XkbExtensionDeviceNotifyEvent *new,
+ unsigned int wanted)
{
- if ((!old)||(!new)||(!wanted)||((new->reason&wanted)==0))
- return;
- if ((wanted&new->reason)&XkbXI_ButtonActionsMask) {
- if (old->changed&XkbXI_ButtonActionsMask) {
- int first,last,newLast;
- if (new->first_btn<old->first_btn)
- first= new->first_btn;
- else first= old->first_btn;
- last= old->first_btn+old->num_btns-1;
- newLast= new->first_btn+new->num_btns-1;
- if (newLast>last)
- last= newLast;
- old->first_btn= first;
- old->num_btns= (last-first)+1;
- }
- else {
- old->changed|= XkbXI_ButtonActionsMask;
- old->first_btn= new->first_btn;
- old->num_btns= new->num_btns;
- }
+ if ((!old) || (!new) || (!wanted) || ((new->reason & wanted) == 0))
+ return;
+ if ((wanted & new->reason) & XkbXI_ButtonActionsMask) {
+ if (old->changed & XkbXI_ButtonActionsMask) {
+ int first, last, newLast;
+
+ if (new->first_btn < old->first_btn)
+ first = new->first_btn;
+ else
+ first = old->first_btn;
+ last = old->first_btn + old->num_btns - 1;
+ newLast = new->first_btn + new->num_btns - 1;
+ if (newLast > last)
+ last = newLast;
+ old->first_btn = first;
+ old->num_btns = (last - first) + 1;
+ }
+ else {
+ old->changed |= XkbXI_ButtonActionsMask;
+ old->first_btn = new->first_btn;
+ old->num_btns = new->num_btns;
+ }
}
- if ((wanted&new->reason)&XkbXI_IndicatorsMask) {
- XkbDeviceLedChangesPtr this;
- if (old->changed&XkbXI_IndicatorsMask) {
- XkbDeviceLedChangesPtr found;
- found= NULL;
- for (this= &old->leds;this&&(!found);this=this->next) {
- if ((this->led_class==new->led_class)&&
- (this->led_id==new->led_id)) {
- found= this;
- }
- }
- if (!found) {
- found= _XkbTypedCalloc(1,XkbDeviceLedChangesRec);
- if (!found)
- return;
- found->next= old->leds.next;
- found->led_class= new->led_class;
- found->led_id= new->led_id;
- old->leds.next= found;
- }
- if ((wanted&new->reason)&XkbXI_IndicatorNamesMask)
- found->defined= new->leds_defined;
- }
- else {
- old->changed|= ((wanted&new->reason)&XkbXI_IndicatorsMask);
- old->leds.led_class= new->led_class;
- old->leds.led_id= new->led_id;
- old->leds.defined= new->leds_defined;
- if (old->leds.next) {
- XkbDeviceLedChangesPtr next;
- for (this=old->leds.next;this;this=next) {
- next= this->next;
- _XkbFree(this);
- }
- old->leds.next= NULL;
- }
- }
+ if ((wanted & new->reason) & XkbXI_IndicatorsMask) {
+ XkbDeviceLedChangesPtr this;
+
+ if (old->changed & XkbXI_IndicatorsMask) {
+ XkbDeviceLedChangesPtr found = NULL;
+
+ for (this = &old->leds; this && (!found); this = this->next) {
+ if ((this->led_class == new->led_class) &&
+ (this->led_id == new->led_id)) {
+ found = this;
+ }
+ }
+ if (!found) {
+ found = _XkbTypedCalloc(1, XkbDeviceLedChangesRec);
+ if (!found)
+ return;
+ found->next = old->leds.next;
+ found->led_class = new->led_class;
+ found->led_id = new->led_id;
+ old->leds.next = found;
+ }
+ if ((wanted & new->reason) & XkbXI_IndicatorNamesMask)
+ found->defined = new->leds_defined;
+ }
+ else {
+ old->changed |= ((wanted & new->reason) & XkbXI_IndicatorsMask);
+ old->leds.led_class = new->led_class;
+ old->leds.led_id = new->led_id;
+ old->leds.defined = new->leds_defined;
+ if (old->leds.next) {
+ XkbDeviceLedChangesPtr next;
+
+ for (this = old->leds.next; this; this = next) {
+ next = this->next;
+ _XkbFree(this);
+ }
+ old->leds.next = NULL;
+ }
+ }
}
return;
}
@@ -106,162 +110,168 @@ XkbNoteDeviceChanges( XkbDeviceChangesPtr old,
/***====================================================================***/
static Status
-_XkbReadDeviceLedInfo( XkbReadBufferPtr buf,
- unsigned present,
- XkbDeviceInfoPtr devi)
+_XkbReadDeviceLedInfo(XkbReadBufferPtr buf,
+ unsigned present,
+ XkbDeviceInfoPtr devi)
{
-register unsigned i,bit;
-XkbDeviceLedInfoPtr devli;
-xkbDeviceLedsWireDesc * wireli;
+ register unsigned i, bit;
+ XkbDeviceLedInfoPtr devli;
+ xkbDeviceLedsWireDesc *wireli;
- wireli= _XkbGetTypedRdBufPtr(buf,1,xkbDeviceLedsWireDesc);
+ wireli = _XkbGetTypedRdBufPtr(buf, 1, xkbDeviceLedsWireDesc);
if (!wireli)
- return BadLength;
- devli= XkbAddDeviceLedInfo(devi,wireli->ledClass,wireli->ledID);
+ return BadLength;
+ devli = XkbAddDeviceLedInfo(devi, wireli->ledClass, wireli->ledID);
if (!devli)
- return BadAlloc;
- devli->phys_indicators= wireli->physIndicators;
-
- if (present&XkbXI_IndicatorStateMask)
- devli->state= wireli->state;
-
- if (present&XkbXI_IndicatorNamesMask) {
- devli->names_present= wireli->namesPresent;
- if (devli->names_present) {
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (wireli->namesPresent&bit) {
- if (!_XkbCopyFromReadBuffer(buf,(char *)&devli->names[i],4))
- return BadLength;
- }
- }
- }
+ return BadAlloc;
+ devli->phys_indicators = wireli->physIndicators;
+
+ if (present & XkbXI_IndicatorStateMask)
+ devli->state = wireli->state;
+
+ if (present & XkbXI_IndicatorNamesMask) {
+ devli->names_present = wireli->namesPresent;
+ if (devli->names_present) {
+ for (i = 0, bit = 1; i < XkbNumIndicators; i++, bit <<= 1) {
+ if (wireli->namesPresent & bit) {
+ if (!_XkbCopyFromReadBuffer(buf,
+ (char *) &devli->names[i], 4))
+ return BadLength;
+ }
+ }
+ }
}
- if (present&XkbXI_IndicatorMapsMask) {
- devli->maps_present= wireli->mapsPresent;
- if (devli->maps_present) {
- XkbIndicatorMapPtr im;
- xkbIndicatorMapWireDesc * wireim;
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (wireli->mapsPresent&bit) {
- wireim= _XkbGetTypedRdBufPtr(buf,1,xkbIndicatorMapWireDesc);
- if (!wireim)
- return BadAlloc;
- im= &devli->maps[i];
- im->flags= wireim->flags;
- im->which_groups= wireim->whichGroups;
- im->groups= wireim->groups;
- im->which_mods= wireim->whichMods;
- im->mods.mask= wireim->mods;
- im->mods.real_mods= wireim->realMods;
- im->mods.vmods= wireim->virtualMods;
- im->ctrls= wireim->ctrls;
- }
- }
- }
+ if (present & XkbXI_IndicatorMapsMask) {
+ devli->maps_present = wireli->mapsPresent;
+ if (devli->maps_present) {
+ XkbIndicatorMapPtr im;
+ xkbIndicatorMapWireDesc *wireim;
+
+ for (i = 0, bit = 1; i < XkbNumIndicators; i++, bit <<= 1) {
+ if (wireli->mapsPresent & bit) {
+ wireim =
+ _XkbGetTypedRdBufPtr(buf, 1, xkbIndicatorMapWireDesc);
+ if (!wireim)
+ return BadAlloc;
+ im = &devli->maps[i];
+ im->flags = wireim->flags;
+ im->which_groups = wireim->whichGroups;
+ im->groups = wireim->groups;
+ im->which_mods = wireim->whichMods;
+ im->mods.mask = wireim->mods;
+ im->mods.real_mods = wireim->realMods;
+ im->mods.vmods = wireim->virtualMods;
+ im->ctrls = wireim->ctrls;
+ }
+ }
+ }
}
return Success;
}
static Status
-_XkbReadGetDeviceInfoReply( Display * dpy,
- xkbGetDeviceInfoReply * rep,
- XkbDeviceInfoPtr devi)
+_XkbReadGetDeviceInfoReply(Display *dpy,
+ xkbGetDeviceInfoReply *rep,
+ XkbDeviceInfoPtr devi)
{
-XkbReadBufferRec buf;
-XkbAction * act;
-int tmp;
+ XkbReadBufferRec buf;
+ XkbAction *act;
+ int tmp;
- if (!_XkbInitReadBuffer(dpy,&buf,(int)rep->length*4))
- return BadAlloc;
+ if (!_XkbInitReadBuffer(dpy, &buf, (int) rep->length * 4))
+ return BadAlloc;
- if ((rep->totalBtns>0)&&(rep->totalBtns!=devi->num_btns)) {
- tmp= XkbResizeDeviceButtonActions(devi,rep->totalBtns);
- if (tmp!=Success)
- return tmp;
+ if ((rep->totalBtns > 0) && (rep->totalBtns != devi->num_btns)) {
+ tmp = XkbResizeDeviceButtonActions(devi, rep->totalBtns);
+ if (tmp != Success)
+ return tmp;
}
- if (rep->nBtnsWanted>0) {
- if (((unsigned short) rep->firstBtnWanted + rep->nBtnsWanted)
- >= devi->num_btns)
- goto BAILOUT;
- act= &devi->btn_acts[rep->firstBtnWanted];
- bzero((char *)act,(rep->nBtnsWanted*sizeof(XkbAction)));
+ if (rep->nBtnsWanted > 0) {
+ if (((unsigned short) rep->firstBtnWanted + rep->nBtnsWanted)
+ >= devi->num_btns)
+ goto BAILOUT;
+ act = &devi->btn_acts[rep->firstBtnWanted];
+ bzero((char *) act, (rep->nBtnsWanted * sizeof(XkbAction)));
}
- if (devi->name!=NULL)
- _XkbFree(devi->name);
- if (!_XkbGetReadBufferCountedString(&buf,&devi->name))
- goto BAILOUT;
- if (rep->nBtnsRtrn>0) {
- int size;
- if (((unsigned short) rep->firstBtnRtrn + rep->nBtnsRtrn)
- >= devi->num_btns)
- goto BAILOUT;
- act= &devi->btn_acts[rep->firstBtnRtrn];
- size= rep->nBtnsRtrn*SIZEOF(xkbActionWireDesc);
- if (!_XkbCopyFromReadBuffer(&buf,(char *)act,size))
- goto BAILOUT;
+ if (devi->name != NULL)
+ _XkbFree(devi->name);
+ if (!_XkbGetReadBufferCountedString(&buf, &devi->name))
+ goto BAILOUT;
+ if (rep->nBtnsRtrn > 0) {
+ int size;
+
+ if (((unsigned short) rep->firstBtnRtrn + rep->nBtnsRtrn)
+ >= devi->num_btns)
+ goto BAILOUT;
+ act = &devi->btn_acts[rep->firstBtnRtrn];
+ size = rep->nBtnsRtrn * SIZEOF(xkbActionWireDesc);
+ if (!_XkbCopyFromReadBuffer(&buf, (char *) act, size))
+ goto BAILOUT;
}
- if (rep->nDeviceLedFBs>0) {
- register int i;
- for (i=0;i<rep->nDeviceLedFBs;i++) {
- if ((tmp= _XkbReadDeviceLedInfo(&buf,rep->present,devi))!=Success)
- return tmp;
- }
+ if (rep->nDeviceLedFBs > 0) {
+ register int i;
+
+ for (i = 0; i < rep->nDeviceLedFBs; i++) {
+ if ((tmp = _XkbReadDeviceLedInfo(&buf, rep->present, devi))
+ != Success)
+ return tmp;
+ }
}
- tmp= _XkbFreeReadBuffer(&buf);
+ tmp = _XkbFreeReadBuffer(&buf);
if (tmp)
- fprintf(stderr,"GetDeviceInfo! Bad length (%d extra bytes)\n",tmp);
+ fprintf(stderr, "GetDeviceInfo! Bad length (%d extra bytes)\n", tmp);
if (tmp || buf.error)
- return BadLength;
+ return BadLength;
return Success;
-BAILOUT:
+ BAILOUT:
_XkbFreeReadBuffer(&buf);
return BadLength;
}
XkbDeviceInfoPtr
-XkbGetDeviceInfo( Display * dpy,
- unsigned which,
- unsigned deviceSpec,
- unsigned class,
- unsigned id)
+XkbGetDeviceInfo(Display *dpy,
+ unsigned which,
+ unsigned deviceSpec,
+ unsigned class,
+ unsigned id)
{
- register xkbGetDeviceInfoReq * req;
- xkbGetDeviceInfoReply rep;
- Status status;
- XkbDeviceInfoPtr devi;
+ register xkbGetDeviceInfoReq *req;
+ xkbGetDeviceInfoReply rep;
+ Status status;
+ XkbDeviceInfoPtr devi;
if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return NULL;
+ (!dpy->xkb_info && !XkbUseExtension(dpy, NULL, NULL)))
+ return NULL;
LockDisplay(dpy);
GetReq(kbGetDeviceInfo, req);
req->reqType = dpy->xkb_info->codes->major_opcode;
req->xkbReqType = X_kbGetDeviceInfo;
req->deviceSpec = deviceSpec;
- req->wanted= which;
- req->allBtns= ((which&XkbXI_ButtonActionsMask)!=0);
- req->firstBtn= req->nBtns= 0;
- req->ledClass= class;
- req->ledID= id;
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return NULL;
+ req->wanted = which;
+ req->allBtns = ((which & XkbXI_ButtonActionsMask) != 0);
+ req->firstBtn = req->nBtns = 0;
+ req->ledClass = class;
+ req->ledID = id;
+ if (!_XReply(dpy, (xReply *) &rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return NULL;
}
- devi= XkbAllocDeviceInfo(rep.deviceID,rep.totalBtns,rep.nDeviceLedFBs);
+ devi = XkbAllocDeviceInfo(rep.deviceID, rep.totalBtns, rep.nDeviceLedFBs);
if (devi) {
- devi->supported= rep.supported;
- devi->unsupported= rep.unsupported;
- devi->type= rep.devType;
- devi->has_own_state= rep.hasOwnState;
- devi->dflt_kbd_fb = rep.dfltKbdFB;
- devi->dflt_led_fb = rep.dfltLedFB;
- status= _XkbReadGetDeviceInfoReply(dpy,&rep,devi);
- if (status!=Success) {
- XkbFreeDeviceInfo(devi,XkbXI_AllDeviceFeaturesMask,True);
- devi= NULL;
- }
+ devi->supported = rep.supported;
+ devi->unsupported = rep.unsupported;
+ devi->type = rep.devType;
+ devi->has_own_state = rep.hasOwnState;
+ devi->dflt_kbd_fb = rep.dfltKbdFB;
+ devi->dflt_led_fb = rep.dfltLedFB;
+ status = _XkbReadGetDeviceInfoReply(dpy, &rep, devi);
+ if (status != Success) {
+ XkbFreeDeviceInfo(devi, XkbXI_AllDeviceFeaturesMask, True);
+ devi = NULL;
+ }
}
UnlockDisplay(dpy);
SyncHandle();
@@ -269,59 +279,61 @@ XkbGetDeviceInfo( Display * dpy,
}
Status
-XkbGetDeviceInfoChanges( Display * dpy,
- XkbDeviceInfoPtr devi,
- XkbDeviceChangesPtr changes)
+XkbGetDeviceInfoChanges(Display *dpy,
+ XkbDeviceInfoPtr devi,
+ XkbDeviceChangesPtr changes)
{
- register xkbGetDeviceInfoReq * req;
- xkbGetDeviceInfoReply rep;
- Status status;
+ register xkbGetDeviceInfoReq *req;
+ xkbGetDeviceInfoReply rep;
+ Status status;
if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadMatch;
- if ((changes->changed&XkbXI_AllDeviceFeaturesMask)==0)
- return Success;
- changes->changed&= ~XkbXI_AllDeviceFeaturesMask;
- status= Success;
+ (!dpy->xkb_info && !XkbUseExtension(dpy, NULL, NULL)))
+ return BadMatch;
+ if ((changes->changed & XkbXI_AllDeviceFeaturesMask) == 0)
+ return Success;
+ changes->changed &= ~XkbXI_AllDeviceFeaturesMask;
+ status = Success;
LockDisplay(dpy);
- while ((changes->changed)&&(status==Success)) {
- GetReq(kbGetDeviceInfo, req);
- req->reqType = dpy->xkb_info->codes->major_opcode;
- req->xkbReqType = X_kbGetDeviceInfo;
- req->deviceSpec = devi->device_spec;
- req->wanted= changes->changed;
- req->allBtns= False;
- if (changes->changed&XkbXI_ButtonActionsMask) {
- req->firstBtn= changes->first_btn;
- req->nBtns= changes->num_btns;
- changes->changed&= ~XkbXI_ButtonActionsMask;
- }
- else req->firstBtn= req->nBtns= 0;
- if (changes->changed&XkbXI_IndicatorsMask) {
- req->ledClass= changes->leds.led_class;
- req->ledID= changes->leds.led_id;
- if (changes->leds.next==NULL)
- changes->changed&= ~XkbXI_IndicatorsMask;
- else {
- XkbDeviceLedChangesPtr next;
- next= changes->leds.next;
- changes->leds= *next;
- _XkbFree(next);
- }
- }
- else {
- req->ledClass= XkbDfltXIClass;
- req->ledID= XkbDfltXIId;
- }
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- status= BadLength;
- break;
- }
- devi->supported|= rep.supported;
- devi->unsupported|= rep.unsupported;
- devi->type= rep.devType;
- status= _XkbReadGetDeviceInfoReply(dpy,&rep,devi);
+ while ((changes->changed) && (status == Success)) {
+ GetReq(kbGetDeviceInfo, req);
+ req->reqType = dpy->xkb_info->codes->major_opcode;
+ req->xkbReqType = X_kbGetDeviceInfo;
+ req->deviceSpec = devi->device_spec;
+ req->wanted = changes->changed;
+ req->allBtns = False;
+ if (changes->changed & XkbXI_ButtonActionsMask) {
+ req->firstBtn = changes->first_btn;
+ req->nBtns = changes->num_btns;
+ changes->changed &= ~XkbXI_ButtonActionsMask;
+ }
+ else
+ req->firstBtn = req->nBtns = 0;
+ if (changes->changed & XkbXI_IndicatorsMask) {
+ req->ledClass = changes->leds.led_class;
+ req->ledID = changes->leds.led_id;
+ if (changes->leds.next == NULL)
+ changes->changed &= ~XkbXI_IndicatorsMask;
+ else {
+ XkbDeviceLedChangesPtr next;
+
+ next = changes->leds.next;
+ changes->leds = *next;
+ _XkbFree(next);
+ }
+ }
+ else {
+ req->ledClass = XkbDfltXIClass;
+ req->ledID = XkbDfltXIId;
+ }
+ if (!_XReply(dpy, (xReply *) &rep, 0, xFalse)) {
+ status = BadLength;
+ break;
+ }
+ devi->supported |= rep.supported;
+ devi->unsupported |= rep.unsupported;
+ devi->type = rep.devType;
+ status = _XkbReadGetDeviceInfoReply(dpy, &rep, devi);
}
UnlockDisplay(dpy);
SyncHandle();
@@ -329,83 +341,84 @@ XkbGetDeviceInfoChanges( Display * dpy,
}
Status
-XkbGetDeviceButtonActions( Display * dpy,
- XkbDeviceInfoPtr devi,
- Bool all,
- unsigned int first,
- unsigned int num)
+XkbGetDeviceButtonActions(Display *dpy,
+ XkbDeviceInfoPtr devi,
+ Bool all,
+ unsigned int first,
+ unsigned int num)
{
- register xkbGetDeviceInfoReq * req;
- xkbGetDeviceInfoReply rep;
- Status status;
+ register xkbGetDeviceInfoReq *req;
+ xkbGetDeviceInfoReply rep;
+ Status status;
if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadMatch;
+ (!dpy->xkb_info && !XkbUseExtension(dpy, NULL, NULL)))
+ return BadMatch;
if (!devi)
- return BadValue;
+ return BadValue;
LockDisplay(dpy);
GetReq(kbGetDeviceInfo, req);
req->reqType = dpy->xkb_info->codes->major_opcode;
req->xkbReqType = X_kbGetDeviceInfo;
req->deviceSpec = devi->device_spec;
- req->wanted= XkbXI_ButtonActionsMask;
- req->allBtns= all;
- req->firstBtn= first;
- req->nBtns= num;
- req->ledClass= XkbDfltXIClass;
- req->ledID= XkbDfltXIId;
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return BadLength;
+ req->wanted = XkbXI_ButtonActionsMask;
+ req->allBtns = all;
+ req->firstBtn = first;
+ req->nBtns = num;
+ req->ledClass = XkbDfltXIClass;
+ req->ledID = XkbDfltXIId;
+ if (!_XReply(dpy, (xReply *) &rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return BadLength;
}
- devi->type= rep.devType;
- devi->supported= rep.supported;
- devi->unsupported= rep.unsupported;
- status= _XkbReadGetDeviceInfoReply(dpy,&rep,devi);
+ devi->type = rep.devType;
+ devi->supported = rep.supported;
+ devi->unsupported = rep.unsupported;
+ status = _XkbReadGetDeviceInfoReply(dpy, &rep, devi);
UnlockDisplay(dpy);
SyncHandle();
return status;
}
Status
-XkbGetDeviceLedInfo( Display * dpy,
- XkbDeviceInfoPtr devi,
- unsigned int ledClass,
- unsigned int ledId,
- unsigned int which)
+XkbGetDeviceLedInfo(Display *dpy,
+ XkbDeviceInfoPtr devi,
+ unsigned int ledClass,
+ unsigned int ledId,
+ unsigned int which)
{
- register xkbGetDeviceInfoReq * req;
- xkbGetDeviceInfoReply rep;
- Status status;
+ register xkbGetDeviceInfoReq *req;
+ xkbGetDeviceInfoReply rep;
+ Status status;
if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return BadMatch;
- if (((which&XkbXI_IndicatorsMask)==0)||(which&(~XkbXI_IndicatorsMask)))
- return BadMatch;
+ (!dpy->xkb_info && !XkbUseExtension(dpy, NULL, NULL)))
+ return BadMatch;
+ if (((which & XkbXI_IndicatorsMask) == 0) ||
+ (which & (~XkbXI_IndicatorsMask)))
+ return BadMatch;
if (!devi)
- return BadValue;
+ return BadValue;
LockDisplay(dpy);
GetReq(kbGetDeviceInfo, req);
req->reqType = dpy->xkb_info->codes->major_opcode;
req->xkbReqType = X_kbGetDeviceInfo;
req->deviceSpec = devi->device_spec;
- req->wanted= which;
- req->allBtns= False;
- req->firstBtn= req->nBtns= 0;
- req->ledClass= ledClass;
- req->ledID= ledId;
- if (!_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
- UnlockDisplay(dpy);
- SyncHandle();
- return BadLength;
+ req->wanted = which;
+ req->allBtns = False;
+ req->firstBtn = req->nBtns = 0;
+ req->ledClass = ledClass;
+ req->ledID = ledId;
+ if (!_XReply(dpy, (xReply *) &rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return BadLength;
}
- devi->type= rep.devType;
- devi->supported= rep.supported;
- devi->unsupported= rep.unsupported;
- status= _XkbReadGetDeviceInfoReply(dpy,&rep,devi);
+ devi->type = rep.devType;
+ devi->supported = rep.supported;
+ devi->unsupported = rep.unsupported;
+ status = _XkbReadGetDeviceInfoReply(dpy, &rep, devi);
UnlockDisplay(dpy);
SyncHandle();
return status;
@@ -414,297 +427,298 @@ XkbGetDeviceLedInfo( Display * dpy,
/***====================================================================***/
typedef struct _LedInfoStuff {
- Bool used;
- XkbDeviceLedInfoPtr devli;
+ Bool used;
+ XkbDeviceLedInfoPtr devli;
} LedInfoStuff;
typedef struct _SetLedStuff {
- unsigned wanted;
- int num_info;
- int dflt_class;
- LedInfoStuff * dflt_kbd_fb;
- LedInfoStuff * dflt_led_fb;
- LedInfoStuff * info;
+ unsigned wanted;
+ int num_info;
+ int dflt_class;
+ LedInfoStuff *dflt_kbd_fb;
+ LedInfoStuff *dflt_led_fb;
+ LedInfoStuff *info;
} SetLedStuff;
static void
-_InitLedStuff(SetLedStuff *stuff,unsigned wanted,XkbDeviceInfoPtr devi)
+_InitLedStuff(SetLedStuff *stuff, unsigned wanted, XkbDeviceInfoPtr devi)
{
-int i;
-register XkbDeviceLedInfoPtr devli;
-
- bzero(stuff,sizeof(SetLedStuff));
- stuff->wanted= wanted;
- stuff->dflt_class= XkbXINone;
- if ((devi->num_leds<1)||((wanted&XkbXI_IndicatorsMask)==0))
- return;
- stuff->info= _XkbTypedCalloc(devi->num_leds,LedInfoStuff);
+ int i;
+ register XkbDeviceLedInfoPtr devli;
+
+ bzero(stuff, sizeof(SetLedStuff));
+ stuff->wanted = wanted;
+ stuff->dflt_class = XkbXINone;
+ if ((devi->num_leds < 1) || ((wanted & XkbXI_IndicatorsMask) == 0))
+ return;
+ stuff->info = _XkbTypedCalloc(devi->num_leds, LedInfoStuff);
if (!stuff->info)
- return;
- stuff->num_info= devi->num_leds;
- for (devli=&devi->leds[0],i=0;i<devi->num_leds;i++,devli++) {
- stuff->info[i].devli= devli;
- if (devli->led_class==KbdFeedbackClass) {
- stuff->dflt_class= KbdFeedbackClass;
- if (stuff->dflt_kbd_fb==NULL)
- stuff->dflt_kbd_fb= &stuff->info[i];
- }
- else if (devli->led_class==LedFeedbackClass) {
- if (stuff->dflt_class==XkbXINone)
- stuff->dflt_class= LedFeedbackClass;
- if (stuff->dflt_led_fb==NULL)
- stuff->dflt_led_fb= &stuff->info[i];
- }
+ return;
+ stuff->num_info = devi->num_leds;
+ for (devli = &devi->leds[0], i = 0; i < devi->num_leds; i++, devli++) {
+ stuff->info[i].devli = devli;
+ if (devli->led_class == KbdFeedbackClass) {
+ stuff->dflt_class = KbdFeedbackClass;
+ if (stuff->dflt_kbd_fb == NULL)
+ stuff->dflt_kbd_fb = &stuff->info[i];
+ }
+ else if (devli->led_class == LedFeedbackClass) {
+ if (stuff->dflt_class == XkbXINone)
+ stuff->dflt_class = LedFeedbackClass;
+ if (stuff->dflt_led_fb == NULL)
+ stuff->dflt_led_fb = &stuff->info[i];
+ }
}
return;
}
static void
-_FreeLedStuff(SetLedStuff *stuff)
+_FreeLedStuff(SetLedStuff * stuff)
{
- if ((stuff->num_info>0)&&(stuff->info!=NULL))
- _XkbFree(stuff->info);
- bzero(stuff,sizeof(SetLedStuff));
+ if ((stuff->num_info > 0) && (stuff->info != NULL))
+ _XkbFree(stuff->info);
+ bzero(stuff, sizeof(SetLedStuff));
return;
}
static int
-_XkbSizeLedInfo(unsigned changed,XkbDeviceLedInfoPtr devli)
+_XkbSizeLedInfo(unsigned changed, XkbDeviceLedInfoPtr devli)
{
-register int i,size;
-register unsigned bit,namesNeeded,mapsNeeded;
-
- size= SIZEOF(xkbDeviceLedsWireDesc);
- namesNeeded= mapsNeeded= 0;
- if (changed&XkbXI_IndicatorNamesMask)
- namesNeeded= devli->names_present;
- if (changed&XkbXI_IndicatorMapsMask)
- mapsNeeded= devli->maps_present;
- if ((namesNeeded)||(mapsNeeded)) {
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (namesNeeded&bit)
- size+= 4; /* atoms are 4 bytes on the wire */
- if (mapsNeeded&bit)
- size+= SIZEOF(xkbIndicatorMapWireDesc);
- }
+ register int i, size;
+ register unsigned bit, namesNeeded, mapsNeeded;
+
+ size = SIZEOF(xkbDeviceLedsWireDesc);
+ namesNeeded = mapsNeeded = 0;
+ if (changed & XkbXI_IndicatorNamesMask)
+ namesNeeded = devli->names_present;
+ if (changed & XkbXI_IndicatorMapsMask)
+ mapsNeeded = devli->maps_present;
+ if ((namesNeeded) || (mapsNeeded)) {
+ for (i = 0, bit = 1; i < XkbNumIndicators; i++, bit <<= 1) {
+ if (namesNeeded & bit)
+ size += 4; /* atoms are 4 bytes on the wire */
+ if (mapsNeeded & bit)
+ size += SIZEOF(xkbIndicatorMapWireDesc);
+ }
}
return size;
}
static Bool
-_SizeMatches( SetLedStuff * stuff,
- XkbDeviceLedChangesPtr changes,
- int * sz_rtrn,
- int * nleds_rtrn)
+_SizeMatches(SetLedStuff *stuff,
+ XkbDeviceLedChangesPtr changes,
+ int *sz_rtrn,
+ int *nleds_rtrn)
{
-int i,nMatch,class,id;
-LedInfoStuff * linfo;
-Bool match;
-
- nMatch= 0;
- class= changes->led_class;
- id= changes->led_id;
- if (class==XkbDfltXIClass)
- class= stuff->dflt_class;
- for (i=0,linfo=&stuff->info[0];i<stuff->num_info;i++,linfo++) {
- XkbDeviceLedInfoPtr devli;
- LedInfoStuff * dflt;
-
- devli= linfo->devli;
- match= ((class==devli->led_class)||(class==XkbAllXIClasses));
- if (devli->led_class==KbdFeedbackClass) dflt= stuff->dflt_kbd_fb;
- else dflt= stuff->dflt_led_fb;
- match = (match && (id == devli->led_id)) ||
- (id == XkbAllXIIds) ||
- ((id == XkbDfltXIId) &&
- (linfo == dflt));
- if (match) {
- if (!linfo->used) {
- *sz_rtrn+= _XkbSizeLedInfo(stuff->wanted,devli);
- *nleds_rtrn+= 1;
- linfo->used= True;
- if ((class!=XkbAllXIClasses)&&(id!=XkbAllXIIds))
- return True;
- }
- nMatch++;
- linfo->used= True;
- }
+ int i, nMatch, class, id;
+ LedInfoStuff *linfo;
+ Bool match;
+
+ nMatch = 0;
+ class = changes->led_class;
+ id = changes->led_id;
+ if (class == XkbDfltXIClass)
+ class = stuff->dflt_class;
+ for (i = 0, linfo = &stuff->info[0]; i < stuff->num_info; i++, linfo++) {
+ XkbDeviceLedInfoPtr devli;
+ LedInfoStuff *dflt;
+
+ devli = linfo->devli;
+ match = ((class == devli->led_class) || (class == XkbAllXIClasses));
+ if (devli->led_class == KbdFeedbackClass)
+ dflt = stuff->dflt_kbd_fb;
+ else
+ dflt = stuff->dflt_led_fb;
+ match = (match && (id == devli->led_id)) ||
+ (id == XkbAllXIIds) ||
+ ((id == XkbDfltXIId) && (linfo == dflt));
+ if (match) {
+ if (!linfo->used) {
+ *sz_rtrn += _XkbSizeLedInfo(stuff->wanted, devli);
+ *nleds_rtrn += 1;
+ linfo->used = True;
+ if ((class != XkbAllXIClasses) && (id != XkbAllXIIds))
+ return True;
+ }
+ nMatch++;
+ linfo->used = True;
+ }
}
- return (nMatch>0);
+ return (nMatch > 0);
}
/***====================================================================***/
static Status
-_XkbSetDeviceInfoSize( XkbDeviceInfoPtr devi,
- XkbDeviceChangesPtr changes,
- SetLedStuff * stuff,
- int * sz_rtrn,
- int * num_leds_rtrn)
+_XkbSetDeviceInfoSize(XkbDeviceInfoPtr devi,
+ XkbDeviceChangesPtr changes,
+ SetLedStuff *stuff,
+ int *sz_rtrn,
+ int *num_leds_rtrn)
{
- *sz_rtrn= 0;
- if ((changes->changed&XkbXI_ButtonActionsMask)&&(changes->num_btns>0)) {
- if (!XkbXI_LegalDevBtn(devi,(changes->first_btn+changes->num_btns-1)))
- return BadMatch;
- *sz_rtrn+= changes->num_btns*SIZEOF(xkbActionWireDesc);
+ *sz_rtrn = 0;
+ if ((changes->changed & XkbXI_ButtonActionsMask) && (changes->num_btns > 0)) {
+ if (!XkbXI_LegalDevBtn
+ (devi, (changes->first_btn + changes->num_btns - 1)))
+ return BadMatch;
+ *sz_rtrn += changes->num_btns * SIZEOF(xkbActionWireDesc);
}
else {
- changes->changed&= ~XkbXI_ButtonActionsMask;
- changes->first_btn= changes->num_btns= 0;
+ changes->changed &= ~XkbXI_ButtonActionsMask;
+ changes->first_btn = changes->num_btns = 0;
}
- if ((changes->changed&XkbXI_IndicatorsMask)&&
- XkbLegalXILedClass(changes->leds.led_class)) {
- XkbDeviceLedChangesPtr leds;
-
- for (leds=&changes->leds;leds!=NULL;leds= leds->next) {
- if (!_SizeMatches(stuff,leds,sz_rtrn,num_leds_rtrn))
- return BadMatch;
- }
+ if ((changes->changed & XkbXI_IndicatorsMask) &&
+ XkbLegalXILedClass(changes->leds.led_class)) {
+ XkbDeviceLedChangesPtr leds;
+
+ for (leds = &changes->leds; leds != NULL; leds = leds->next) {
+ if (!_SizeMatches(stuff, leds, sz_rtrn, num_leds_rtrn))
+ return BadMatch;
+ }
}
else {
- changes->changed&= ~XkbXI_IndicatorsMask;
- *num_leds_rtrn= 0;
+ changes->changed &= ~XkbXI_IndicatorsMask;
+ *num_leds_rtrn = 0;
}
return Success;
}
static char *
-_XkbWriteLedInfo(char *wire,unsigned changed,XkbDeviceLedInfoPtr devli)
+_XkbWriteLedInfo(char *wire, unsigned changed, XkbDeviceLedInfoPtr devli)
{
-register int i;
-register unsigned bit,namesNeeded,mapsNeeded;
-xkbDeviceLedsWireDesc * lwire;
-
- namesNeeded= mapsNeeded= 0;
- if (changed&XkbXI_IndicatorNamesMask)
- namesNeeded= devli->names_present;
- if (changed&XkbXI_IndicatorMapsMask)
- mapsNeeded= devli->maps_present;
-
- lwire= (xkbDeviceLedsWireDesc *)wire;
- lwire->ledClass= devli->led_class;
- lwire->ledID= devli->led_id;
- lwire->namesPresent= namesNeeded;
- lwire->mapsPresent= mapsNeeded;
- lwire->physIndicators= devli->phys_indicators;
- lwire->state= devli->state;
- wire= (char *)&lwire[1];
+ register int i;
+ register unsigned bit, namesNeeded, mapsNeeded;
+ xkbDeviceLedsWireDesc *lwire;
+
+ namesNeeded = mapsNeeded = 0;
+ if (changed & XkbXI_IndicatorNamesMask)
+ namesNeeded = devli->names_present;
+ if (changed & XkbXI_IndicatorMapsMask)
+ mapsNeeded = devli->maps_present;
+
+ lwire = (xkbDeviceLedsWireDesc *) wire;
+ lwire->ledClass = devli->led_class;
+ lwire->ledID = devli->led_id;
+ lwire->namesPresent = namesNeeded;
+ lwire->mapsPresent = mapsNeeded;
+ lwire->physIndicators = devli->phys_indicators;
+ lwire->state = devli->state;
+ wire = (char *) &lwire[1];
if (namesNeeded) {
- CARD32 *awire;
- awire= (CARD32 *)wire;
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (namesNeeded&bit) {
- *awire= (CARD32)devli->names[i];
- awire++;
- }
- }
- wire= (char *)awire;
+ CARD32 *awire = (CARD32 *) wire;
+
+ for (i = 0, bit = 1; i < XkbNumIndicators; i++, bit <<= 1) {
+ if (namesNeeded & bit) {
+ *awire = (CARD32) devli->names[i];
+ awire++;
+ }
+ }
+ wire = (char *) awire;
}
if (mapsNeeded) {
- xkbIndicatorMapWireDesc *mwire;
-
- mwire= (xkbIndicatorMapWireDesc *)wire;
- for (i=0,bit=1;i<XkbNumIndicators;i++,bit<<=1) {
- if (mapsNeeded&bit) {
- XkbIndicatorMapPtr map;
- map= &devli->maps[i];
- mwire->flags= map->flags;
- mwire->whichGroups= map->which_groups;
- mwire->groups= map->groups;
- mwire->whichMods= map->which_mods;
- mwire->mods= map->mods.mask;
- mwire->realMods= map->mods.real_mods;
- mwire->virtualMods= map->mods.vmods;
- mwire->ctrls= map->ctrls;
- mwire++;
- }
- }
- wire= (char *)mwire;
+ xkbIndicatorMapWireDesc *mwire = (xkbIndicatorMapWireDesc *) wire;
+
+ for (i = 0, bit = 1; i < XkbNumIndicators; i++, bit <<= 1) {
+ if (mapsNeeded & bit) {
+ XkbIndicatorMapPtr map = &devli->maps[i];
+
+ mwire->flags = map->flags;
+ mwire->whichGroups = map->which_groups;
+ mwire->groups = map->groups;
+ mwire->whichMods = map->which_mods;
+ mwire->mods = map->mods.mask;
+ mwire->realMods = map->mods.real_mods;
+ mwire->virtualMods = map->mods.vmods;
+ mwire->ctrls = map->ctrls;
+ mwire++;
+ }
+ }
+ wire = (char *) mwire;
}
return wire;
}
static int
-_XkbWriteSetDeviceInfo( char * wire,
- XkbDeviceChangesPtr changes,
- SetLedStuff * stuff,
- XkbDeviceInfoPtr devi)
+_XkbWriteSetDeviceInfo(char *wire,
+ XkbDeviceChangesPtr changes,
+ SetLedStuff *stuff,
+ XkbDeviceInfoPtr devi)
{
-char *start;
-
- start= wire;
- if (changes->changed&XkbXI_ButtonActionsMask) {
- int size;
- size= changes->num_btns*SIZEOF(xkbActionWireDesc);
- memcpy(wire,(char *)&devi->btn_acts[changes->first_btn],size);
- wire+= size;
+ char *start = wire;
+
+ if (changes->changed & XkbXI_ButtonActionsMask) {
+ int size = changes->num_btns * SIZEOF(xkbActionWireDesc);
+
+ memcpy(wire, (char *) &devi->btn_acts[changes->first_btn], size);
+ wire += size;
}
- if (changes->changed&XkbXI_IndicatorsMask) {
- register int i;
- register LedInfoStuff *linfo;
-
- for (i=0,linfo=&stuff->info[0];i<stuff->num_info;i++,linfo++) {
- if (linfo->used) {
- register char *new_wire;
- new_wire= _XkbWriteLedInfo(wire,stuff->wanted,linfo->devli);
- if (!new_wire)
- return wire-start;
- wire= new_wire;
- }
- }
+ if (changes->changed & XkbXI_IndicatorsMask) {
+ register int i;
+ register LedInfoStuff *linfo;
+
+ for (i = 0, linfo = &stuff->info[0]; i < stuff->num_info; i++, linfo++) {
+ if (linfo->used) {
+ register char *new_wire;
+
+ new_wire = _XkbWriteLedInfo(wire, stuff->wanted, linfo->devli);
+ if (!new_wire)
+ return wire - start;
+ wire = new_wire;
+ }
+ }
}
- return wire-start;
+ return wire - start;
}
Bool
-XkbSetDeviceInfo( Display * dpy,
- unsigned which,
- XkbDeviceInfoPtr devi)
+XkbSetDeviceInfo(Display *dpy, unsigned which, XkbDeviceInfoPtr devi)
{
register xkbSetDeviceInfoReq *req;
- Status ok = 0;
- int size,nLeds;
- XkbInfoPtr xkbi;
- XkbDeviceChangesRec changes;
- SetLedStuff lstuff;
+ Status ok = 0;
+ int size, nLeds;
+ XkbInfoPtr xkbi;
+ XkbDeviceChangesRec changes;
+ SetLedStuff lstuff;
if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- if ((!devi) || (which&(~XkbXI_AllDeviceFeaturesMask)) ||
- ((which&XkbXI_ButtonActionsMask)&&(!XkbXI_DevHasBtnActs(devi)))||
- ((which&XkbXI_IndicatorsMask)&&(!XkbXI_DevHasLeds(devi))))
- return False;
-
- bzero((char *)&changes,sizeof(XkbDeviceChangesRec));
- changes.changed= which;
- changes.first_btn= 0;
- changes.num_btns= devi->num_btns;
- changes.leds.led_class= XkbAllXIClasses;
- changes.leds.led_id= XkbAllXIIds;
- changes.leds.defined= 0;
- size= nLeds= 0;
- _InitLedStuff(&lstuff,changes.changed,devi);
- if (_XkbSetDeviceInfoSize(devi,&changes,&lstuff,&size,&nLeds)!=Success)
- return False;
+ (!dpy->xkb_info && !XkbUseExtension(dpy, NULL, NULL)))
+ return False;
+ if ((!devi) || (which & (~XkbXI_AllDeviceFeaturesMask)) ||
+ ((which & XkbXI_ButtonActionsMask) && (!XkbXI_DevHasBtnActs(devi))) ||
+ ((which & XkbXI_IndicatorsMask) && (!XkbXI_DevHasLeds(devi))))
+ return False;
+
+ bzero((char *) &changes, sizeof(XkbDeviceChangesRec));
+ changes.changed = which;
+ changes.first_btn = 0;
+ changes.num_btns = devi->num_btns;
+ changes.leds.led_class = XkbAllXIClasses;
+ changes.leds.led_id = XkbAllXIIds;
+ changes.leds.defined = 0;
+ size = nLeds = 0;
+ _InitLedStuff(&lstuff, changes.changed, devi);
+ if (_XkbSetDeviceInfoSize(devi, &changes, &lstuff, &size, &nLeds) !=
+ Success)
+ return False;
LockDisplay(dpy);
xkbi = dpy->xkb_info;
GetReq(kbSetDeviceInfo, req);
- req->length+= size/4;
- req->reqType= xkbi->codes->major_opcode;
- req->xkbReqType= X_kbSetDeviceInfo;
- req->deviceSpec= devi->device_spec;
- req->firstBtn= changes.first_btn;
- req->nBtns= changes.num_btns;
- req->change= changes.changed;
- req->nDeviceLedFBs= nLeds;
- if (size>0) {
- char * wire;
- BufAlloc(char *,wire,size);
- ok= (wire!=NULL)&&
- (_XkbWriteSetDeviceInfo(wire,&changes,&lstuff,devi)==size);
+ req->length += size / 4;
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbSetDeviceInfo;
+ req->deviceSpec = devi->device_spec;
+ req->firstBtn = changes.first_btn;
+ req->nBtns = changes.num_btns;
+ req->change = changes.changed;
+ req->nDeviceLedFBs = nLeds;
+ if (size > 0) {
+ char *wire;
+
+ BufAlloc(char *, wire, size);
+ ok = (wire != NULL) &&
+ (_XkbWriteSetDeviceInfo(wire, &changes, &lstuff, devi) == size);
}
UnlockDisplay(dpy);
SyncHandle();
@@ -714,45 +728,47 @@ XkbSetDeviceInfo( Display * dpy,
}
Bool
-XkbChangeDeviceInfo( Display * dpy,
- XkbDeviceInfoPtr devi,
- XkbDeviceChangesPtr changes)
+XkbChangeDeviceInfo(Display *dpy,
+ XkbDeviceInfoPtr devi,
+ XkbDeviceChangesPtr changes)
{
register xkbSetDeviceInfoReq *req;
- Status ok = 0;
- int size,nLeds;
- XkbInfoPtr xkbi;
- SetLedStuff lstuff;
+ Status ok = 0;
+ int size, nLeds;
+ XkbInfoPtr xkbi;
+ SetLedStuff lstuff;
if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- if ((!devi) || (changes->changed&(~XkbXI_AllDeviceFeaturesMask)) ||
- ((changes->changed&XkbXI_ButtonActionsMask)&&
- (!XkbXI_DevHasBtnActs(devi)))||
- ((changes->changed&XkbXI_IndicatorsMask)&&(!XkbXI_DevHasLeds(devi))))
- return False;
-
- size= nLeds= 0;
- _InitLedStuff(&lstuff,changes->changed,devi);
- if (_XkbSetDeviceInfoSize(devi,changes,&lstuff,&size,&nLeds)!=Success)
- return False;
+ (!dpy->xkb_info && !XkbUseExtension(dpy, NULL, NULL)))
+ return False;
+ if ((!devi) || (changes->changed & (~XkbXI_AllDeviceFeaturesMask)) ||
+ ((changes->changed & XkbXI_ButtonActionsMask) &&
+ (!XkbXI_DevHasBtnActs(devi))) ||
+ ((changes->changed & XkbXI_IndicatorsMask) &&
+ (!XkbXI_DevHasLeds(devi))))
+ return False;
+
+ size = nLeds = 0;
+ _InitLedStuff(&lstuff, changes->changed, devi);
+ if (_XkbSetDeviceInfoSize(devi, changes, &lstuff, &size, &nLeds) != Success)
+ return False;
LockDisplay(dpy);
xkbi = dpy->xkb_info;
GetReq(kbSetDeviceInfo, req);
- req->length+= size/4;
- req->reqType= xkbi->codes->major_opcode;
- req->xkbReqType= X_kbSetDeviceInfo;
- req->deviceSpec= devi->device_spec;
- req->firstBtn= changes->first_btn;
- req->nBtns= changes->num_btns;
- req->change= changes->changed;
- req->nDeviceLedFBs= nLeds;
- if (size>0) {
- char * wire;
- BufAlloc(char *,wire,size);
- ok= (wire!=NULL)&&
- (_XkbWriteSetDeviceInfo(wire,changes,&lstuff,devi)==size);
+ req->length += size / 4;
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbSetDeviceInfo;
+ req->deviceSpec = devi->device_spec;
+ req->firstBtn = changes->first_btn;
+ req->nBtns = changes->num_btns;
+ req->change = changes->changed;
+ req->nDeviceLedFBs = nLeds;
+ if (size > 0) {
+ char *wire;
+
+ BufAlloc(char *, wire, size);
+ ok = (wire != NULL) &&
+ (_XkbWriteSetDeviceInfo(wire, changes, &lstuff, devi) == size);
}
UnlockDisplay(dpy);
SyncHandle();
@@ -762,62 +778,64 @@ XkbChangeDeviceInfo( Display * dpy,
}
Bool
-XkbSetDeviceLedInfo( Display * dpy,
- XkbDeviceInfoPtr devi,
- unsigned ledClass,
- unsigned ledID,
- unsigned which)
+XkbSetDeviceLedInfo(Display *dpy,
+ XkbDeviceInfoPtr devi,
+ unsigned ledClass,
+ unsigned ledID,
+ unsigned which)
{
return False;
}
Bool
-XkbSetDeviceButtonActions( Display * dpy,
- XkbDeviceInfoPtr devi,
- unsigned int first,
- unsigned int nBtns)
+XkbSetDeviceButtonActions(Display *dpy,
+ XkbDeviceInfoPtr devi,
+ unsigned int first,
+ unsigned int nBtns)
{
register xkbSetDeviceInfoReq *req;
- Status ok = 0;
- int size,nLeds;
- XkbInfoPtr xkbi;
- XkbDeviceChangesRec changes;
- SetLedStuff lstuff;
+ Status ok = 0;
+ int size, nLeds;
+ XkbInfoPtr xkbi;
+ XkbDeviceChangesRec changes;
+ SetLedStuff lstuff;
if ((dpy->flags & XlibDisplayNoXkb) ||
- (!dpy->xkb_info && !XkbUseExtension(dpy,NULL,NULL)))
- return False;
- if ((!devi)||(!XkbXI_DevHasBtnActs(devi))||(first+nBtns>devi->num_btns))
- return False;
- if (nBtns==0)
- return True;
-
- bzero((char *)&changes,sizeof(XkbDeviceChangesRec));
- changes.changed= XkbXI_ButtonActionsMask;
- changes.first_btn= first;
- changes.num_btns= nBtns;
- changes.leds.led_class= XkbXINone;
- changes.leds.led_id= XkbXINone;
- changes.leds.defined= 0;
- size= nLeds= 0;
- if (_XkbSetDeviceInfoSize(devi,&changes,NULL,&size,&nLeds)!=Success)
- return False;
+ (!dpy->xkb_info && !XkbUseExtension(dpy, NULL, NULL)))
+ return False;
+ if ((!devi) || (!XkbXI_DevHasBtnActs(devi)) ||
+ (first + nBtns > devi->num_btns))
+ return False;
+ if (nBtns == 0)
+ return True;
+
+ bzero((char *) &changes, sizeof(XkbDeviceChangesRec));
+ changes.changed = XkbXI_ButtonActionsMask;
+ changes.first_btn = first;
+ changes.num_btns = nBtns;
+ changes.leds.led_class = XkbXINone;
+ changes.leds.led_id = XkbXINone;
+ changes.leds.defined = 0;
+ size = nLeds = 0;
+ if (_XkbSetDeviceInfoSize(devi, &changes, NULL, &size, &nLeds) != Success)
+ return False;
LockDisplay(dpy);
xkbi = dpy->xkb_info;
GetReq(kbSetDeviceInfo, req);
- req->length+= size/4;
- req->reqType= xkbi->codes->major_opcode;
- req->xkbReqType= X_kbSetDeviceInfo;
- req->deviceSpec= devi->device_spec;
- req->firstBtn= changes.first_btn;
- req->nBtns= changes.num_btns;
- req->change= changes.changed;
- req->nDeviceLedFBs= nLeds;
- if (size>0) {
- char * wire;
- BufAlloc(char *,wire,size);
- ok= (wire!=NULL)&&
- (_XkbWriteSetDeviceInfo(wire,&changes,&lstuff,devi)==size);
+ req->length += size / 4;
+ req->reqType = xkbi->codes->major_opcode;
+ req->xkbReqType = X_kbSetDeviceInfo;
+ req->deviceSpec = devi->device_spec;
+ req->firstBtn = changes.first_btn;
+ req->nBtns = changes.num_btns;
+ req->change = changes.changed;
+ req->nDeviceLedFBs = nLeds;
+ if (size > 0) {
+ char *wire;
+
+ BufAlloc(char *, wire, size);
+ ok = (wire != NULL) &&
+ (_XkbWriteSetDeviceInfo(wire, &changes, &lstuff, devi) == size);
}
UnlockDisplay(dpy);
SyncHandle();