/** * Retrieve xkb values from the XKB_RULES_NAMES property and store their * contents in svValues. * If the property cannot be read, the built-in defaults are used. * * @return True. */ Bool getServerValues(void) { XkbRF_VarDefsRec vd; char *tmp = NULL; if (!XkbRF_GetNamesProp(dpy, &tmp, &vd) || !tmp) { VMSG1(3, "Couldn't interpret %s property\n", _XKB_RF_NAMES_PROP_ATOM); tmp = DFLT_XKB_RULES_FILE; vd.model = DFLT_XKB_MODEL; vd.layout = DFLT_XKB_LAYOUT; vd.variant = NULL; vd.options = NULL; VMSG3(3, "Use defaults: rules - '%s' model - '%s' layout - '%s'\n", tmp, vd.model, vd.layout); } if (tmp) trySetString(&settings.rules, tmp, FROM_SERVER); if (vd.model) trySetString(&settings.model, vd.model, FROM_SERVER); if (vd.layout) trySetString(&settings.layout, vd.layout, FROM_SERVER); if (vd.variant) trySetString(&settings.variant, vd.variant, FROM_SERVER); if ((vd.options) && (!clearOptions)) { addStringToOptions(vd.options, &options); XFree(vd.options); } return True; }
Bool applyConfig(char *name) { FILE *fp; Bool ok; if ((fp = findFileInPath(name)) == NULL) return False; ok = XkbCFParse(fp, XkbCFDflts, NULL, &cfgResult); fclose(fp); if (!ok) { ERR1("Couldn't find configuration file \"%s\"\n", name); return False; } if (cfgResult.rules_file) { trySetString(&settings.rules, cfgResult.rules_file, FROM_CONFIG); cfgResult.rules_file = NULL; } if (cfgResult.model) { trySetString(&settings.model, cfgResult.model, FROM_CONFIG); cfgResult.model = NULL; } if (cfgResult.layout) { trySetString(&settings.layout, cfgResult.layout, FROM_CONFIG); cfgResult.layout = NULL; } if (cfgResult.variant) { trySetString(&settings.variant, cfgResult.variant, FROM_CONFIG); cfgResult.variant = NULL; } if (cfgResult.options) { addStringToOptions(cfgResult.options, &options); cfgResult.options = NULL; } if (cfgResult.keymap) { trySetString(&settings.keymap, cfgResult.keymap, FROM_CONFIG); cfgResult.keymap = NULL; } if (cfgResult.keycodes) { trySetString(&settings.keycodes, cfgResult.keycodes, FROM_CONFIG); cfgResult.keycodes = NULL; } if (cfgResult.geometry) { trySetString(&settings.geometry, cfgResult.geometry, FROM_CONFIG); cfgResult.geometry = NULL; } if (cfgResult.symbols) { trySetString(&settings.symbols, cfgResult.symbols, FROM_CONFIG); cfgResult.symbols = NULL; } if (cfgResult.types) { trySetString(&settings.types, cfgResult.types, FROM_CONFIG); cfgResult.types = NULL; } if (cfgResult.compat) { trySetString(&settings.compat, cfgResult.compat, FROM_CONFIG); cfgResult.compat = NULL; } if (verbose > 5) { MSG("After config file:\n"); dumpNames(True, True); } return True; }
Bool applyConfig(char *name) { FILE *fp; Bool ok; if ((fp = findFileInPath(name, "")) == NULL) return False; ok = XkbCFParse(fp, XkbCFDflts, NULL, &cfgResult); fclose(fp); if (!ok) { ERR1("Couldn't find configuration file \"%s\"\n", name); return False; } if (cfgResult.rules_file) { trySetString(RULES_NDX, cfgResult.rules_file, FROM_CONFIG); cfgResult.rules_file = NULL; } if (cfgResult.model) { trySetString(MODEL_NDX, cfgResult.model, FROM_CONFIG); cfgResult.model = NULL; } if (cfgResult.layout) { trySetString(LAYOUT_NDX, cfgResult.layout, FROM_CONFIG); cfgResult.layout = NULL; } if (cfgResult.variant) { trySetString(VARIANT_NDX, cfgResult.variant, FROM_CONFIG); cfgResult.variant = NULL; } if (cfgResult.options) { addStringToOptions(cfgResult.options, &szOptions, &numOptions, &options); cfgResult.options = NULL; } if (cfgResult.keymap) { trySetString(KEYMAP_NDX, cfgResult.keymap, FROM_CONFIG); cfgResult.keymap = NULL; } if (cfgResult.keycodes) { trySetString(KEYCODES_NDX, cfgResult.keycodes, FROM_CONFIG); cfgResult.keycodes = NULL; } if (cfgResult.geometry) { trySetString(GEOMETRY_NDX, cfgResult.geometry, FROM_CONFIG); cfgResult.geometry = NULL; } if (cfgResult.symbols) { trySetString(SYMBOLS_NDX, cfgResult.symbols, FROM_CONFIG); cfgResult.symbols = NULL; } if (cfgResult.types) { trySetString(TYPES_NDX, cfgResult.types, FROM_CONFIG); cfgResult.types = NULL; } if (cfgResult.compat) { trySetString(COMPAT_NDX, cfgResult.compat, FROM_CONFIG); cfgResult.compat = NULL; } if (verbose > 5) { MSG("After config file:\n"); dumpNames(True, True); } return True; }