Support 'noLock' and 'noUnlock' flags in 'LockMods', as well as the possibility to specify a group change in 'LockMods".
Signed-off-by: Andreas Wettstein <[email protected]> --- src/xkbtext.c | 24 +++++++++++++++++++++++- 1 Datei geändert, 23 Zeilen hinzugefügt(+), 1 Zeile entfernt(-) diff --git a/src/xkbtext.c b/src/xkbtext.c index 3a82b17..c6ffcc9 100644 --- a/src/xkbtext.c +++ b/src/xkbtext.c @@ -802,6 +802,7 @@ CopyModActionArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf, { XkbModAction * act; unsigned tmp; +char tbuf[32]; act= &action->mods; tmp= XkbModActionVMods(act); @@ -814,8 +815,29 @@ unsigned tmp; sz); } else TryCopyStr(buf,"none",sz); - if (act->type==XkbSA_LockMods) + if (act->type==XkbSA_LockMods){ + switch (act->flags&(XkbSA_LockNoUnlock|XkbSA_LockNoLock)) { + case XkbSA_LockNoLock: + sprintf(tbuf,",affect=unlock"); break; + case XkbSA_LockNoUnlock: + sprintf(tbuf,",affect=lock"); break; + case XkbSA_LockNoUnlock|XkbSA_LockNoLock: + sprintf(tbuf,",affect=neither"); break; + default: + sprintf(tbuf,""); break; + } + TryCopyStr(buf,tbuf,sz); + if(XkbSAGroup(act) != 0 || act->group_flags&XkbSA_GroupAbsolute){ + TryCopyStr(buf,",group=",sz); + if (act->group_flags&XkbSA_GroupAbsolute) + sprintf(tbuf,"%d",XkbSAGroup(act)+1); + else if (XkbSAGroup(act)<0) + sprintf(tbuf,"%d",XkbSAGroup(act)); + else sprintf(tbuf,"+%d",XkbSAGroup(act)); + TryCopyStr(buf,tbuf,sz); + } return True; + } if (act->flags&XkbSA_ClearLocks) TryCopyStr(buf,",clearLocks",sz); if (act->flags&XkbSA_LatchToLock) -- 1.7.11.3 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
