On Mon, Oct 20, 2014 at 11:15:14AM +0200, Jan Synacek wrote: > Ran Benita <ran...@gmail.com> writes: > > On Fri, Oct 17, 2014 at 02:02:13PM +0200, Jan Synacek wrote: > >> When setting any of those using set-x11-keymap, check that their values > >> are available on the system. > > > > I have only skimmed this patch, but generally: > > > > 1. There can only be one model. > > 2. There can be multiple layouts and variants, comma separated. E.g., > > layout=us,il variant=,lyx. The amount of layouts and variants should > > match (or the variants can be empty), but most stuff you throw at it > > will be accepted though. > > 3. There can be multiple comma-separated options. > > > > Do you handle input like "layout=us,il variant=,lyx" correctly? > > > > Ran > > Nope, I didn't realize that. I'll send a better version of the patch. > > The parsing won't be perfect, though. With setxkbmap, I can do the > following without any error: > > # setxkbmap us,cz lyx ctrl:nocaps -model idontexist > # echo $? > 0 > > Note that there is no lyx variant for either us or cz. Also, the number > of layouts and variants *doesn't* match and the model doesn't exist as > well. (That's probably what you meant by the last sentence in 2., I'm > just restating it to be clear).
Right, these settings are pretty permissive. But you reminded me - it is probably not a good idea to entirely abort the operation if the provided arguments don't validate. That's because the XKB rules file (/usr/share/X11/xkb/rules/) support wildcards, as you noticed with the idontexist model. These are then passed along, and some of them are in fact valid as far as I remember, just not mentioned in the base.lst file. So I think this should be a warning, not an error. If the user knows what he intended, he can ignore the error. Otherwise he will correct the error. Not ideal, but better than preventing legal values. _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel