Work out a default repeat for all keys

Our early exit in ApplyInterpsToKey meant we weren't hitting the code
that's supposed to set a sensible default autorepeat value for most
keys.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
master
Daniel Stone 2012-06-22 15:26:07 +01:00
parent 0015604ade
commit fe89d03154
1 changed files with 5 additions and 5 deletions

View File

@ -973,9 +973,7 @@ ApplyInterpsToKey(struct xkb_keymap *keymap, xkb_keycode_t key)
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++) {
@ -988,8 +986,10 @@ ApplyInterpsToKey(struct xkb_keymap *keymap, xkb_keycode_t key)
/* 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;