The LockMods, ISOLock and LockControls support an "affect" flag to selectively enable and disable locking and unlocking for these actions. This change adds output of these flags.
Signed-off-by: Andreas Wettstein <[email protected]> --- xkb/xkbtext.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/xkb/xkbtext.c b/xkb/xkbtext.c index fdf1d17..5d5f842 100644 --- a/xkb/xkbtext.c +++ b/xkb/xkbtext.c @@ -749,8 +749,22 @@ CopyModActionArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *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: + 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: + break; + } return TRUE; + } if (act->flags & XkbSA_ClearLocks) TryCopyStr(buf, ",clearLocks", sz); if (act->flags & XkbSA_LatchToLock) @@ -901,8 +915,12 @@ CopyISOLockArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) TryCopyStr(buf, "none", sz); } TryCopyStr(buf, ",affect=", sz); - if ((act->affect & XkbSA_ISOAffectMask) == 0) + if ((act->affect & XkbSA_ISOAffectMask) == 0) { TryCopyStr(buf, "all", sz); + } + else if ((act->affect & XkbSA_ISOAffectMask) == XkbSA_ISOAffectMask) { + TryCopyStr(buf, "none", sz); + } else { int nOut = 0; @@ -926,6 +944,18 @@ CopyISOLockArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) nOut++; } } + switch (act->flags & (XkbSA_LockNoUnlock | XkbSA_LockNoLock)) { + case XkbSA_LockNoLock: + TryCopyStr(buf, "+unlock", sz); + break; + case XkbSA_LockNoUnlock: + TryCopyStr(buf, "+lock", sz); + break; + case XkbSA_LockNoUnlock | XkbSA_LockNoLock: + TryCopyStr(buf, "+neither", sz); + break; + default: ; + } return TRUE; } @@ -1037,6 +1067,20 @@ CopySetLockControlsArgs(XkbDescPtr xkb, XkbAction *action, char *buf, int *sz) nOut++; } } + if (action->type == XkbSA_LockControls) { + 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: ; + } + } return TRUE; } -- 1.8.3.1 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
