Bool applyComponentNames(void) { if (!checkName(settings.types.value, "types")) return False; if (!checkName(settings.compat.value, "compat")) return False; if (!checkName(settings.symbols.value, "symbols")) return False; if (!checkName(settings.keycodes.value, "keycodes")) return False; if (!checkName(settings.geometry.value, "geometry")) return False; if (!checkName(settings.keymap.value, "keymap")) return False; if (verbose > 5) { MSG("Trying to build keymap using the following components:\n"); dumpNames(False, True); } /* Upload the new description to the server. */ if (dpy && !print && !query) { XkbComponentNamesRec cmdNames; cmdNames.types = settings.types.value; cmdNames.compat = settings.compat.value; cmdNames.symbols = settings.symbols.value; cmdNames.keycodes = settings.keycodes.value; cmdNames.geometry = settings.geometry.value; cmdNames.keymap = settings.keymap.value; xkb = XkbGetKeyboardByName(dpy, deviceSpec, &cmdNames, XkbGBN_AllComponentsMask, XkbGBN_AllComponentsMask & (~XkbGBN_GeometryMask), True); if (!xkb) { ERR("Error loading new keyboard description\n"); return False; } /* update the XKB root property */ if (settings.rules.value && (rdefs.model || rdefs.layout)) { if (!XkbRF_SetNamesProp(dpy, settings.rules.value, &rdefs)) { VMSG(0, "Error updating the XKB names property\n"); } } } if (print) { printKeymap(); } if (query) { dumpNames(True, False); } return True; }
static void fini( // INITIALIZATION INITFINI* defn ) // - definition { defn = defn; #ifndef NDEBUG if( PragDbgToggle.dump_names ) { dumpNames(); puts( "created name.lst" ); } #endif }
/** * If any of model, layout, variant or options is specified, then compile the * options into the * * @return True on success or false otherwise. */ Bool applyRules(void) { int i; char *rfName; if (settings.model.src || settings.layout.src || settings.variant.src || options.item) { char buf[PATH_MAX]; XkbComponentNamesRec rnames; if (settings.variant.src < settings.layout.src) settings.variant.value = NULL; rdefs.model = settings.model.value; rdefs.layout = settings.layout.value; rdefs.variant = settings.variant.value; if (options.item) rdefs.options = stringFromOptions(rdefs.options, &options); if (settings.rules.src) rfName = settings.rules.value; else rfName = DFLT_XKB_RULES_FILE; if (rfName[0] == '/') { rules = tryLoadRules(rfName, settings.locale.value, True, True); } else { /* try to load rules files from all include paths until the first * we succeed with */ for (i = 0; (i < inclPath.num) && (!rules); i++) { if (snprintf(buf, PATH_MAX, "%s/rules/%s", inclPath.item[i], rfName) >= PATH_MAX) { VMSG2(0, "Path too long (%s/rules/%s). Ignored.\n", inclPath.item[i], rfName); continue; } rules = tryLoadRules(buf, settings.locale.value, True, True); } } if (!rules) { ERR1("Couldn't find rules file (%s) \n", rfName); return False; } /* Let the rules file to the magic, then update the svValues with * those returned after processing the rules */ XkbRF_GetComponents(rules, &rdefs, &rnames); if (rnames.keycodes) { trySetString(&settings.keycodes, rnames.keycodes, FROM_RULES); rnames.keycodes = NULL; } if (rnames.symbols) { trySetString(&settings.symbols, rnames.symbols, FROM_RULES); rnames.symbols = NULL; } if (rnames.types) { trySetString(&settings.types, rnames.types, FROM_RULES); rnames.types = NULL; } if (rnames.compat) { trySetString(&settings.compat, rnames.compat, FROM_RULES); rnames.compat = NULL; } if (rnames.geometry) { trySetString(&settings.geometry, rnames.geometry, FROM_RULES); rnames.geometry = NULL; } if (rnames.keymap) { trySetString(&settings.keymap, rnames.keymap, FROM_RULES); rnames.keymap = NULL; } if (verbose > 6) { MSG1("Applied rules from %s:\n", rfName); dumpNames(True, False); } } else if (verbose > 6) { MSG("No rules variables specified. Rules file ignored\n"); } 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; }
/** * If any of model, layout, variant or options is specified, then compile the * options into the * * @return True on success or false otherwise. */ Bool applyRules(void) { int i; char *rfName; if (svSrc[MODEL_NDX] || svSrc[LAYOUT_NDX] || svSrc[VARIANT_NDX] || options) { char buf[PATH_MAX]; XkbComponentNamesRec rnames; if (svSrc[VARIANT_NDX] < svSrc[LAYOUT_NDX]) svValue[VARIANT_NDX] = NULL; rdefs.model = svValue[MODEL_NDX]; rdefs.layout = svValue[LAYOUT_NDX]; rdefs.variant = svValue[VARIANT_NDX]; if (options) rdefs.options = stringFromOptions(rdefs.options, numOptions, options); if (svSrc[RULES_NDX]) rfName = svValue[RULES_NDX]; else rfName = DFLT_XKB_RULES_FILE; if (rfName[0] == '/') { rules = XkbRF_Load(rfName, svValue[LOCALE_NDX], True, True); } else { /* try to load rules files from all include paths until the first * we succeed with */ for (i = 0; (i < numInclPath) && (!rules); i++) { if ((strlen(inclPath[i]) + strlen(rfName) + 8) > PATH_MAX) { VMSG2(0, "Path too long (%s/rules/%s). Ignored.\n", inclPath[i], rfName); continue; } sprintf(buf, "%s/rules/%s", inclPath[i], svValue[RULES_NDX]); rules = XkbRF_Load(buf, svValue[LOCALE_NDX], True, True); } } if (!rules) { ERR1("Couldn't find rules file (%s) \n", svValue[RULES_NDX]); return False; } /* Let the rules file to the magic, then update the svValues with * those returned after processing the rules */ XkbRF_GetComponents(rules, &rdefs, &rnames); if (rnames.keycodes) { trySetString(KEYCODES_NDX, rnames.keycodes, FROM_RULES); rnames.keycodes = NULL; } if (rnames.symbols) { trySetString(SYMBOLS_NDX, rnames.symbols, FROM_RULES); rnames.symbols = NULL; } if (rnames.types) { trySetString(TYPES_NDX, rnames.types, FROM_RULES); rnames.types = NULL; } if (rnames.compat) { trySetString(COMPAT_NDX, rnames.compat, FROM_RULES); rnames.compat = NULL; } if (rnames.geometry) { trySetString(GEOMETRY_NDX, rnames.geometry, FROM_RULES); rnames.geometry = NULL; } if (rnames.keymap) { trySetString(KEYMAP_NDX, rnames.keymap, FROM_RULES); rnames.keymap = NULL; } if (verbose > 6) { MSG1("Applied rules from %s:\n", svValue[RULES_NDX]); dumpNames(True, False); } } else if (verbose > 6) { MSG("No rules variables specified. Rules file ignored\n"); } 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; }