darray_foreach(key, keymap->keys) {
free(key->sym_index);
free(key->num_syms);
- darray_free(key->syms);
+ free(key->syms);
free(key->actions);
}
darray_free(keymap->keys);
int *sym_index;
/* per level/group */
unsigned int *num_syms;
- darray(xkb_keysym_t) syms;
+ xkb_keysym_t *syms;
};
/* Common keyboard description structure */
XkbKeySymEntry(struct xkb_key *key, xkb_group_index_t group,
xkb_level_index_t level)
{
- return &darray_item(key->syms,
- key->sym_index[group * key->width + level]);
+ return &key->syms[key->sym_index[group * key->width + level]];
}
static inline union xkb_action *
sizeSyms += darray_size(groupi->syms);
}
- darray_resize0(key->syms, sizeSyms);
-
+ key->syms = calloc(sizeSyms, sizeof(*key->syms));
key->num_groups = nGroups;
-
key->width = width;
-
key->sym_index = calloc(nGroups * width, sizeof(*key->sym_index));
-
key->num_syms = calloc(nGroups * width, sizeof(*key->num_syms));
if (haveActions) {
for (tmp = 0; tmp < width; tmp++) {
if (tmp < groupi->numLevels &&
darray_item(groupi->symsMapNumEntries, tmp) != 0) {
- memcpy(darray_mem(key->syms, symIndex),
+ memcpy(&key->syms[symIndex],
darray_mem(groupi->syms,
darray_item(groupi->symsMapIndex, tmp)),
darray_item(groupi->symsMapNumEntries, tmp) * sizeof(xkb_keysym_t));