#include "utils.h"
#include "context.h"
-#define XKB_KEY_NAME_LENGTH 4
-
/* This limit is artificially enforced, we do not depend on it any where.
* The reason it's still here is that the rules file format does not
* support multiple groups very well, and the rules shipped with
struct xkb_indicator_map {
xkb_atom_t name;
enum xkb_state_component which_groups;
- uint32_t groups;
+ xkb_layout_mask_t groups;
enum xkb_state_component which_mods;
struct xkb_mods mods;
enum xkb_action_controls ctrls;
};
struct xkb_key_alias {
- char real[XKB_KEY_NAME_LENGTH];
- char alias[XKB_KEY_NAME_LENGTH];
+ xkb_atom_t real;
+ xkb_atom_t alias;
};
struct xkb_controls {
struct xkb_key {
xkb_keycode_t keycode;
- char name[XKB_KEY_NAME_LENGTH];
+ xkb_atom_t name;
enum xkb_explicit_components explicit;
return key->groups[layout].type->num_levels;
}
-static inline unsigned int
-XkbKeyNumSyms(const struct xkb_key *key, xkb_layout_index_t layout,
- xkb_level_index_t level)
-{
- return key->groups[layout].levels[level].num_syms;
-}
-
-static inline const xkb_keysym_t *
-XkbKeySymEntry(const struct xkb_key *key, xkb_layout_index_t layout,
- xkb_level_index_t level)
-{
- if (XkbKeyNumSyms(key, layout, level) <= 1)
- return &key->groups[layout].levels[level].u.sym;
- else
- return key->groups[layout].levels[level].u.syms;
-}
-
-static inline const union xkb_action *
-XkbKeyActionEntry(const struct xkb_key *key, xkb_layout_index_t layout,
- xkb_level_index_t level)
-{
- return &key->groups[layout].levels[level].action;
-}
-
struct xkb_keymap *
xkb_keymap_new(struct xkb_context *ctx,
enum xkb_keymap_format format,