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
parent
0015604ade
commit
fe89d03154
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue