hi Alan,

since you are looking into LibX11 ... can you take a look at XKBMisc.c ?
I already tried to fix this with Peter Hutterer but he is very busy also.

what caused my attention was this construct:
(tmp= XkbModActionVMods(&act->iso))!=0) & changed)

my guess is that the !=0 is nonsens.

re,
 wh


Bool
XkbUpdateActionVirtualMods(XkbDescPtr xkb,XkbAction *act,unsigned changed)
{
unsigned int    tmp;

    switch (act->type) {
        case XkbSA_SetMods: case XkbSA_LatchMods: case XkbSA_LockMods:
            if (((tmp= XkbModActionVMods(&act->mods))&changed)!=0) {
                XkbVirtualModsToReal(xkb,tmp,&tmp);
                act->mods.mask= act->mods.real_mods;
                act->mods.mask|= tmp;
                return True;
            }
            break;
        case XkbSA_ISOLock:
            if ((((tmp= XkbModActionVMods(&act->iso))!=0)&changed)!=0) {

        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
this looks strange.


                XkbVirtualModsToReal(xkb,tmp,&tmp);
                act->iso.mask= act->iso.real_mods;
                act->iso.mask|= tmp;
                return True;
            }
            break;
    }
    return False;
}

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to