This came from trial and error, but it seems that you can generate a
valid keymap with only rules and layout.
unsigned int debugFlags = 0;
unsigned int warningLevel = 0;
+#define ISEMPTY(str) (!(str) || (strlen(str) == 0))
+
static int
XkbFileFromComponents(const XkbComponentNamesPtr ktcsg, XkbFile **file)
{
XkbComponentNamesPtr names;
XkbcDescPtr xkb;
- if (!rules || strlen(rules) == 0) {
- ERROR("no rules supplied for generating XKB keymap\n");
+ if (ISEMPTY(rules) || ISEMPTY(defs->layout)) {
+ ERROR("rules and layout required to generate XKB keymap\n");
return NULL;
}