From 0f834b91a4768673833ab4917e87d86c237bb1a6 Mon Sep 17 00:00:00 2001 From: marha Date: Fri, 23 Mar 2012 10:05:55 +0100 Subject: libX11 xserver fontconfig mesa pixman xkbcomp xkeyboard-config git update 23 Mar 2012 --- xorg-server/xkb/xkbtext.c | 1883 ++++++++++++++++++++++++--------------------- 1 file changed, 990 insertions(+), 893 deletions(-) (limited to 'xorg-server/xkb/xkbtext.c') diff --git a/xorg-server/xkb/xkbtext.c b/xorg-server/xkb/xkbtext.c index 8ef2b05b0..f66a08f75 100644 --- a/xorg-server/xkb/xkbtext.c +++ b/xorg-server/xkb/xkbtext.c @@ -50,168 +50,179 @@ #define BUFFER_SIZE 512 static char textBuffer[BUFFER_SIZE]; -static int tbNext= 0; +static int tbNext = 0; static char * tbGetBuffer(unsigned size) { -char *rtrn; - - if (size>=BUFFER_SIZE) - return NULL; - if ((BUFFER_SIZE-tbNext)<=size) - tbNext= 0; - rtrn= &textBuffer[tbNext]; - tbNext+= size; + char *rtrn; + + if (size >= BUFFER_SIZE) + return NULL; + if ((BUFFER_SIZE - tbNext) <= size) + tbNext = 0; + rtrn = &textBuffer[tbNext]; + tbNext += size; return rtrn; } /***====================================================================***/ char * -XkbAtomText(Atom atm,unsigned format) +XkbAtomText(Atom atm, unsigned format) { -const char *atmstr; -char *rtrn,*tmp; + const char *atmstr; + char *rtrn, *tmp; atmstr = NameForAtom(atm); if (atmstr != NULL) { - int len; - len= strlen(atmstr)+1; - if (len>BUFFER_SIZE) - len= BUFFER_SIZE-2; - rtrn= tbGetBuffer(len); - strlcpy(rtrn,atmstr,len); + int len; + + len = strlen(atmstr) + 1; + if (len > BUFFER_SIZE) + len = BUFFER_SIZE - 2; + rtrn = tbGetBuffer(len); + strlcpy(rtrn, atmstr, len); } else { - rtrn= tbGetBuffer(1); - rtrn[0]= '\0'; + rtrn = tbGetBuffer(1); + rtrn[0] = '\0'; } - if (format==XkbCFile) { - for (tmp=rtrn;*tmp!='\0';tmp++) { - if ((tmp==rtrn)&&(!isalpha(*tmp))) - *tmp= '_'; - else if (!isalnum(*tmp)) - *tmp= '_'; - } + if (format == XkbCFile) { + for (tmp = rtrn; *tmp != '\0'; tmp++) { + if ((tmp == rtrn) && (!isalpha(*tmp))) + *tmp = '_'; + else if (!isalnum(*tmp)) + *tmp = '_'; + } } - return XkbStringText(rtrn,format); + return XkbStringText(rtrn, format); } /***====================================================================***/ char * -XkbVModIndexText(XkbDescPtr xkb,unsigned ndx,unsigned format) +XkbVModIndexText(XkbDescPtr xkb, unsigned ndx, unsigned format) { -register int len; -register Atom *vmodNames; -char *rtrn; -const char *tmp; -char numBuf[20]; + register int len; + register Atom *vmodNames; + char *rtrn; + const char *tmp; + char numBuf[20]; if (xkb && xkb->names) - vmodNames= xkb->names->vmods; - else vmodNames= NULL; - - tmp= NULL; - if (ndx>=XkbNumVirtualMods) - tmp= "illegal"; - else if (vmodNames&&(vmodNames[ndx]!=None)) - tmp= NameForAtom(vmodNames[ndx]); - if (tmp==NULL) { - snprintf(numBuf,sizeof(numBuf),"%d",ndx); - tmp = numBuf; + vmodNames = xkb->names->vmods; + else + vmodNames = NULL; + + tmp = NULL; + if (ndx >= XkbNumVirtualMods) + tmp = "illegal"; + else if (vmodNames && (vmodNames[ndx] != None)) + tmp = NameForAtom(vmodNames[ndx]); + if (tmp == NULL) { + snprintf(numBuf, sizeof(numBuf), "%d", ndx); + tmp = numBuf; } - len= strlen(tmp)+1; - if (format==XkbCFile) - len+= 4; - if (len>=BUFFER_SIZE) - len= BUFFER_SIZE-1; - rtrn= tbGetBuffer(len); - if (format==XkbCFile) { - strcpy(rtrn,"vmod_"); - strncpy(&rtrn[5],tmp,len-4); + len = strlen(tmp) + 1; + if (format == XkbCFile) + len += 4; + if (len >= BUFFER_SIZE) + len = BUFFER_SIZE - 1; + rtrn = tbGetBuffer(len); + if (format == XkbCFile) { + strcpy(rtrn, "vmod_"); + strncpy(&rtrn[5], tmp, len - 4); } - else strncpy(rtrn,tmp,len); + else + strncpy(rtrn, tmp, len); return rtrn; } char * -XkbVModMaskText( XkbDescPtr xkb, - unsigned modMask, - unsigned mask, - unsigned format) +XkbVModMaskText(XkbDescPtr xkb, + unsigned modMask, unsigned mask, unsigned format) { -register int i,bit; -int len; -char *mm,*rtrn; -char *str,buf[BUFFER_SIZE]; - - if ((modMask==0)&&(mask==0)) { - rtrn= tbGetBuffer(5); - if (format==XkbCFile) - sprintf(rtrn,"0"); - else sprintf(rtrn,"none"); - return rtrn; + register int i, bit; + int len; + char *mm, *rtrn; + char *str, buf[BUFFER_SIZE]; + + if ((modMask == 0) && (mask == 0)) { + rtrn = tbGetBuffer(5); + if (format == XkbCFile) + sprintf(rtrn, "0"); + else + sprintf(rtrn, "none"); + return rtrn; } - if (modMask!=0) - mm= XkbModMaskText(modMask,format); - else mm= NULL; + if (modMask != 0) + mm = XkbModMaskText(modMask, format); + else + mm = NULL; - str= buf; - buf[0]= '\0'; + str = buf; + buf[0] = '\0'; if (mask) { - char *tmp; - for (i=0,bit=1;i=BUFFER_SIZE) - len= BUFFER_SIZE-1; - rtrn= tbGetBuffer(len+1); - rtrn[0]= '\0'; - - if (mm!=NULL) { - i= strlen(mm); - if (i>len) - i= len; - strcpy(rtrn,mm); + len += strlen(str) + (mm == NULL ? 0 : 1); + if (len >= BUFFER_SIZE) + len = BUFFER_SIZE - 1; + rtrn = tbGetBuffer(len + 1); + rtrn[0] = '\0'; + + if (mm != NULL) { + i = strlen(mm); + if (i > len) + i = len; + strcpy(rtrn, mm); } else { - i=0; + i = 0; } - if (str!=NULL) { - if (mm!=NULL) { - if (format==XkbCFile) strcat(rtrn,"|"); - else strcat(rtrn,"+"); - } - strncat(rtrn,str,len-i); + if (str != NULL) { + if (mm != NULL) { + if (format == XkbCFile) + strcat(rtrn, "|"); + else + strcat(rtrn, "+"); + } + strncat(rtrn, str, len - i); } - rtrn[len]= '\0'; + rtrn[len] = '\0'; return rtrn; } @@ -220,111 +231,119 @@ static const char *modNames[XkbNumModifiers] = { }; char * -XkbModIndexText(unsigned ndx,unsigned format) +XkbModIndexText(unsigned ndx, unsigned format) { -char * rtrn; -char buf[100]; - - if (format==XkbCFile) { - if (ndx0) { - len= strlen(from); - if (len<((*pLeft)-3)) { - strcat(to,from); - *pLeft-= len; - return TRUE; - } + register int len; + + if (*pLeft > 0) { + len = strlen(from); + if (len < ((*pLeft) - 3)) { + strcat(to, from); + *pLeft -= len; + return TRUE; + } } - *pLeft= -1; + *pLeft = -1; return FALSE; } -/*ARGSUSED*/ -static Bool -CopyNoActionArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int*sz) + /*ARGSUSED*/ static Bool +CopyNoActionArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { return TRUE; } static Bool -CopyModActionArgs(XkbDescPtr xkb,XkbAction *action,char *buf, - int* sz) +CopyModActionArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { -XkbModAction * act; -unsigned tmp; - - act= &action->mods; - tmp= XkbModActionVMods(act); - TryCopyStr(buf,"modifiers=",sz); - if (act->flags&XkbSA_UseModMapMods) - TryCopyStr(buf,"modMapMods",sz); + XkbModAction *act; + unsigned tmp; + + act = &action->mods; + tmp = XkbModActionVMods(act); + TryCopyStr(buf, "modifiers=", sz); + if (act->flags & XkbSA_UseModMapMods) + TryCopyStr(buf, "modMapMods", sz); else if (act->real_mods || tmp) { - TryCopyStr(buf, - XkbVModMaskText(xkb,act->real_mods,tmp,XkbXKBFile), - sz); + TryCopyStr(buf, + XkbVModMaskText(xkb, act->real_mods, tmp, XkbXKBFile), sz); } - else TryCopyStr(buf,"none",sz); - if (act->type==XkbSA_LockMods) - return TRUE; - if (act->flags&XkbSA_ClearLocks) - TryCopyStr(buf,",clearLocks",sz); - if (act->flags&XkbSA_LatchToLock) - TryCopyStr(buf,",latchToLock",sz); + else + TryCopyStr(buf, "none", sz); + if (act->type == XkbSA_LockMods) + return TRUE; + if (act->flags & XkbSA_ClearLocks) + TryCopyStr(buf, ",clearLocks", sz); + if (act->flags & XkbSA_LatchToLock) + TryCopyStr(buf, ",latchToLock", sz); return TRUE; } -/*ARGSUSED*/ -static Bool -CopyGroupActionArgs(XkbDescPtr xkb,XkbAction *action,char *buf, - int *sz) + /*ARGSUSED*/ static Bool +CopyGroupActionArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { -XkbGroupAction * act; -char tbuf[32]; - - act= &action->group; - TryCopyStr(buf,"group=",sz); - if (act->flags&XkbSA_GroupAbsolute) - snprintf(tbuf,sizeof(tbuf),"%d",XkbSAGroup(act)+1); - else if (XkbSAGroup(act)<0) - snprintf(tbuf,sizeof(tbuf),"%d",XkbSAGroup(act)); - else snprintf(tbuf,sizeof(tbuf),"+%d",XkbSAGroup(act)); - TryCopyStr(buf,tbuf,sz); - if (act->type==XkbSA_LockGroup) - return TRUE; - if (act->flags&XkbSA_ClearLocks) - TryCopyStr(buf,",clearLocks",sz); - if (act->flags&XkbSA_LatchToLock) - TryCopyStr(buf,",latchToLock",sz); + XkbGroupAction *act; + char tbuf[32]; + + act = &action->group; + TryCopyStr(buf, "group=", sz); + if (act->flags & XkbSA_GroupAbsolute) + snprintf(tbuf, sizeof(tbuf), "%d", XkbSAGroup(act) + 1); + else if (XkbSAGroup(act) < 0) + snprintf(tbuf, sizeof(tbuf), "%d", XkbSAGroup(act)); + else + snprintf(tbuf, sizeof(tbuf), "+%d", XkbSAGroup(act)); + TryCopyStr(buf, tbuf, sz); + if (act->type == XkbSA_LockGroup) + return TRUE; + if (act->flags & XkbSA_ClearLocks) + TryCopyStr(buf, ",clearLocks", sz); + if (act->flags & XkbSA_LatchToLock) + TryCopyStr(buf, ",latchToLock", sz); return TRUE; } -/*ARGSUSED*/ -static Bool -CopyMovePtrArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int *sz) + /*ARGSUSED*/ static Bool +CopyMovePtrArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { -XkbPtrAction * act; -int x,y; -char tbuf[32]; - - act= &action->ptr; - x= XkbPtrActionX(act); - y= XkbPtrActionY(act); - if ((act->flags&XkbSA_MoveAbsoluteX)||(x<0)) - snprintf(tbuf,sizeof(tbuf),"x=%d",x); - else snprintf(tbuf,sizeof(tbuf),"x=+%d",x); - TryCopyStr(buf,tbuf,sz); - - if ((act->flags&XkbSA_MoveAbsoluteY)||(y<0)) - snprintf(tbuf,sizeof(tbuf),",y=%d",y); - else snprintf(tbuf,sizeof(tbuf),",y=+%d",y); - TryCopyStr(buf,tbuf,sz); - if (act->flags&XkbSA_NoAcceleration) - TryCopyStr(buf,",!accel",sz); + XkbPtrAction *act; + int x, y; + char tbuf[32]; + + act = &action->ptr; + x = XkbPtrActionX(act); + y = XkbPtrActionY(act); + if ((act->flags & XkbSA_MoveAbsoluteX) || (x < 0)) + snprintf(tbuf, sizeof(tbuf), "x=%d", x); + else + snprintf(tbuf, sizeof(tbuf), "x=+%d", x); + TryCopyStr(buf, tbuf, sz); + + if ((act->flags & XkbSA_MoveAbsoluteY) || (y < 0)) + snprintf(tbuf, sizeof(tbuf), ",y=%d", y); + else + snprintf(tbuf, sizeof(tbuf), ",y=+%d", y); + TryCopyStr(buf, tbuf, sz); + if (act->flags & XkbSA_NoAcceleration) + TryCopyStr(buf, ",!accel", sz); return TRUE; } -/*ARGSUSED*/ -static Bool -CopyPtrBtnArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int *sz) + /*ARGSUSED*/ static Bool +CopyPtrBtnArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { -XkbPtrBtnAction * act; -char tbuf[32]; - - act= &action->btn; - TryCopyStr(buf,"button=",sz); - if ((act->button>0)&&(act->button<6)) { - snprintf(tbuf,sizeof(tbuf),"%d",act->button); - TryCopyStr(buf,tbuf,sz); + XkbPtrBtnAction *act; + char tbuf[32]; + + act = &action->btn; + TryCopyStr(buf, "button=", sz); + if ((act->button > 0) && (act->button < 6)) { + snprintf(tbuf, sizeof(tbuf), "%d", act->button); + TryCopyStr(buf, tbuf, sz); } - else TryCopyStr(buf,"default",sz); - if (act->count>0) { - snprintf(tbuf,sizeof(tbuf),",count=%d",act->count); - TryCopyStr(buf,tbuf,sz); + else + TryCopyStr(buf, "default", sz); + if (act->count > 0) { + snprintf(tbuf, sizeof(tbuf), ",count=%d", act->count); + TryCopyStr(buf, tbuf, sz); } - if (action->type==XkbSA_LockPtrBtn) { - switch (act->flags&(XkbSA_LockNoUnlock|XkbSA_LockNoLock)) { - case XkbSA_LockNoLock: - TryCopyStr(buf,",affect=unlock",sz); break; - case XkbSA_LockNoUnlock: - TryCopyStr(buf,",affect=lock",sz); break; - case XkbSA_LockNoUnlock|XkbSA_LockNoLock: - TryCopyStr(buf,",affect=neither",sz); break; - default: - TryCopyStr(buf,",affect=both",sz); break; - } + if (action->type == XkbSA_LockPtrBtn) { + switch (act->flags & (XkbSA_LockNoUnlock | XkbSA_LockNoLock)) { + case XkbSA_LockNoLock: + TryCopyStr(buf, ",affect=unlock", sz); + break; + case XkbSA_LockNoUnlock: + TryCopyStr(buf, ",affect=lock", sz); + break; + case XkbSA_LockNoUnlock | XkbSA_LockNoLock: + TryCopyStr(buf, ",affect=neither", sz); + break; + default: + TryCopyStr(buf, ",affect=both", sz); + break; + } } return TRUE; } -/*ARGSUSED*/ -static Bool -CopySetPtrDfltArgs(XkbDescPtr xkb,XkbAction *action,char *buf, - int *sz) + /*ARGSUSED*/ static Bool +CopySetPtrDfltArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { -XkbPtrDfltAction * act; -char tbuf[32]; - - act= &action->dflt; - if (act->affect==XkbSA_AffectDfltBtn) { - TryCopyStr(buf,"affect=button,button=",sz); - if ((act->flags&XkbSA_DfltBtnAbsolute)||(XkbSAPtrDfltValue(act)<0)) - snprintf(tbuf,sizeof(tbuf),"%d",XkbSAPtrDfltValue(act)); - else snprintf(tbuf,sizeof(tbuf),"+%d",XkbSAPtrDfltValue(act)); - TryCopyStr(buf,tbuf,sz); + XkbPtrDfltAction *act; + char tbuf[32]; + + act = &action->dflt; + if (act->affect == XkbSA_AffectDfltBtn) { + TryCopyStr(buf, "affect=button,button=", sz); + if ((act->flags & XkbSA_DfltBtnAbsolute) || + (XkbSAPtrDfltValue(act) < 0)) + snprintf(tbuf, sizeof(tbuf), "%d", XkbSAPtrDfltValue(act)); + else + snprintf(tbuf, sizeof(tbuf), "+%d", XkbSAPtrDfltValue(act)); + TryCopyStr(buf, tbuf, sz); } return TRUE; } static Bool -CopyISOLockArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int *sz) +CopyISOLockArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { -XkbISOAction * act; -char tbuf[64]; - - act= &action->iso; - if (act->flags&XkbSA_ISODfltIsGroup) { - TryCopyStr(tbuf,"group=",sz); - if (act->flags&XkbSA_GroupAbsolute) - snprintf(tbuf,sizeof(tbuf),"%d",XkbSAGroup(act)+1); - else if (XkbSAGroup(act)<0) - snprintf(tbuf,sizeof(tbuf),"%d",XkbSAGroup(act)); - else snprintf(tbuf,sizeof(tbuf),"+%d",XkbSAGroup(act)); - TryCopyStr(buf,tbuf,sz); + XkbISOAction *act; + char tbuf[64]; + + act = &action->iso; + if (act->flags & XkbSA_ISODfltIsGroup) { + TryCopyStr(tbuf, "group=", sz); + if (act->flags & XkbSA_GroupAbsolute) + snprintf(tbuf, sizeof(tbuf), "%d", XkbSAGroup(act) + 1); + else if (XkbSAGroup(act) < 0) + snprintf(tbuf, sizeof(tbuf), "%d", XkbSAGroup(act)); + else + snprintf(tbuf, sizeof(tbuf), "+%d", XkbSAGroup(act)); + TryCopyStr(buf, tbuf, sz); } else { - unsigned tmp; - tmp= XkbModActionVMods(act); - TryCopyStr(buf,"modifiers=",sz); - if (act->flags&XkbSA_UseModMapMods) - TryCopyStr(buf,"modMapMods",sz); - else if (act->real_mods || tmp) { - if (act->real_mods) { - TryCopyStr(buf,XkbModMaskText(act->real_mods,XkbXKBFile),sz); - if (tmp) - TryCopyStr(buf,"+",sz); - } - if (tmp) - TryCopyStr(buf,XkbVModMaskText(xkb,0,tmp,XkbXKBFile),sz); - } - else TryCopyStr(buf,"none",sz); + unsigned tmp; + + tmp = XkbModActionVMods(act); + TryCopyStr(buf, "modifiers=", sz); + if (act->flags & XkbSA_UseModMapMods) + TryCopyStr(buf, "modMapMods", sz); + else if (act->real_mods || tmp) { + if (act->real_mods) { + TryCopyStr(buf, XkbModMaskText(act->real_mods, XkbXKBFile), sz); + if (tmp) + TryCopyStr(buf, "+", sz); + } + if (tmp) + TryCopyStr(buf, XkbVModMaskText(xkb, 0, tmp, XkbXKBFile), sz); + } + else + TryCopyStr(buf, "none", sz); } - TryCopyStr(buf,",affect=",sz); - if ((act->affect&XkbSA_ISOAffectMask)==0) - TryCopyStr(buf,"all",sz); + TryCopyStr(buf, ",affect=", sz); + if ((act->affect & XkbSA_ISOAffectMask) == 0) + TryCopyStr(buf, "all", sz); else { - int nOut= 0; - if ((act->affect&XkbSA_ISONoAffectMods)==0) { - TryCopyStr(buf,"mods",sz); - nOut++; - } - if ((act->affect&XkbSA_ISONoAffectGroup)==0) { - snprintf(tbuf,sizeof(tbuf),"%sgroups",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if ((act->affect&XkbSA_ISONoAffectPtr)==0) { - snprintf(tbuf,sizeof(tbuf),"%spointer",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if ((act->affect&XkbSA_ISONoAffectCtrls)==0) { - snprintf(tbuf,sizeof(tbuf),"%scontrols",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } + int nOut = 0; + + if ((act->affect & XkbSA_ISONoAffectMods) == 0) { + TryCopyStr(buf, "mods", sz); + nOut++; + } + if ((act->affect & XkbSA_ISONoAffectGroup) == 0) { + snprintf(tbuf, sizeof(tbuf), "%sgroups", (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if ((act->affect & XkbSA_ISONoAffectPtr) == 0) { + snprintf(tbuf, sizeof(tbuf), "%spointer", (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if ((act->affect & XkbSA_ISONoAffectCtrls) == 0) { + snprintf(tbuf, sizeof(tbuf), "%scontrols", (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } } return TRUE; } -/*ARGSUSED*/ -static Bool -CopySwitchScreenArgs(XkbDescPtr xkb,XkbAction *action,char *buf, - int *sz) + /*ARGSUSED*/ static Bool +CopySwitchScreenArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { -XkbSwitchScreenAction * act; -char tbuf[32]; - - act= &action->screen; - if ((act->flags&XkbSA_SwitchAbsolute)||(XkbSAScreen(act)<0)) - snprintf(tbuf,sizeof(tbuf),"screen=%d",XkbSAScreen(act)); - else snprintf(tbuf,sizeof(tbuf),"screen=+%d",XkbSAScreen(act)); - TryCopyStr(buf,tbuf,sz); - if (act->flags&XkbSA_SwitchApplication) - TryCopyStr(buf,",!same",sz); - else TryCopyStr(buf,",same",sz); + XkbSwitchScreenAction *act; + char tbuf[32]; + + act = &action->screen; + if ((act->flags & XkbSA_SwitchAbsolute) || (XkbSAScreen(act) < 0)) + snprintf(tbuf, sizeof(tbuf), "screen=%d", XkbSAScreen(act)); + else + snprintf(tbuf, sizeof(tbuf), "screen=+%d", XkbSAScreen(act)); + TryCopyStr(buf, tbuf, sz); + if (act->flags & XkbSA_SwitchApplication) + TryCopyStr(buf, ",!same", sz); + else + TryCopyStr(buf, ",same", sz); return TRUE; } -/*ARGSUSED*/ -static Bool -CopySetLockControlsArgs(XkbDescPtr xkb,XkbAction *action, - char *buf,int *sz) + /*ARGSUSED*/ static Bool +CopySetLockControlsArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { -XkbCtrlsAction * act; -unsigned tmp; -char tbuf[32]; - - act= &action->ctrls; - tmp= XkbActionCtrls(act); - TryCopyStr(buf,"controls=",sz); - if (tmp==0) - TryCopyStr(buf,"none",sz); - else if ((tmp&XkbAllBooleanCtrlsMask)==XkbAllBooleanCtrlsMask) - TryCopyStr(buf,"all",sz); + XkbCtrlsAction *act; + unsigned tmp; + char tbuf[32]; + + act = &action->ctrls; + tmp = XkbActionCtrls(act); + TryCopyStr(buf, "controls=", sz); + if (tmp == 0) + TryCopyStr(buf, "none", sz); + else if ((tmp & XkbAllBooleanCtrlsMask) == XkbAllBooleanCtrlsMask) + TryCopyStr(buf, "all", sz); else { - int nOut= 0; - if (tmp&XkbRepeatKeysMask) { - snprintf(tbuf,sizeof(tbuf),"%sRepeatKeys",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if (tmp&XkbSlowKeysMask) { - snprintf(tbuf,sizeof(tbuf),"%sSlowKeys",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if (tmp&XkbBounceKeysMask) { - snprintf(tbuf,sizeof(tbuf),"%sBounceKeys",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if (tmp&XkbStickyKeysMask) { - snprintf(tbuf,sizeof(tbuf),"%sStickyKeys",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if (tmp&XkbMouseKeysMask) { - snprintf(tbuf,sizeof(tbuf),"%sMouseKeys",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if (tmp&XkbMouseKeysAccelMask) { - snprintf(tbuf,sizeof(tbuf),"%sMouseKeysAccel",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if (tmp&XkbAccessXKeysMask) { - snprintf(tbuf,sizeof(tbuf),"%sAccessXKeys",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if (tmp&XkbAccessXTimeoutMask) { - snprintf(tbuf,sizeof(tbuf),"%sAccessXTimeout",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if (tmp&XkbAccessXFeedbackMask) { - snprintf(tbuf,sizeof(tbuf),"%sAccessXFeedback",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if (tmp&XkbAudibleBellMask) { - snprintf(tbuf,sizeof(tbuf),"%sAudibleBell",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if (tmp&XkbOverlay1Mask) { - snprintf(tbuf,sizeof(tbuf),"%sOverlay1",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if (tmp&XkbOverlay2Mask) { - snprintf(tbuf,sizeof(tbuf),"%sOverlay2",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } - if (tmp&XkbIgnoreGroupLockMask) { - snprintf(tbuf,sizeof(tbuf),"%sIgnoreGroupLock",(nOut>0?"+":"")); - TryCopyStr(buf,tbuf,sz); - nOut++; - } + int nOut = 0; + + if (tmp & XkbRepeatKeysMask) { + snprintf(tbuf, sizeof(tbuf), "%sRepeatKeys", (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if (tmp & XkbSlowKeysMask) { + snprintf(tbuf, sizeof(tbuf), "%sSlowKeys", (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if (tmp & XkbBounceKeysMask) { + snprintf(tbuf, sizeof(tbuf), "%sBounceKeys", (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if (tmp & XkbStickyKeysMask) { + snprintf(tbuf, sizeof(tbuf), "%sStickyKeys", (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if (tmp & XkbMouseKeysMask) { + snprintf(tbuf, sizeof(tbuf), "%sMouseKeys", (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if (tmp & XkbMouseKeysAccelMask) { + snprintf(tbuf, sizeof(tbuf), "%sMouseKeysAccel", + (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if (tmp & XkbAccessXKeysMask) { + snprintf(tbuf, sizeof(tbuf), "%sAccessXKeys", + (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if (tmp & XkbAccessXTimeoutMask) { + snprintf(tbuf, sizeof(tbuf), "%sAccessXTimeout", + (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if (tmp & XkbAccessXFeedbackMask) { + snprintf(tbuf, sizeof(tbuf), "%sAccessXFeedback", + (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if (tmp & XkbAudibleBellMask) { + snprintf(tbuf, sizeof(tbuf), "%sAudibleBell", + (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if (tmp & XkbOverlay1Mask) { + snprintf(tbuf, sizeof(tbuf), "%sOverlay1", (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if (tmp & XkbOverlay2Mask) { + snprintf(tbuf, sizeof(tbuf), "%sOverlay2", (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } + if (tmp & XkbIgnoreGroupLockMask) { + snprintf(tbuf, sizeof(tbuf), "%sIgnoreGroupLock", + (nOut > 0 ? "+" : "")); + TryCopyStr(buf, tbuf, sz); + nOut++; + } } return TRUE; } -/*ARGSUSED*/ -static Bool -CopyActionMessageArgs(XkbDescPtr xkb,XkbAction *action,char *buf, - int *sz) + /*ARGSUSED*/ static Bool +CopyActionMessageArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { -XkbMessageAction * act; -unsigned all; -char tbuf[32]; - - act= &action->msg; - all= XkbSA_MessageOnPress|XkbSA_MessageOnRelease; - TryCopyStr(buf,"report=",sz); - if ((act->flags&all)==0) - TryCopyStr(buf,"none",sz); - else if ((act->flags&all)==all) - TryCopyStr(buf,"all",sz); - else if (act->flags&XkbSA_MessageOnPress) - TryCopyStr(buf,"KeyPress",sz); - else TryCopyStr(buf,"KeyRelease",sz); - snprintf(tbuf,sizeof(tbuf),",data[0]=0x%02x",act->message[0]); TryCopyStr(buf,tbuf,sz); - snprintf(tbuf,sizeof(tbuf),",data[1]=0x%02x",act->message[1]); TryCopyStr(buf,tbuf,sz); - snprintf(tbuf,sizeof(tbuf),",data[2]=0x%02x",act->message[2]); TryCopyStr(buf,tbuf,sz); - snprintf(tbuf,sizeof(tbuf),",data[3]=0x%02x",act->message[3]); TryCopyStr(buf,tbuf,sz); - snprintf(tbuf,sizeof(tbuf),",data[4]=0x%02x",act->message[4]); TryCopyStr(buf,tbuf,sz); - snprintf(tbuf,sizeof(tbuf),",data[5]=0x%02x",act->message[5]); TryCopyStr(buf,tbuf,sz); + XkbMessageAction *act; + unsigned all; + char tbuf[32]; + + act = &action->msg; + all = XkbSA_MessageOnPress | XkbSA_MessageOnRelease; + TryCopyStr(buf, "report=", sz); + if ((act->flags & all) == 0) + TryCopyStr(buf, "none", sz); + else if ((act->flags & all) == all) + TryCopyStr(buf, "all", sz); + else if (act->flags & XkbSA_MessageOnPress) + TryCopyStr(buf, "KeyPress", sz); + else + TryCopyStr(buf, "KeyRelease", sz); + snprintf(tbuf, sizeof(tbuf), ",data[0]=0x%02x", act->message[0]); + TryCopyStr(buf, tbuf, sz); + snprintf(tbuf, sizeof(tbuf), ",data[1]=0x%02x", act->message[1]); + TryCopyStr(buf, tbuf, sz); + snprintf(tbuf, sizeof(tbuf), ",data[2]=0x%02x", act->message[2]); + TryCopyStr(buf, tbuf, sz); + snprintf(tbuf, sizeof(tbuf), ",data[3]=0x%02x", act->message[3]); + TryCopyStr(buf, tbuf, sz); + snprintf(tbuf, sizeof(tbuf), ",data[4]=0x%02x", act->message[4]); + TryCopyStr(buf, tbuf, sz); + snprintf(tbuf, sizeof(tbuf), ",data[5]=0x%02x", act->message[5]); + TryCopyStr(buf, tbuf, sz); return TRUE; } static Bool -CopyRedirectKeyArgs(XkbDescPtr xkb,XkbAction *action,char *buf, - int *sz) +CopyRedirectKeyArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { -XkbRedirectKeyAction * act; -char tbuf[32],*tmp; -unsigned kc; -unsigned vmods,vmods_mask; - - act= &action->redirect; - kc= act->new_key; - vmods= XkbSARedirectVMods(act); - vmods_mask= XkbSARedirectVModsMask(act); - if (xkb && xkb->names && xkb->names->keys && (kc<=xkb->max_key_code) && - (xkb->names->keys[kc].name[0]!='\0')) { - char *kn; - kn= XkbKeyNameText(xkb->names->keys[kc].name,XkbXKBFile); - snprintf(tbuf,sizeof(tbuf),"key=%s",kn); + XkbRedirectKeyAction *act; + char tbuf[32], *tmp; + unsigned kc; + unsigned vmods, vmods_mask; + + act = &action->redirect; + kc = act->new_key; + vmods = XkbSARedirectVMods(act); + vmods_mask = XkbSARedirectVModsMask(act); + if (xkb && xkb->names && xkb->names->keys && (kc <= xkb->max_key_code) && + (xkb->names->keys[kc].name[0] != '\0')) { + char *kn; + + kn = XkbKeyNameText(xkb->names->keys[kc].name, XkbXKBFile); + snprintf(tbuf, sizeof(tbuf), "key=%s", kn); } - else snprintf(tbuf,sizeof(tbuf),"key=%d",kc); - TryCopyStr(buf,tbuf,sz); - if ((act->mods_mask==0)&&(vmods_mask==0)) - return TRUE; - if ((act->mods_mask==XkbAllModifiersMask)&& - (vmods_mask==XkbAllVirtualModsMask)) { - tmp= XkbVModMaskText(xkb,act->mods,vmods,XkbXKBFile); - TryCopyStr(buf,",mods=",sz); - TryCopyStr(buf,tmp,sz); + else + snprintf(tbuf, sizeof(tbuf), "key=%d", kc); + TryCopyStr(buf, tbuf, sz); + if ((act->mods_mask == 0) && (vmods_mask == 0)) + return TRUE; + if ((act->mods_mask == XkbAllModifiersMask) && + (vmods_mask == XkbAllVirtualModsMask)) { + tmp = XkbVModMaskText(xkb, act->mods, vmods, XkbXKBFile); + TryCopyStr(buf, ",mods=", sz); + TryCopyStr(buf, tmp, sz); } else { - if ((act->mods_mask&act->mods)||(vmods_mask&vmods)) { - tmp= XkbVModMaskText(xkb,act->mods_mask&act->mods, - vmods_mask&vmods,XkbXKBFile); - TryCopyStr(buf,",mods= ",sz); - TryCopyStr(buf,tmp,sz); - } - if ((act->mods_mask&(~act->mods))||(vmods_mask&(~vmods))) { - tmp= XkbVModMaskText(xkb,act->mods_mask&(~act->mods), - vmods_mask&(~vmods),XkbXKBFile); - TryCopyStr(buf,",clearMods= ",sz); - TryCopyStr(buf,tmp,sz); - } + if ((act->mods_mask & act->mods) || (vmods_mask & vmods)) { + tmp = XkbVModMaskText(xkb, act->mods_mask & act->mods, + vmods_mask & vmods, XkbXKBFile); + TryCopyStr(buf, ",mods= ", sz); + TryCopyStr(buf, tmp, sz); + } + if ((act->mods_mask & (~act->mods)) || (vmods_mask & (~vmods))) { + tmp = XkbVModMaskText(xkb, act->mods_mask & (~act->mods), + vmods_mask & (~vmods), XkbXKBFile); + TryCopyStr(buf, ",clearMods= ", sz); + TryCopyStr(buf, tmp, sz); + } } return TRUE; } -/*ARGSUSED*/ -static Bool -CopyDeviceBtnArgs(XkbDescPtr xkb,XkbAction *action,char *buf, - int *sz) + /*ARGSUSED*/ static Bool +CopyDeviceBtnArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { -XkbDeviceBtnAction * act; -char tbuf[32]; - - act= &action->devbtn; - snprintf(tbuf,sizeof(tbuf),"device= %d",act->device); TryCopyStr(buf,tbuf,sz); - TryCopyStr(buf,",button=",sz); - snprintf(tbuf,sizeof(tbuf),"%d",act->button); - TryCopyStr(buf,tbuf,sz); - if (act->count>0) { - snprintf(tbuf,sizeof(tbuf),",count=%d",act->count); - TryCopyStr(buf,tbuf,sz); + XkbDeviceBtnAction *act; + char tbuf[32]; + + act = &action->devbtn; + snprintf(tbuf, sizeof(tbuf), "device= %d", act->device); + TryCopyStr(buf, tbuf, sz); + TryCopyStr(buf, ",button=", sz); + snprintf(tbuf, sizeof(tbuf), "%d", act->button); + TryCopyStr(buf, tbuf, sz); + if (act->count > 0) { + snprintf(tbuf, sizeof(tbuf), ",count=%d", act->count); + TryCopyStr(buf, tbuf, sz); } - if (action->type==XkbSA_LockDeviceBtn) { - switch (act->flags&(XkbSA_LockNoUnlock|XkbSA_LockNoLock)) { - case XkbSA_LockNoLock: - TryCopyStr(buf,",affect=unlock",sz); break; - case XkbSA_LockNoUnlock: - TryCopyStr(buf,",affect=lock",sz); break; - case XkbSA_LockNoUnlock|XkbSA_LockNoLock: - TryCopyStr(buf,",affect=neither",sz); break; - default: - TryCopyStr(buf,",affect=both",sz); break; - } + if (action->type == XkbSA_LockDeviceBtn) { + switch (act->flags & (XkbSA_LockNoUnlock | XkbSA_LockNoLock)) { + case XkbSA_LockNoLock: + TryCopyStr(buf, ",affect=unlock", sz); + break; + case XkbSA_LockNoUnlock: + TryCopyStr(buf, ",affect=lock", sz); + break; + case XkbSA_LockNoUnlock | XkbSA_LockNoLock: + TryCopyStr(buf, ",affect=neither", sz); + break; + default: + TryCopyStr(buf, ",affect=both", sz); + break; + } } return TRUE; } -/*ARGSUSED*/ -static Bool -CopyOtherArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int *sz) + /*ARGSUSED*/ static Bool +CopyOtherArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) { -XkbAnyAction * act; -char tbuf[32]; - - act= &action->any; - snprintf(tbuf,sizeof(tbuf),"type=0x%02x",act->type); TryCopyStr(buf,tbuf,sz); - snprintf(tbuf,sizeof(tbuf),",data[0]=0x%02x",act->data[0]); TryCopyStr(buf,tbuf,sz); - snprintf(tbuf,sizeof(tbuf),",data[1]=0x%02x",act->data[1]); TryCopyStr(buf,tbuf,sz); - snprintf(tbuf,sizeof(tbuf),",data[2]=0x%02x",act->data[2]); TryCopyStr(buf,tbuf,sz); - snprintf(tbuf,sizeof(tbuf),",data[3]=0x%02x",act->data[3]); TryCopyStr(buf,tbuf,sz); - snprintf(tbuf,sizeof(tbuf),",data[4]=0x%02x",act->data[4]); TryCopyStr(buf,tbuf,sz); - snprintf(tbuf,sizeof(tbuf),",data[5]=0x%02x",act->data[5]); TryCopyStr(buf,tbuf,sz); - snprintf(tbuf,sizeof(tbuf),",data[6]=0x%02x",act->data[6]); TryCopyStr(buf,tbuf,sz); + XkbAnyAction *act; + char tbuf[32]; + + act = &action->any; + snprintf(tbuf, sizeof(tbuf), "type=0x%02x", act->type); + TryCopyStr(buf, tbuf, sz); + snprintf(tbuf, sizeof(tbuf), ",data[0]=0x%02x", act->data[0]); + TryCopyStr(buf, tbuf, sz); + snprintf(tbuf, sizeof(tbuf), ",data[1]=0x%02x", act->data[1]); + TryCopyStr(buf, tbuf, sz); + snprintf(tbuf, sizeof(tbuf), ",data[2]=0x%02x", act->data[2]); + TryCopyStr(buf, tbuf, sz); + snprintf(tbuf, sizeof(tbuf), ",data[3]=0x%02x", act->data[3]); + TryCopyStr(buf, tbuf, sz); + snprintf(tbuf, sizeof(tbuf), ",data[4]=0x%02x", act->data[4]); + TryCopyStr(buf, tbuf, sz); + snprintf(tbuf, sizeof(tbuf), ",data[5]=0x%02x", act->data[5]); + TryCopyStr(buf, tbuf, sz); + snprintf(tbuf, sizeof(tbuf), ",data[6]=0x%02x", act->data[6]); + TryCopyStr(buf, tbuf, sz); return TRUE; } -typedef Bool (*actionCopy)( - XkbDescPtr /* xkb */, - XkbAction * /* action */, - char * /* buf */, - int* /* sz */ -); -static actionCopy copyActionArgs[XkbSA_NumActions] = { - CopyNoActionArgs /* NoAction */, - CopyModActionArgs /* SetMods */, - CopyModActionArgs /* LatchMods */, - CopyModActionArgs /* LockMods */, - CopyGroupActionArgs /* SetGroup */, - CopyGroupActionArgs /* LatchGroup */, - CopyGroupActionArgs /* LockGroup */, - CopyMovePtrArgs /* MovePtr */, - CopyPtrBtnArgs /* PtrBtn */, - CopyPtrBtnArgs /* LockPtrBtn */, - CopySetPtrDfltArgs /* SetPtrDflt */, - CopyISOLockArgs /* ISOLock */, - CopyNoActionArgs /* Terminate */, - CopySwitchScreenArgs /* SwitchScreen */, - CopySetLockControlsArgs /* SetControls */, - CopySetLockControlsArgs /* LockControls */, - CopyActionMessageArgs /* ActionMessage*/, - CopyRedirectKeyArgs /* RedirectKey */, - CopyDeviceBtnArgs /* DeviceBtn */, - CopyDeviceBtnArgs /* LockDeviceBtn*/ +typedef Bool (*actionCopy) (XkbDescPtr /* xkb */ , + XkbAction * /* action */ , + char * /* buf */ , + int * /* sz */ + ); + +static actionCopy copyActionArgs[XkbSA_NumActions] = { + CopyNoActionArgs /* NoAction */ , + CopyModActionArgs /* SetMods */ , + CopyModActionArgs /* LatchMods */ , + CopyModActionArgs /* LockMods */ , + CopyGroupActionArgs /* SetGroup */ , + CopyGroupActionArgs /* LatchGroup */ , + CopyGroupActionArgs /* LockGroup */ , + CopyMovePtrArgs /* MovePtr */ , + CopyPtrBtnArgs /* PtrBtn */ , + CopyPtrBtnArgs /* LockPtrBtn */ , + CopySetPtrDfltArgs /* SetPtrDflt */ , + CopyISOLockArgs /* ISOLock */ , + CopyNoActionArgs /* Terminate */ , + CopySwitchScreenArgs /* SwitchScreen */ , + CopySetLockControlsArgs /* SetControls */ , + CopySetLockControlsArgs /* LockControls */ , + CopyActionMessageArgs /* ActionMessage */ , + CopyRedirectKeyArgs /* RedirectKey */ , + CopyDeviceBtnArgs /* DeviceBtn */ , + CopyDeviceBtnArgs /* LockDeviceBtn */ }; #define ACTION_SZ 256 char * -XkbActionText(XkbDescPtr xkb,XkbAction *action,unsigned format) +XkbActionText(XkbDescPtr xkb, XkbAction *action, unsigned format) { -char buf[ACTION_SZ],*tmp; -int sz; - - if (format==XkbCFile) { - snprintf(buf,sizeof(buf), - "{ %20s, { 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x } }", - XkbActionTypeText(action->type,XkbCFile), - action->any.data[0],action->any.data[1],action->any.data[2], - action->any.data[3],action->any.data[4],action->any.data[5], - action->any.data[6]); + char buf[ACTION_SZ], *tmp; + int sz; + + if (format == XkbCFile) { + snprintf(buf, sizeof(buf), + "{ %20s, { 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x } }", + XkbActionTypeText(action->type, XkbCFile), + action->any.data[0], action->any.data[1], action->any.data[2], + action->any.data[3], action->any.data[4], action->any.data[5], + action->any.data[6]); } else { - snprintf(buf,sizeof(buf),"%s(",XkbActionTypeText(action->type,XkbXKBFile)); - sz= ACTION_SZ-strlen(buf)+2; /* room for close paren and NULL */ - if (action->type<(unsigned)XkbSA_NumActions) - (*copyActionArgs[action->type])(xkb,action,buf,&sz); - else CopyOtherArgs(xkb,action,buf,&sz); - TryCopyStr(buf,")",&sz); + snprintf(buf, sizeof(buf), "%s(", + XkbActionTypeText(action->type, XkbXKBFile)); + sz = ACTION_SZ - strlen(buf) + 2; /* room for close paren and NULL */ + if (action->type < (unsigned) XkbSA_NumActions) + (*copyActionArgs[action->type]) (xkb, action, buf, &sz); + else + CopyOtherArgs(xkb, action, buf, &sz); + TryCopyStr(buf, ")", &sz); } - tmp= tbGetBuffer(strlen(buf)+1); - if (tmp!=NULL) - strcpy(tmp,buf); + tmp = tbGetBuffer(strlen(buf) + 1); + if (tmp != NULL) + strcpy(tmp, buf); return tmp; } char * -XkbBehaviorText(XkbDescPtr xkb,XkbBehavior *behavior,unsigned format) +XkbBehaviorText(XkbDescPtr xkb, XkbBehavior * behavior, unsigned format) { -char buf[256],*tmp; - - if (format==XkbCFile) { - if (behavior->type==XkbKB_Default) - snprintf(buf,sizeof(buf),"{ 0, 0 }"); - else snprintf(buf,sizeof(buf),"{ %3d, 0x%02x }",behavior->type,behavior->data); + char buf[256], *tmp; + + if (format == XkbCFile) { + if (behavior->type == XkbKB_Default) + snprintf(buf, sizeof(buf), "{ 0, 0 }"); + else + snprintf(buf, sizeof(buf), "{ %3d, 0x%02x }", behavior->type, + behavior->data); } else { - unsigned type,permanent; - type= behavior->type&XkbKB_OpMask; - permanent=((behavior->type&XkbKB_Permanent)!=0); - - if (type==XkbKB_Lock) { - snprintf(buf,sizeof(buf),"lock= %s",(permanent?"Permanent":"TRUE")); - } - else if (type==XkbKB_RadioGroup) { - int g; - char *tmp; - g= ((behavior->data)&(~XkbKB_RGAllowNone))+1; - if (XkbKB_RGAllowNone&behavior->data) { - snprintf(buf,sizeof(buf),"allowNone,"); - tmp= &buf[strlen(buf)]; - } - else tmp= buf; - if (permanent) - sprintf(tmp,"permanentRadioGroup= %d",g); - else sprintf(tmp,"radioGroup= %d",g); - } - else if ((type==XkbKB_Overlay1)||(type==XkbKB_Overlay2)) { - int ndx,kc; - char *kn; - - ndx= ((type==XkbKB_Overlay1)?1:2); - kc= behavior->data; - if ((xkb)&&(xkb->names)&&(xkb->names->keys)) - kn= XkbKeyNameText(xkb->names->keys[kc].name,XkbXKBFile); - else { - static char tbuf[8]; - snprintf(tbuf,sizeof(tbuf),"%d",kc); - kn= tbuf; - } - if (permanent) - snprintf(buf,sizeof(buf),"permanentOverlay%d= %s",ndx,kn); - else snprintf(buf,sizeof(buf),"overlay%d= %s",ndx,kn); - } + unsigned type, permanent; + + type = behavior->type & XkbKB_OpMask; + permanent = ((behavior->type & XkbKB_Permanent) != 0); + + if (type == XkbKB_Lock) { + snprintf(buf, sizeof(buf), "lock= %s", + (permanent ? "Permanent" : "TRUE")); + } + else if (type == XkbKB_RadioGroup) { + int g; + char *tmp; + + g = ((behavior->data) & (~XkbKB_RGAllowNone)) + 1; + if (XkbKB_RGAllowNone & behavior->data) { + snprintf(buf, sizeof(buf), "allowNone,"); + tmp = &buf[strlen(buf)]; + } + else + tmp = buf; + if (permanent) + sprintf(tmp, "permanentRadioGroup= %d", g); + else + sprintf(tmp, "radioGroup= %d", g); + } + else if ((type == XkbKB_Overlay1) || (type == XkbKB_Overlay2)) { + int ndx, kc; + char *kn; + + ndx = ((type == XkbKB_Overlay1) ? 1 : 2); + kc = behavior->data; + if ((xkb) && (xkb->names) && (xkb->names->keys)) + kn = XkbKeyNameText(xkb->names->keys[kc].name, XkbXKBFile); + else { + static char tbuf[8]; + + snprintf(tbuf, sizeof(tbuf), "%d", kc); + kn = tbuf; + } + if (permanent) + snprintf(buf, sizeof(buf), "permanentOverlay%d= %s", ndx, kn); + else + snprintf(buf, sizeof(buf), "overlay%d= %s", ndx, kn); + } } - tmp= tbGetBuffer(strlen(buf)+1); - if (tmp!=NULL) - strcpy(tmp,buf); + tmp = tbGetBuffer(strlen(buf) + 1); + if (tmp != NULL) + strcpy(tmp, buf); return tmp; } @@ -1214,15 +1311,15 @@ char buf[256],*tmp; char * XkbIndentText(unsigned size) { -static char buf[32]; -register int i; + static char buf[32]; + register int i; - if (size>31) - size= 31; + if (size > 31) + size = 31; - for (i=0;i