if (num_acts)
num_acts = XkbKeyNumGroups(keymap, key) * width;
acts = XkbcResizeKeyActions(keymap, key, num_acts);
- if (!num_acts)
- return true;
- else if (!acts)
+ if (num_acts && !acts)
return false;
for (group = 0; group < XkbKeyNumGroups(keymap, key); group++) {
/* Infer default key behaviours from the base level. */
if (group == 0 && level == 0) {
if (!(keymap->server->explicit[key] & XkbExplicitAutoRepeatMask) &&
- (!interp || interp->flags & XkbSI_AutoRepeat))
- keymap->ctrls->per_key_repeat[key / 8] |= (1 << (key % 8));
+ (!interp || interp->flags & XkbSI_AutoRepeat)) {
+ keymap->ctrls->per_key_repeat[key / 8] |= (1 << (key % 8));
+ keymap->server->explicit[key] |= XkbExplicitAutoRepeatMask;
+ }
if (!(keymap->server->explicit[key] & XkbExplicitBehaviorMask) &&
interp && (interp->flags & XkbSI_LockingKey))
keymap->server->behaviors[key].type = XkbKB_Lock;