On Fri, Apr 07, 2017 at 09:55:02AM +0100, Daniel Stone wrote: > Rather than throwing a fatal error when a keycode definition exceeds the > declared maximum (i.e. 255), just ignore the definition and continue. > > This allows xkeyboard-config to start shipping datasets including high > keycodes, which will work in xkbcommon as it ignores explicit range > declarations. > > Signed-off-by: Daniel Stone <[email protected]> > Reviewed-by: Ran Benita <[email protected]> > Reported-by: Christian Kellner <[email protected]>
Reviewed-by: Peter Hutterer <[email protected]> but please fix up the tabs to spaces before pushing, thanks. Cheers, Peter > --- > keycodes.c | 28 ++++++++++++++++++++-------- > 1 file changed, 20 insertions(+), 8 deletions(-) > > v2: Print a more verbose warning, but only print it once. > > diff --git a/keycodes.c b/keycodes.c > index 22d9eae..09a861e 100644 > --- a/keycodes.c > +++ b/keycodes.c > @@ -31,6 +31,8 @@ > #include "misc.h" > #include "alias.h" > > +static Bool high_keycode_warned; > + > char * > longText(unsigned long val, unsigned format) > { > @@ -330,10 +332,15 @@ AddKeyName(KeyNamesInfo * info, > > if ((kc < info->effectiveMin) || (kc > info->effectiveMax)) > { > - ERROR2("Illegal keycode %d for name <%s>\n", kc, name); > - ACTION2("Must be in the range %d-%d inclusive\n", > - info->effectiveMin, info->effectiveMax); > - return False; > + if (!high_keycode_warned) > + { > + WARN2("Unsupported high keycode %d for name <%s> ignored\n", > + kc, name); > + ACTION2("X11 cannot support keycodes above 255.\n"); > + ACTION2("This warning only shows for the first high keycode.\n"); > + high_keycode_warned = True; > + } > + return True; > } > if (kc < info->computedMin) > info->computedMin = kc; > @@ -589,10 +596,15 @@ HandleKeycodeDef(KeycodeDef * stmt, unsigned merge, > KeyNamesInfo * info) > code = result.ival; > if ((code < info->effectiveMin) || (code > info->effectiveMax)) > { > - ERROR2("Illegal keycode %d for name <%s>\n", code, stmt->name); > - ACTION2("Must be in the range %d-%d inclusive\n", > - info->effectiveMin, info->effectiveMax); > - return 0; > + if (!high_keycode_warned) > + { > + WARN2("Unsupported high keycode %d for name <%s> ignored\n", > + code, stmt->name); > + ACTION2("X11 cannot support keycodes above 255.\n"); > + ACTION2("This warning only shows for the first high keycode.\n"); > + high_keycode_warned = True; > + } > + return 1; > } > if (stmt->merge != MergeDefault) > { > -- > 2.12.2 > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
