diff options
author | marha <marha@users.sourceforge.net> | 2012-03-23 10:05:55 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2012-03-23 10:05:55 +0100 |
commit | 0f834b91a4768673833ab4917e87d86c237bb1a6 (patch) | |
tree | 363489504ed4b2d360259b8de4c9e392918e5d02 /xorg-server/xkb/xkbtext.c | |
parent | fc72edebf875378459368c5383d9023730cbca54 (diff) | |
download | vcxsrv-0f834b91a4768673833ab4917e87d86c237bb1a6.tar.gz vcxsrv-0f834b91a4768673833ab4917e87d86c237bb1a6.tar.bz2 vcxsrv-0f834b91a4768673833ab4917e87d86c237bb1a6.zip |
libX11 xserver fontconfig mesa pixman xkbcomp xkeyboard-config git update
23 Mar 2012
Diffstat (limited to 'xorg-server/xkb/xkbtext.c')
-rw-r--r-- | xorg-server/xkb/xkbtext.c | 1883 |
1 files changed, 990 insertions, 893 deletions
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<XkbNumVirtualMods;i++,bit<<=1) { - if (mask&bit) { - tmp= XkbVModIndexText(xkb,i,format); - len= strlen(tmp)+1+(str==buf?0:1); - if (format==XkbCFile) - len+= 4; - if ((str-(buf+len))<=BUFFER_SIZE) { - if (str!=buf) { - if (format==XkbCFile) *str++= '|'; - else *str++= '+'; - len--; - } - } - if (format==XkbCFile) - sprintf(str,"%sMask",tmp); - else strcpy(str,tmp); - str= &str[len-1]; - } - } - str= buf; + char *tmp; + + for (i = 0, bit = 1; i < XkbNumVirtualMods; i++, bit <<= 1) { + if (mask & bit) { + tmp = XkbVModIndexText(xkb, i, format); + len = strlen(tmp) + 1 + (str == buf ? 0 : 1); + if (format == XkbCFile) + len += 4; + if ((str - (buf + len)) <= BUFFER_SIZE) { + if (str != buf) { + if (format == XkbCFile) + *str++ = '|'; + else + *str++ = '+'; + len--; + } + } + if (format == XkbCFile) + sprintf(str, "%sMask", tmp); + else + strcpy(str, tmp); + str = &str[len - 1]; + } + } + str = buf; } - else str= NULL; - if (mm) - len= strlen(mm); - else len= 0; + else + str = NULL; + if (mm) + len = strlen(mm); + else + len = 0; if (str) - 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); + 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 (ndx<XkbNumModifiers) - snprintf(buf,sizeof(buf),"%sMapIndex",modNames[ndx]); - else if (ndx==XkbNoModifier) - snprintf(buf,sizeof(buf),"XkbNoModifier"); - else snprintf(buf,sizeof(buf),"0x%02x",ndx); + char *rtrn; + char buf[100]; + + if (format == XkbCFile) { + if (ndx < XkbNumModifiers) + snprintf(buf, sizeof(buf), "%sMapIndex", modNames[ndx]); + else if (ndx == XkbNoModifier) + snprintf(buf, sizeof(buf), "XkbNoModifier"); + else + snprintf(buf, sizeof(buf), "0x%02x", ndx); } else { - if (ndx<XkbNumModifiers) - strcpy(buf,modNames[ndx]); - else if (ndx==XkbNoModifier) - strcpy(buf,"none"); - else snprintf(buf,sizeof(buf),"ILLEGAL_%02x",ndx); + if (ndx < XkbNumModifiers) + strcpy(buf, modNames[ndx]); + else if (ndx == XkbNoModifier) + strcpy(buf, "none"); + else + snprintf(buf, sizeof(buf), "ILLEGAL_%02x", ndx); } - rtrn= tbGetBuffer(strlen(buf)+1); - strcpy(rtrn,buf); + rtrn = tbGetBuffer(strlen(buf) + 1); + strcpy(rtrn, buf); return rtrn; } char * -XkbModMaskText(unsigned mask,unsigned format) +XkbModMaskText(unsigned mask, unsigned format) { -register int i,bit; -char buf[64],*rtrn; - - if ((mask&0xff)==0xff) { - if (format==XkbCFile) strcpy(buf,"0xff"); - else strcpy(buf,"all"); + register int i, bit; + char buf[64], *rtrn; + + if ((mask & 0xff) == 0xff) { + if (format == XkbCFile) + strcpy(buf, "0xff"); + else + strcpy(buf, "all"); } - else if ((mask&0xff)==0) { - if (format==XkbCFile) strcpy(buf,"0"); - else strcpy(buf,"none"); + else if ((mask & 0xff) == 0) { + if (format == XkbCFile) + strcpy(buf, "0"); + else + strcpy(buf, "none"); } else { - char *str= buf; - buf[0]= '\0'; - for (i=0,bit=1;i<XkbNumModifiers;i++,bit<<=1) { - if (mask&bit) { - if (str!=buf) { - if (format==XkbCFile) *str++= '|'; - else *str++= '+'; - } - strcpy(str,modNames[i]); - str= &str[strlen(str)]; - if (format==XkbCFile) { - strcpy(str,"Mask"); - str+= 4; - } - } - } + char *str = buf; + + buf[0] = '\0'; + for (i = 0, bit = 1; i < XkbNumModifiers; i++, bit <<= 1) { + if (mask & bit) { + if (str != buf) { + if (format == XkbCFile) + *str++ = '|'; + else + *str++ = '+'; + } + strcpy(str, modNames[i]); + str = &str[strlen(str)]; + if (format == XkbCFile) { + strcpy(str, "Mask"); + str += 4; + } + } + } } - rtrn= tbGetBuffer(strlen(buf)+1); - strcpy(rtrn,buf); + rtrn = tbGetBuffer(strlen(buf) + 1); + strcpy(rtrn, buf); return rtrn; } /***====================================================================***/ -/*ARGSUSED*/ -char * -XkbConfigText(unsigned config,unsigned format) + /*ARGSUSED*/ char * +XkbConfigText(unsigned config, unsigned format) { -static char *buf; + static char *buf; - buf= tbGetBuffer(32); + buf = tbGetBuffer(32); switch (config) { - case XkmSemanticsFile: - strcpy(buf,"Semantics"); - break; - case XkmLayoutFile: - strcpy(buf,"Layout"); - break; - case XkmKeymapFile: - strcpy(buf,"Keymap"); - break; - case XkmGeometryFile: - case XkmGeometryIndex: - strcpy(buf,"Geometry"); - break; - case XkmTypesIndex: - strcpy(buf,"Types"); - break; - case XkmCompatMapIndex: - strcpy(buf,"CompatMap"); - break; - case XkmSymbolsIndex: - strcpy(buf,"Symbols"); - break; - case XkmIndicatorsIndex: - strcpy(buf,"Indicators"); - break; - case XkmKeyNamesIndex: - strcpy(buf,"KeyNames"); - break; - case XkmVirtualModsIndex: - strcpy(buf,"VirtualMods"); - break; - default: - sprintf(buf,"unknown(%d)",config); - break; + case XkmSemanticsFile: + strcpy(buf, "Semantics"); + break; + case XkmLayoutFile: + strcpy(buf, "Layout"); + break; + case XkmKeymapFile: + strcpy(buf, "Keymap"); + break; + case XkmGeometryFile: + case XkmGeometryIndex: + strcpy(buf, "Geometry"); + break; + case XkmTypesIndex: + strcpy(buf, "Types"); + break; + case XkmCompatMapIndex: + strcpy(buf, "CompatMap"); + break; + case XkmSymbolsIndex: + strcpy(buf, "Symbols"); + break; + case XkmIndicatorsIndex: + strcpy(buf, "Indicators"); + break; + case XkmKeyNamesIndex: + strcpy(buf, "KeyNames"); + break; + case XkmVirtualModsIndex: + strcpy(buf, "VirtualMods"); + break; + default: + sprintf(buf, "unknown(%d)", config); + break; } return buf; } @@ -332,35 +351,37 @@ static char *buf; /***====================================================================***/ char * -XkbKeysymText(KeySym sym,unsigned format) +XkbKeysymText(KeySym sym, unsigned format) { -static char buf[32]; + static char buf[32]; - if (sym==NoSymbol) - strcpy(buf,"NoSymbol"); - else snprintf(buf, sizeof(buf), "0x%lx", (long)sym); + if (sym == NoSymbol) + strcpy(buf, "NoSymbol"); + else + snprintf(buf, sizeof(buf), "0x%lx", (long) sym); return buf; } char * -XkbKeyNameText(char *name,unsigned format) +XkbKeyNameText(char *name, unsigned format) { -char *buf; + char *buf; - if (format==XkbCFile) { - buf= tbGetBuffer(5); - memcpy(buf,name,4); - buf[4]= '\0'; + if (format == XkbCFile) { + buf = tbGetBuffer(5); + memcpy(buf, name, 4); + buf[4] = '\0'; } else { - int len; - buf= tbGetBuffer(7); - buf[0]= '<'; - memcpy(&buf[1],name,4); - buf[5]= '\0'; - len= strlen(buf); - buf[len++]= '>'; - buf[len]= '\0'; + int len; + + buf = tbGetBuffer(7); + buf[0] = '<'; + memcpy(&buf[1], name, 4); + buf[5] = '\0'; + len = strlen(buf); + buf[len++] = '>'; + buf[len] = '\0'; } return buf; } @@ -368,143 +389,156 @@ char *buf; /***====================================================================***/ static const char *siMatchText[5] = { - "NoneOf", "AnyOfOrNone", "AnyOf", "AllOf", "Exactly" + "NoneOf", "AnyOfOrNone", "AnyOf", "AllOf", "Exactly" }; const char * -XkbSIMatchText(unsigned type,unsigned format) +XkbSIMatchText(unsigned type, unsigned format) { -static char buf[40]; -const char *rtrn; - - switch (type&XkbSI_OpMask) { - case XkbSI_NoneOf: rtrn= siMatchText[0]; break; - case XkbSI_AnyOfOrNone: rtrn= siMatchText[1]; break; - case XkbSI_AnyOf: rtrn= siMatchText[2]; break; - case XkbSI_AllOf: rtrn= siMatchText[3]; break; - case XkbSI_Exactly: rtrn= siMatchText[4]; break; - default: snprintf(buf,sizeof(buf),"0x%x",type&XkbSI_OpMask); - return buf; + static char buf[40]; + const char *rtrn; + + switch (type & XkbSI_OpMask) { + case XkbSI_NoneOf: + rtrn = siMatchText[0]; + break; + case XkbSI_AnyOfOrNone: + rtrn = siMatchText[1]; + break; + case XkbSI_AnyOf: + rtrn = siMatchText[2]; + break; + case XkbSI_AllOf: + rtrn = siMatchText[3]; + break; + case XkbSI_Exactly: + rtrn = siMatchText[4]; + break; + default: + snprintf(buf, sizeof(buf), "0x%x", type & XkbSI_OpMask); + return buf; } - if (format==XkbCFile) { - if (type&XkbSI_LevelOneOnly) - snprintf(buf,sizeof(buf),"XkbSI_LevelOneOnly|XkbSI_%s",rtrn); - else snprintf(buf,sizeof(buf),"XkbSI_%s",rtrn); - rtrn= buf; + if (format == XkbCFile) { + if (type & XkbSI_LevelOneOnly) + snprintf(buf, sizeof(buf), "XkbSI_LevelOneOnly|XkbSI_%s", rtrn); + else + snprintf(buf, sizeof(buf), "XkbSI_%s", rtrn); + rtrn = buf; } return rtrn; } /***====================================================================***/ -static const char *imWhichNames[]= { - "base", - "latched", - "locked", - "effective", - "compat" +static const char *imWhichNames[] = { + "base", + "latched", + "locked", + "effective", + "compat" }; char * -XkbIMWhichStateMaskText(unsigned use_which,unsigned format) +XkbIMWhichStateMaskText(unsigned use_which, unsigned format) { -int len; -unsigned i,bit,tmp; -char * buf; - - if (use_which==0) { - buf= tbGetBuffer(2); - strcpy(buf,"0"); - return buf; + int len; + unsigned i, bit, tmp; + char *buf; + + if (use_which == 0) { + buf = tbGetBuffer(2); + strcpy(buf, "0"); + return buf; } - tmp= use_which&XkbIM_UseAnyMods; - for (len=i=0,bit=1;tmp!=0;i++,bit<<=1) { - if (tmp&bit) { - tmp&= ~bit; - len+= strlen(imWhichNames[i])+1; - if (format==XkbCFile) - len+= 9; - } + tmp = use_which & XkbIM_UseAnyMods; + for (len = i = 0, bit = 1; tmp != 0; i++, bit <<= 1) { + if (tmp & bit) { + tmp &= ~bit; + len += strlen(imWhichNames[i]) + 1; + if (format == XkbCFile) + len += 9; + } } - buf= tbGetBuffer(len+1); - tmp= use_which&XkbIM_UseAnyMods; - for (len=i=0,bit=1;tmp!=0;i++,bit<<=1) { - if (tmp&bit) { - tmp&= ~bit; - if (format==XkbCFile) { - if (len!=0) - buf[len++]= '|'; - sprintf(&buf[len],"XkbIM_Use%s",imWhichNames[i]); - buf[len+9]= toupper(buf[len+9]); - } - else { - if (len!=0) - buf[len++]= '+'; - sprintf(&buf[len],"%s",imWhichNames[i]); - } - len+= strlen(&buf[len]); - } + buf = tbGetBuffer(len + 1); + tmp = use_which & XkbIM_UseAnyMods; + for (len = i = 0, bit = 1; tmp != 0; i++, bit <<= 1) { + if (tmp & bit) { + tmp &= ~bit; + if (format == XkbCFile) { + if (len != 0) + buf[len++] = '|'; + sprintf(&buf[len], "XkbIM_Use%s", imWhichNames[i]); + buf[len + 9] = toupper(buf[len + 9]); + } + else { + if (len != 0) + buf[len++] = '+'; + sprintf(&buf[len], "%s", imWhichNames[i]); + } + len += strlen(&buf[len]); + } } return buf; } static const char *ctrlNames[] = { - "repeatKeys", - "slowKeys", - "bounceKeys", - "stickyKeys", - "mouseKeys", - "mouseKeysAccel", - "accessXKeys", - "accessXTimeout", - "accessXFeedback", - "audibleBell", - "overlay1", - "overlay2", - "ignoreGroupLock" + "repeatKeys", + "slowKeys", + "bounceKeys", + "stickyKeys", + "mouseKeys", + "mouseKeysAccel", + "accessXKeys", + "accessXTimeout", + "accessXFeedback", + "audibleBell", + "overlay1", + "overlay2", + "ignoreGroupLock" }; char * -XkbControlsMaskText(unsigned ctrls,unsigned format) +XkbControlsMaskText(unsigned ctrls, unsigned format) { -int len; -unsigned i,bit,tmp; -char * buf; - - if (ctrls==0) { - buf= tbGetBuffer(5); - if (format==XkbCFile) - strcpy(buf,"0"); - else strcpy(buf,"none"); - return buf; + int len; + unsigned i, bit, tmp; + char *buf; + + if (ctrls == 0) { + buf = tbGetBuffer(5); + if (format == XkbCFile) + strcpy(buf, "0"); + else + strcpy(buf, "none"); + return buf; } - tmp= ctrls&XkbAllBooleanCtrlsMask; - for (len=i=0,bit=1;tmp!=0;i++,bit<<=1) { - if (tmp&bit) { - tmp&= ~bit; - len+= strlen(ctrlNames[i])+1; - if (format==XkbCFile) - len+= 7; - } + tmp = ctrls & XkbAllBooleanCtrlsMask; + for (len = i = 0, bit = 1; tmp != 0; i++, bit <<= 1) { + if (tmp & bit) { + tmp &= ~bit; + len += strlen(ctrlNames[i]) + 1; + if (format == XkbCFile) + len += 7; + } } - buf= tbGetBuffer(len+1); - tmp= ctrls&XkbAllBooleanCtrlsMask; - for (len=i=0,bit=1;tmp!=0;i++,bit<<=1) { - if (tmp&bit) { - tmp&= ~bit; - if (format==XkbCFile) { - if (len!=0) - buf[len++]= '|'; - sprintf(&buf[len],"Xkb%sMask",ctrlNames[i]); - buf[len+3]= toupper(buf[len+3]); - } - else { - if (len!=0) - buf[len++]= '+'; - sprintf(&buf[len],"%s",ctrlNames[i]); - } - len+= strlen(&buf[len]); - } + buf = tbGetBuffer(len + 1); + tmp = ctrls & XkbAllBooleanCtrlsMask; + for (len = i = 0, bit = 1; tmp != 0; i++, bit <<= 1) { + if (tmp & bit) { + tmp &= ~bit; + if (format == XkbCFile) { + if (len != 0) + buf[len++] = '|'; + sprintf(&buf[len], "Xkb%sMask", ctrlNames[i]); + buf[len + 3] = toupper(buf[len + 3]); + } + else { + if (len != 0) + buf[len++] = '+'; + sprintf(&buf[len], "%s", ctrlNames[i]); + } + len += strlen(&buf[len]); + } } return buf; } @@ -512,700 +546,763 @@ char * buf; /***====================================================================***/ char * -XkbStringText(char *str,unsigned format) +XkbStringText(char *str, unsigned format) { -char * buf; -register char *in,*out; -int len; -Bool ok; - - if (str==NULL) { - buf= tbGetBuffer(2); - buf[0]='\0'; - return buf; + char *buf; + register char *in, *out; + int len; + Bool ok; + + if (str == NULL) { + buf = tbGetBuffer(2); + buf[0] = '\0'; + return buf; } - else if (format==XkbXKMFile) - return str; - for (ok= TRUE,len=0,in=str;*in!='\0';in++,len++) { - if (!isprint(*in)) { - ok= FALSE; - switch (*in) { - case '\n': case '\t': case '\v': - case '\b': case '\r': case '\f': - len++; - break; - default: - len+= 4; - break; - } - } + else if (format == XkbXKMFile) + return str; + for (ok = TRUE, len = 0, in = str; *in != '\0'; in++, len++) { + if (!isprint(*in)) { + ok = FALSE; + switch (*in) { + case '\n': + case '\t': + case '\v': + case '\b': + case '\r': + case '\f': + len++; + break; + default: + len += 4; + break; + } + } } if (ok) - return str; - buf= tbGetBuffer(len+1); - for (in=str,out=buf;*in!='\0';in++) { - if (isprint(*in)) - *out++= *in; - else { - *out++= '\\'; - if (*in=='\n') *out++= 'n'; - else if (*in=='\t') *out++= 't'; - else if (*in=='\v') *out++= 'v'; - else if (*in=='\b') *out++= 'b'; - else if (*in=='\r') *out++= 'r'; - else if (*in=='\f') *out++= 'f'; - else if ((*in=='\033')&&(format==XkbXKMFile)) { - *out++= 'e'; - } - else { - *out++= '0'; - sprintf(out,"%o",*in); - while (*out!='\0') - out++; - } - } + return str; + buf = tbGetBuffer(len + 1); + for (in = str, out = buf; *in != '\0'; in++) { + if (isprint(*in)) + *out++ = *in; + else { + *out++ = '\\'; + if (*in == '\n') + *out++ = 'n'; + else if (*in == '\t') + *out++ = 't'; + else if (*in == '\v') + *out++ = 'v'; + else if (*in == '\b') + *out++ = 'b'; + else if (*in == '\r') + *out++ = 'r'; + else if (*in == '\f') + *out++ = 'f'; + else if ((*in == '\033') && (format == XkbXKMFile)) { + *out++ = 'e'; + } + else { + *out++ = '0'; + sprintf(out, "%o", *in); + while (*out != '\0') + out++; + } + } } - *out++= '\0'; + *out++ = '\0'; return buf; } /***====================================================================***/ char * -XkbGeomFPText(int val,unsigned format) +XkbGeomFPText(int val, unsigned format) { -int whole,frac; -char * buf; + int whole, frac; + char *buf; - buf= tbGetBuffer(12); - if (format==XkbCFile) { - sprintf(buf,"%d",val); + buf = tbGetBuffer(12); + if (format == XkbCFile) { + sprintf(buf, "%d", val); } else { - whole= val/XkbGeomPtsPerMM; - frac= val%XkbGeomPtsPerMM; - if (frac!=0) - sprintf(buf,"%d.%d",whole,frac); - else sprintf(buf,"%d",whole); + whole = val / XkbGeomPtsPerMM; + frac = val % XkbGeomPtsPerMM; + if (frac != 0) + sprintf(buf, "%d.%d", whole, frac); + else + sprintf(buf, "%d", whole); } return buf; } char * -XkbDoodadTypeText(unsigned type,unsigned format) +XkbDoodadTypeText(unsigned type, unsigned format) { -char * buf; - if (format==XkbCFile) { - buf= tbGetBuffer(24); - if (type==XkbOutlineDoodad) strcpy(buf,"XkbOutlineDoodad"); - else if (type==XkbSolidDoodad) strcpy(buf,"XkbSolidDoodad"); - else if (type==XkbTextDoodad) strcpy(buf,"XkbTextDoodad"); - else if (type==XkbIndicatorDoodad) strcpy(buf,"XkbIndicatorDoodad"); - else if (type==XkbLogoDoodad) strcpy(buf,"XkbLogoDoodad"); - else sprintf(buf,"UnknownDoodad%d",type); + char *buf; + + if (format == XkbCFile) { + buf = tbGetBuffer(24); + if (type == XkbOutlineDoodad) + strcpy(buf, "XkbOutlineDoodad"); + else if (type == XkbSolidDoodad) + strcpy(buf, "XkbSolidDoodad"); + else if (type == XkbTextDoodad) + strcpy(buf, "XkbTextDoodad"); + else if (type == XkbIndicatorDoodad) + strcpy(buf, "XkbIndicatorDoodad"); + else if (type == XkbLogoDoodad) + strcpy(buf, "XkbLogoDoodad"); + else + sprintf(buf, "UnknownDoodad%d", type); } else { - buf= tbGetBuffer(12); - if (type==XkbOutlineDoodad) strcpy(buf,"outline"); - else if (type==XkbSolidDoodad) strcpy(buf,"solid"); - else if (type==XkbTextDoodad) strcpy(buf,"text"); - else if (type==XkbIndicatorDoodad) strcpy(buf,"indicator"); - else if (type==XkbLogoDoodad) strcpy(buf,"logo"); - else sprintf(buf,"unknown%d",type); + buf = tbGetBuffer(12); + if (type == XkbOutlineDoodad) + strcpy(buf, "outline"); + else if (type == XkbSolidDoodad) + strcpy(buf, "solid"); + else if (type == XkbTextDoodad) + strcpy(buf, "text"); + else if (type == XkbIndicatorDoodad) + strcpy(buf, "indicator"); + else if (type == XkbLogoDoodad) + strcpy(buf, "logo"); + else + sprintf(buf, "unknown%d", type); } return buf; } -static const char *actionTypeNames[XkbSA_NumActions]= { - "NoAction", - "SetMods", "LatchMods", "LockMods", - "SetGroup", "LatchGroup", "LockGroup", +static const char *actionTypeNames[XkbSA_NumActions] = { + "NoAction", + "SetMods", "LatchMods", "LockMods", + "SetGroup", "LatchGroup", "LockGroup", "MovePtr", - "PtrBtn", "LockPtrBtn", + "PtrBtn", "LockPtrBtn", "SetPtrDflt", "ISOLock", - "Terminate", "SwitchScreen", - "SetControls", "LockControls", + "Terminate", "SwitchScreen", + "SetControls", "LockControls", "ActionMessage", "RedirectKey", - "DeviceBtn", "LockDeviceBtn" + "DeviceBtn", "LockDeviceBtn" }; const char * -XkbActionTypeText(unsigned type,unsigned format) +XkbActionTypeText(unsigned type, unsigned format) { -static char buf[32]; -const char *rtrn; - - if (type<=XkbSA_LastAction) { - rtrn= actionTypeNames[type]; - if (format==XkbCFile) { - snprintf(buf,sizeof(buf),"XkbSA_%s",rtrn); - return buf; - } - return rtrn; + static char buf[32]; + const char *rtrn; + + if (type <= XkbSA_LastAction) { + rtrn = actionTypeNames[type]; + if (format == XkbCFile) { + snprintf(buf, sizeof(buf), "XkbSA_%s", rtrn); + return buf; + } + return rtrn; } - snprintf(buf,sizeof(buf),"Private"); + snprintf(buf, sizeof(buf), "Private"); return buf; } /***====================================================================***/ static int -TryCopyStr(char *to,const char *from,int *pLeft) +TryCopyStr(char *to, const char *from, int *pLeft) { -register int len; - if (*pLeft>0) { - 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<size;i++) { - buf[i]= ' '; + for (i = 0; i < size; i++) { + buf[i] = ' '; } - buf[size]= '\0'; + buf[size] = '\0'; return buf; } |