Beispiel #1
0
Datei: evargs.c Projekt: aosm/X11
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;
}
Beispiel #2
0
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;
}