write_buf(buf, "\t\ttype \"%s\" {\n",
xkb_atom_text(keymap->ctx, type->name));
write_buf(buf, "\t\t\tmodifiers= %s;\n",
- VModMaskText(keymap, type->mods.mods));
+ ModMaskText(keymap, type->mods.mods, MOD_BOTH));
for (j = 0; j < type->num_entries; j++) {
const char *str;
if (entry->level == 0 && entry->preserve.mods == 0)
continue;
- str = VModMaskText(keymap, entry->mods.mods);
+ str = ModMaskText(keymap, entry->mods.mods, MOD_BOTH);
write_buf(buf, "\t\t\tmap[%s]= Level%d;\n",
str, entry->level + 1);
continue;
write_buf(buf, "\t\t\tpreserve[%s]= ", str);
- write_buf(buf, "%s;\n", VModMaskText(keymap, entry->preserve.mods));
+ write_buf(buf, "%s;\n",
+ ModMaskText(keymap, entry->preserve.mods, MOD_BOTH));
}
if (type->level_names) {
get_indicator_state_text(led->which_mods));
}
write_buf(buf, "\t\t\tmodifiers= %s;\n",
- VModMaskText(keymap, led->mods.mods));
+ ModMaskText(keymap, led->mods.mods, MOD_BOTH));
}
if (led->ctrls) {
if (action->mods.flags & ACTION_MODS_LOOKUP_MODMAP)
args = "modMapMods";
else
- args = VModMaskText(keymap, action->mods.mods.mods);
+ args = ModMaskText(keymap, action->mods.mods.mods, MOD_BOTH);
write_buf(buf, "%s%s(modifiers=%s%s%s)%s", prefix, type, args,
(action->type != ACTION_TYPE_MOD_LOCK &&
(action->mods.flags & ACTION_LOCK_CLEAR)) ?
write_buf(buf, "\t\tinterpret %s+%s(%s) {\n",
keysym_name,
SIMatchText(interp->match),
- VModMaskText(keymap, interp->mods));
+ ModMaskText(keymap, interp->mods, MOD_REAL));
- if (interp->virtual_mod != XKB_MOD_INVALID) {
- xkb_mod_index_t idx = interp->virtual_mod;
+ if (interp->virtual_mod != XKB_MOD_INVALID)
write_buf(buf, "\t\t\tvirtualModifier= %s;\n",
- xkb_atom_text(keymap->ctx,
- darray_item(keymap->mods, idx).name));
- }
+ ModIndexText(keymap, interp->virtual_mod, MOD_VIRT));
if (interp->match & MATCH_LEVEL_ONE_ONLY)
- write_buf(buf,
- "\t\t\tuseModMapMods=level1;\n");
+ write_buf(buf, "\t\t\tuseModMapMods=level1;\n");
if (interp->repeat)
write_buf(buf, "\t\t\trepeat= True;\n");
if (key->vmodmap && (key->explicit & EXPLICIT_VMODMAP))
write_buf(buf, "\n\t\t\tvirtualMods= %s,",
- VModMaskText(keymap, key->vmodmap));
+ ModMaskText(keymap, key->vmodmap, MOD_VIRT));
switch (key->out_of_range_group_action) {
case RANGE_SATURATE:
return rtrn;
}
-static const char *
-mod_mask_text(const struct xkb_keymap *keymap, xkb_mod_mask_t mask,
- enum mod_type type)
+const char *
+ModMaskText(const struct xkb_keymap *keymap, xkb_mod_mask_t mask,
+ enum mod_type type)
{
xkb_mod_index_t i;
xkb_mod_mask_t rmask, vmask;
}
const char *
-ModMaskText(const struct xkb_keymap *keymap, xkb_mod_mask_t mask)
+ModIndexText(const struct xkb_keymap *keymap, xkb_mod_index_t ndx,
+ enum mod_type type)
{
- return mod_mask_text(keymap, mask, MOD_REAL);
-}
+ if (ndx == XKB_MOD_INVALID)
+ return "none";
-const char *
-VModMaskText(const struct xkb_keymap *keymap, xkb_mod_mask_t mask)
-{
- return mod_mask_text(keymap, mask, MOD_BOTH);
+ if (ndx >= darray_size(keymap->mods) ||
+ !(darray_item(keymap->mods, ndx).type & type))
+ return NULL;
+
+ return xkb_atom_text(keymap->ctx, darray_item(keymap->mods, ndx).name);
}
-static xkb_mod_index_t
-mod_name_to_index(const struct xkb_keymap *keymap, xkb_atom_t name,
- enum mod_type type)
+xkb_mod_index_t
+ModNameToIndex(const struct xkb_keymap *keymap, xkb_atom_t name,
+ enum mod_type type)
{
xkb_mod_index_t i;
const struct xkb_mod *mod;
return XKB_MOD_INVALID;
}
-xkb_mod_index_t
-ModNameToIndex(const struct xkb_keymap *keymap, xkb_atom_t name)
-{
- return mod_name_to_index(keymap, name, MOD_REAL);
-}
-
-static xkb_mod_index_t
-mod_index_to_name(const struct xkb_keymap *keymap, xkb_mod_index_t ndx,
- enum mod_type type)
-{
- if (ndx >= darray_size(keymap->mods) ||
- !(darray_item(keymap->mods, ndx).type & type))
- return XKB_ATOM_NONE;
-
- return darray_item(keymap->mods, ndx).name;
-}
-
-xkb_atom_t
-ModIndexToName(const struct xkb_keymap *keymap, xkb_mod_index_t ndx)
-{
- return mod_index_to_name(keymap, ndx, MOD_REAL);
-}
-
-static const char *
-mod_index_text(const struct xkb_keymap *keymap, xkb_mod_index_t ndx,
- enum mod_type type)
-{
- xkb_atom_t name;
-
- name = mod_index_to_name(keymap, ndx, type);
- if (name)
- return xkb_atom_text(keymap->ctx, name);
-
- if (ndx == XKB_MOD_INVALID)
- return "none";
-
- return NULL;
-}
-
-const char *
-ModIndexText(const struct xkb_keymap *keymap, xkb_mod_index_t ndx)
-{
- return mod_index_text(keymap, ndx, MOD_REAL);
-}
-
const char *
ActionTypeText(unsigned type)
{
extern const LookupEntry symInterpretMatchMaskNames[];
const char *
-VModMaskText(const struct xkb_keymap *keymap, xkb_mod_mask_t mask);
-
-xkb_mod_index_t
-ModNameToIndex(const struct xkb_keymap *keymap, xkb_atom_t name);
-
-xkb_atom_t
-ModIndexToName(const struct xkb_keymap *keymap, xkb_mod_index_t ndx);
+ModMaskText(const struct xkb_keymap *keymap, xkb_mod_mask_t mask,
+ enum mod_type type);
const char *
-ModIndexText(const struct xkb_keymap *keymap, xkb_mod_index_t ndx);
+ModIndexText(const struct xkb_keymap *keymap, xkb_mod_index_t ndx,
+ enum mod_type type);
-const char *
-ModMaskText(const struct xkb_keymap *keymap, xkb_mod_mask_t mask);
+xkb_mod_index_t
+ModNameToIndex(const struct xkb_keymap *keymap, xkb_atom_t name,
+ enum mod_type type);
const char *
ActionTypeText(enum xkb_action_type type);
snprintf(buf, sizeof(buf), "%s+%s(%s)",
KeysymText(si->interp.sym),
SIMatchText(si->interp.match),
- ModMaskText(info->keymap, si->interp.mods));
+ ModMaskText(info->keymap, si->interp.mods, MOD_REAL));
return buf;
}
enum expr_value_type type, xkb_mod_index_t *val_rtrn)
{
const struct xkb_keymap *keymap = priv;
- *val_rtrn = ModNameToIndex(keymap, field);
+ *val_rtrn = ModNameToIndex(keymap, field, MOD_REAL);
return (*val_rtrn != XKB_MOD_INVALID);
}
"%s added to symbol map for multiple modifiers; "
"Using %s, ignoring %s.\n",
KeysymText(new->u.keySym),
- ModIndexText(info->keymap, use),
- ModIndexText(info->keymap, ignore));
+ ModIndexText(info->keymap, use, MOD_REAL),
+ ModIndexText(info->keymap, ignore, MOD_REAL));
mm->modifier = use;
}
return true;
"Key %s added to map for multiple modifiers; "
"Using %s, ignoring %s.\n",
KeyNameText(info->keymap->ctx, new->u.keyName),
- ModIndexText(info->keymap, use),
- ModIndexText(info->keymap, ignore));
+ ModIndexText(info->keymap, use, MOD_REAL),
+ ModIndexText(info->keymap, ignore, MOD_REAL));
mm->modifier = use;
}
return true;
bool ok;
struct xkb_context *ctx = info->keymap->ctx;
- ndx = ModNameToIndex(info->keymap, def->modifier);
+ ndx = ModNameToIndex(info->keymap, def->modifier, MOD_REAL);
if (ndx == XKB_MOD_INVALID) {
log_err(info->keymap->ctx,
"Illegal modifier map definition; "
log_err(info->keymap->ctx,
"Modmap entries may contain only key names or keysyms; "
"Illegal definition for %s modifier ignored\n",
- ModIndexText(info->keymap, tmp.modifier));
+ ModIndexText(info->keymap, tmp.modifier, MOD_REAL));
continue;
}
"Key %s not found in keycodes; "
"Modifier map entry for %s not updated\n",
KeyNameText(keymap->ctx, entry->u.keyName),
- ModIndexText(info->keymap, entry->modifier));
+ ModIndexText(info->keymap, entry->modifier, MOD_REAL));
return false;
}
}
"Key \"%s\" not found in symbol map; "
"Modifier map entry for %s not updated\n",
KeysymText(entry->u.keySym),
- ModIndexText(info->keymap, entry->modifier));
+ ModIndexText(info->keymap, entry->modifier, MOD_REAL));
return false;
}
}
static inline const char *
MapEntryTxt(KeyTypesInfo *info, struct xkb_kt_map_entry *entry)
{
- return VModMaskText(info->keymap, entry->mods.mods);
+ return ModMaskText(info->keymap, entry->mods.mods, MOD_BOTH);
}
static inline const char *
static inline const char *
TypeMaskTxt(KeyTypesInfo *info, KeyTypeInfo *type)
{
- return VModMaskText(info->keymap, type->mods);
+ return ModMaskText(info->keymap, type->mods, MOD_BOTH);
}
static inline bool
"The modifiers field of a key type is not an array; "
"Illegal array subscript ignored\n");
- /* get modifier mask for current type */
if (!ExprResolveVModMask(info->keymap, value, &mods)) {
log_err(info->keymap->ctx,
"Key type mask field must be a modifier mask; "
"Using %s, ignoring %s\n",
xkb_atom_text(info->keymap->ctx, type->name),
TypeMaskTxt(info, type),
- VModMaskText(info->keymap, mods));
+ ModMaskText(info->keymap, mods, MOD_BOTH));
return false;
}
"Map entry for unused modifiers in %s; "
"Using %s instead of %s\n",
TypeTxt(info, type),
- VModMaskText(info->keymap, entry.mods.mods & type->mods),
+ ModMaskText(info->keymap, entry.mods.mods & type->mods,
+ MOD_BOTH),
MapEntryTxt(info, &entry));
entry.mods.mods &= type->mods;
}
log_vrb(info->keymap->ctx, 10,
"Identical definitions for preserve[%s] in %s; "
"Ignored\n",
- VModMaskText(info->keymap, mods),
+ ModMaskText(info->keymap, mods, MOD_BOTH),
TypeTxt(info, type));
return true;
}
log_vrb(info->keymap->ctx, 1,
"Multiple definitions for preserve[%s] in %s; "
"Using %s, ignoring %s\n",
- VModMaskText(info->keymap, mods),
+ ModMaskText(info->keymap, mods, MOD_BOTH),
TypeTxt(info, type),
- VModMaskText(info->keymap, preserve_mods),
- VModMaskText(info->keymap, entry->preserve.mods));
+ ModMaskText(info->keymap, preserve_mods, MOD_BOTH),
+ ModMaskText(info->keymap, entry->preserve.mods, MOD_BOTH));
entry->preserve.mods = preserve_mods;
return true;
if (mods & ~type->mods) {
const char *before, *after;
- before = VModMaskText(info->keymap, mods);
+ before = ModMaskText(info->keymap, mods, MOD_BOTH);
mods &= type->mods;
- after = VModMaskText(info->keymap, mods);
+ after = ModMaskText(info->keymap, mods, MOD_BOTH);
log_vrb(info->keymap->ctx, 1,
"Preserve for modifiers not used by the %s type; "
log_err(info->keymap->ctx,
"Preserve value in a key type is not a modifier mask; "
"Ignoring preserve[%s] in type %s\n",
- VModMaskText(info->keymap, mods),
+ ModMaskText(info->keymap, mods, MOD_BOTH),
TypeTxt(info, type));
return false;
}
if (preserve_mods & ~mods) {
const char *before, *after;
- before = VModMaskText(info->keymap, preserve_mods);
+ before = ModMaskText(info->keymap, preserve_mods, MOD_BOTH);
preserve_mods &= mods;
- after = VModMaskText(info->keymap, preserve_mods);
+ after = ModMaskText(info->keymap, preserve_mods, MOD_BOTH);
log_vrb(info->keymap->ctx, 1,
"Illegal value for preserve[%s] in type %s; "
"Converted %s to %s\n",
- VModMaskText(info->keymap, mods),
+ ModMaskText(info->keymap, mods, MOD_BOTH),
TypeTxt(info, type), before, after);
}