static char * AppendBellNotifyArg(char *sink, char *arg, XkbEvent *ev) { if (uStringEqual(arg,"device")||uStringEqual(arg,"D")) sprintf(sink,"%d",ev->bell.device); else if (uStringEqual(arg,"volume")||uStringEqual(arg,"v")) sprintf(sink,"%d",ev->bell.percent); else if (uStringEqual(arg,"pitch")||uStringEqual(arg,"p")) sprintf(sink,"%d",ev->bell.pitch); else if (uStringEqual(arg,"duration")||uStringEqual(arg,"d")) sprintf(sink,"%d",ev->bell.duration); else if (uStringEqual(arg,"class")||uStringEqual(arg,"c")) sprintf(sink,"%d",ev->bell.bell_class); else if (uStringEqual(arg,"id")||uStringEqual(arg,"i")) sprintf(sink,"%d",ev->bell.bell_id); else if (uStringEqual(arg,"window")||uStringEqual(arg,"w")) sprintf(sink,"0x%x",(unsigned int)ev->bell.window); else if (uStringEqual(arg,"name")||uStringEqual(arg,"n")) sprintf(sink,"%s",XkbAtomText(dpy,ev->bell.name,XkbMessage)); return sink; }
Bool HandleVModDef(VModDef *stmt,unsigned mergeMode,VModInfo *info) { register int i,bit,nextFree; ExprResult mod; XkbServerMapPtr srv; XkbNamesPtr names; Atom stmtName; srv= info->xkb->server; names= info->xkb->names; stmtName= XkbInternAtom(info->xkb->dpy,XkbAtomGetString(NULL,stmt->name), False); for (i=0,bit=1,nextFree= -1;i<XkbNumVirtualMods;i++,bit<<=1) { if (info->defined&bit) { if (names->vmods[i]==stmtName) { /* already defined */ info->available|= bit; if (stmt->value==NULL) return True; else { char *str1,*str2 = ""; if (!ExprResolveModMask(stmt->value,&mod,NULL,NULL)) { str1= XkbAtomText(NULL,stmt->name,XkbMessage); ACTION1("Declaration of %s ignored\n",str1); return False; } if (mod.uval==srv->vmods[i]) return True; str1= XkbAtomText(NULL,stmt->name,XkbMessage); WARN1("Virtual modifier %s multiply defined\n",str1); str1= XkbModMaskText(srv->vmods[i],XkbCFile); if (mergeMode==MergeOverride) { str2= str1; str1= XkbModMaskText(mod.uval,XkbCFile); } ACTION2("Using %s, ignoring %s\n",str1,str2); if (mergeMode==MergeOverride) srv->vmods[i]= mod.uval; return True; } } } else if (nextFree<0) nextFree= i; } if (nextFree<0) { ERROR1("Too many virtual modifiers defined (maximum %d)\n", XkbNumVirtualMods); ACTION("Exiting\n"); return False; } info->defined|= (1<<nextFree); info->newlyDefined|= (1<<nextFree); info->available|= (1<<nextFree); names->vmods[nextFree]= stmtName; if (stmt->value==NULL) return True; if (ExprResolveModMask(stmt->value,&mod,NULL,NULL)) { srv->vmods[nextFree]= mod.uval; return True; } ACTION1("Declaration of %s ignored\n", XkbAtomText(NULL,stmt->name,XkbMessage)); return False; }