diff options
Diffstat (limited to 'src/xkbtext.c')
-rw-r--r-- | src/xkbtext.c | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/src/xkbtext.c b/src/xkbtext.c index b5d4750..bf992e4 100644 --- a/src/xkbtext.c +++ b/src/xkbtext.c @@ -886,8 +886,22 @@ CopyModActionArgs(Display *dpy, XkbDescPtr xkb, XkbAction *action, } 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) @@ -1049,8 +1063,12 @@ CopyISOLockArgs(Display *dpy, XkbDescPtr xkb, XkbAction *action, 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; @@ -1074,6 +1092,18 @@ CopyISOLockArgs(Display *dpy, XkbDescPtr xkb, XkbAction *action, 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; } @@ -1183,6 +1213,20 @@ CopySetLockControlsArgs(Display *dpy, XkbDescPtr xkb, XkbAction *action, 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; } |