Lines Matching full:info
62 InitAliasInfo(AliasInfo *info, enum merge_mode merge,
65 memset(info, 0, sizeof(*info));
66 info->merge = merge;
67 info->alias = alias;
68 info->real = real;
72 FindLedByName(KeyNamesInfo *info, xkb_atom_t name,
75 for (xkb_led_index_t idx = 0; idx < info->num_led_names; idx++) {
76 LedNameInfo *ledi = &info->led_names[idx];
87 AddLedName(KeyNamesInfo *info, enum merge_mode merge, bool same_file,
92 const int verbosity = xkb_context_get_log_verbosity(info->ctx);
97 old = FindLedByName(info, new->name, &old_idx);
100 log_warn(info->ctx,
103 xkb_atom_text(info->ctx, new->name));
110 log_warn(info->ctx,
112 xkb_atom_text(info->ctx, new->name), use, ignore);
121 if (new_idx >= info->num_led_names)
122 info->num_led_names = new_idx + 1;
125 old = &info->led_names[new_idx];
130 log_warn(info->ctx, "Multiple names for indicator %d; "
132 xkb_atom_text(info->ctx, use),
133 xkb_atom_text(info->ctx, ignore));
147 ClearKeyNamesInfo(KeyNamesInfo *info)
149 free(info->name);
150 darray_free(info->key_names);
151 darray_free(info->aliases);
155 InitKeyNamesInfo(KeyNamesInfo *info, struct xkb_context *ctx)
157 memset(info, 0, sizeof(*info));
158 info->ctx = ctx;
159 info->min_key_code = XKB_KEYCODE_INVALID;
166 FindKeyByName(KeyNamesInfo *info, xkb_atom_t name)
170 for (i = info->min_key_code; i <= info->max_key_code; i++)
171 if (darray_item(info->key_names, i) == name)
178 AddKeyName(KeyNamesInfo *info, xkb_keycode_t kc, xkb_atom_t name,
183 const int verbosity = xkb_context_get_log_verbosity(info->ctx);
187 if (kc >= darray_size(info->key_names))
188 darray_resize0(info->key_names, kc + 1);
190 info->min_key_code = MIN(info->min_key_code, kc);
191 info->max_key_code = MAX(info->max_key_code, kc);
194 old_name = darray_item(info->key_names, kc);
196 const char *lname = KeyNameText(info->ctx, old_name);
197 const char *kname = KeyNameText(info->ctx, name);
201 log_warn(info->ctx,
209 log_warn(info->ctx,
216 log_warn(info->ctx,
219 darray_item(info->key_names, kc) = XKB_ATOM_NONE;
224 old_kc = FindKeyByName(info, name);
226 const char *kname = KeyNameText(info->ctx, name);
229 darray_item(info->key_names, old_kc) = XKB_ATOM_NONE;
231 log_warn(info->ctx,
237 log_vrb(info->ctx, 3,
244 darray_item(info->key_names, kc) = name;
251 HandleAliasDef(KeyNamesInfo *info, KeyAliasDef *def, enum merge_mode merge);
330 HandleKeycodesFile(KeyNamesInfo *info, XkbFile *file, enum merge_mode merge);
333 HandleIncludeKeycodes(KeyNamesInfo *info, IncludeStmt *include)
337 InitKeyNamesInfo(&included, info->ctx);
345 file = ProcessIncludeFile(info->ctx, stmt, FILE_TYPE_KEYCODES);
347 info->errorCount += 10;
352 InitKeyNamesInfo(&next_incl, info->ctx);
362 MergeIncludedKeycodes(info, &included, include->merge);
365 return (info->errorCount == 0);
369 HandleKeycodeDef(KeyNamesInfo *info, KeycodeDef *stmt, enum merge_mode merge)
379 log_err(info->ctx,
385 return AddKeyName(info, stmt->value, stmt->name, merge, false, true);
389 HandleAliasDef(KeyNamesInfo *info, KeyAliasDef *def, enum merge_mode merge)
393 darray_foreach(old, info->aliases) {
396 log_vrb(info->ctx, 1,
399 KeyNameText(info->ctx, def->alias),
400 KeyNameText(info->ctx, def->real));
408 log_warn(info->ctx,
411 KeyNameText(info->ctx, old->alias),
412 KeyNameText(info->ctx, use),
413 KeyNameText(info->ctx, ignore));
424 darray_append(info->aliases, new);
429 HandleKeyNameVar(KeyNamesInfo *info, VarDef *stmt)
434 if (!ExprResolveLhs(info->ctx, stmt->name, &elem, &field, &arrayNdx))
438 log_err(info->ctx, "Unknown element %s encountered; "
444 log_err(info->ctx, "Unknown field encountered; "
454 HandleLedNameDef(KeyNamesInfo *info, LedNameDef *def,
461 info->errorCount++;
462 log_err(info->ctx,
468 if (!ExprResolveString(info->ctx, def->name, &name)) {
471 info->errorCount++;
472 return ReportBadType(info->ctx, "indicator", "name", buf, "string");
477 return AddLedName(info, merge, true, &ledi, def->ndx - 1);
481 HandleKeycodesFile(KeyNamesInfo *info, XkbFile *file, enum merge_mode merge)
485 free(info->name);
486 info->name = strdup_safe(file->name);
491 ok = HandleIncludeKeycodes(info, (IncludeStmt *) stmt);
494 ok = HandleKeycodeDef(info, (KeycodeDef *) stmt, merge);
497 ok = HandleAliasDef(info, (KeyAliasDef *) stmt, merge);
500 ok = HandleKeyNameVar(info, (VarDef *) stmt);
503 ok = HandleLedNameDef(info, (LedNameDef *) stmt, merge);
506 log_err(info->ctx,
514 info->errorCount++;
516 if (info->errorCount > 10) {
517 log_err(info->ctx, "Abandoning keycodes file \"%s\"\n",
527 CopyKeyNamesToKeymap(struct xkb_keymap *keymap, KeyNamesInfo *info)
532 min_key_code = info->min_key_code;
533 max_key_code = info->max_key_code;
547 for (kc = info->min_key_code; kc <= info->max_key_code; kc++)
548 keys[kc].name = darray_item(info->key_names, kc);
557 CopyKeyAliasesToKeymap(struct xkb_keymap *keymap, KeyNamesInfo *info)
568 darray_foreach(alias, info->aliases) {
571 log_vrb(info->ctx, 5,
573 KeyNameText(info->ctx, alias->alias),
574 KeyNameText(info->ctx, alias->real));
581 log_vrb(info->ctx, 5,
584 KeyNameText(info->ctx, alias->alias),
585 KeyNameText(info->ctx, alias->real));
602 darray_foreach(alias, info->aliases) {
616 CopyLedNamesToKeymap(struct xkb_keymap *keymap, KeyNamesInfo *info)
618 keymap->num_leds = info->num_led_names;
619 for (xkb_led_index_t idx = 0; idx < info->num_led_names; idx++) {
620 LedNameInfo *ledi = &info->led_names[idx];
632 CopyKeyNamesInfoToKeymap(struct xkb_keymap *keymap, KeyNamesInfo *info)
635 if (!CopyKeyNamesToKeymap(keymap, info) ||
636 !CopyKeyAliasesToKeymap(keymap, info) ||
637 !CopyLedNamesToKeymap(keymap, info))
640 keymap->keycodes_section_name = strdup_safe(info->name);
651 KeyNamesInfo info;
653 InitKeyNamesInfo(&info, keymap->ctx);
655 HandleKeycodesFile(&info, file, merge);
656 if (info.errorCount != 0)
659 if (!CopyKeyNamesInfoToKeymap(keymap, &info))
662 ClearKeyNamesInfo(&info);
666 ClearKeyNamesInfo(&info);