On Thu, Jan 23, 2014 at 08:39:55PM +0100, Andreas Wettstein wrote: > Output "affect" flags for control locks, modifier locks, and ISOLock. Output > flag "genKeyEvent" flag for message actions. Do not generate output for any > of > these if the flags have their default setting, to avoid problems of parsing > this output with versions of xkbcomp that do not support these flags.
Everything looks good to me, but I think you should split this to 3 patches (see comments). Also you've introduced some tabs. > Signed-off-by: Andreas Wettstein <[email protected]> > --- > src/xkbtext.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++----- > 1 file changed, 51 insertions(+), 5 deletions(-) > > diff --git a/src/xkbtext.c b/src/xkbtext.c > index b5d4750..d80c7a3 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) > @@ -906,11 +920,11 @@ CopyGroupActionArgs(Display *dpy, XkbDescPtr xkb, > XkbAction *action, > act = &action->group; > TryCopyStr(buf, "group=", sz); > if (act->flags & XkbSA_GroupAbsolute) > - snprintf(tbuf, sizeof(buf), "%d", XkbSAGroup(act) + 1); > + snprintf(tbuf, sizeof(tbuf), "%d", XkbSAGroup(act) + 1); Even though no security implications here, these should definitely be a separate patch and obviously applied. > else if (XkbSAGroup(act) < 0) > - snprintf(tbuf, sizeof(buf), "%d", XkbSAGroup(act)); > + snprintf(tbuf, sizeof(tbuf), "%d", XkbSAGroup(act)); > else > - snprintf(tbuf, sizeof(buf), "+%d", XkbSAGroup(act)); > + snprintf(tbuf, sizeof(tbuf), "+%d", XkbSAGroup(act)); > TryCopyStr(buf, tbuf, sz); > if (act->type == XkbSA_LockGroup) > return True; > @@ -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; > } > > @@ -1218,6 +1262,8 @@ CopyActionMessageArgs(Display *dpy, XkbDescPtr xkb, > XkbAction *action, > TryCopyStr(buf, tbuf, sz); > snprintf(tbuf, sizeof(tbuf), ",data[5]=0x%02x", act->message[5]); > TryCopyStr(buf, tbuf, sz); > + if (act->flags & XkbSA_MessageGenKeyEvent) > + TryCopyStr(buf, ",genKeyEvent", sz); This should be a separate patch. Ran > 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 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
