XKB: Also copy keyboard feedback when copying the keymap
When updating the XKB keymap, make sure the keyboard feedback is also copied, to preserve autorepeat settings etc. Signed-off-by: Daniel Stone <daniel@fooishbar.org>
This commit is contained in:
parent
cf85a32b5f
commit
48dbaf173a
|
@ -2123,6 +2123,12 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
|
||||||
DeviceIntPtr pDev = NULL, tmpDev = NULL;
|
DeviceIntPtr pDev = NULL, tmpDev = NULL;
|
||||||
xkbMapNotify mn;
|
xkbMapNotify mn;
|
||||||
xkbNewKeyboardNotify nkn;
|
xkbNewKeyboardNotify nkn;
|
||||||
|
XkbEventCauseRec cause;
|
||||||
|
XkbChangesRec changes;
|
||||||
|
unsigned int check = 0;
|
||||||
|
|
||||||
|
memset(&changes, 0, sizeof(changes));
|
||||||
|
memset(&cause, 0, sizeof(cause));
|
||||||
|
|
||||||
if (!src || !dst || src == dst)
|
if (!src || !dst || src == dst)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -2205,9 +2211,18 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
|
||||||
mn.firstVModMapKey = src->min_key_code;
|
mn.firstVModMapKey = src->min_key_code;
|
||||||
mn.nVModMapKeys = XkbNumKeys(src);
|
mn.nVModMapKeys = XkbNumKeys(src);
|
||||||
mn.virtualMods = ~0; /* ??? */
|
mn.virtualMods = ~0; /* ??? */
|
||||||
mn.changed = XkbAllMapComponentsMask;
|
mn.changed = XkbAllMapComponentsMask;
|
||||||
XkbSendMapNotify(pDev, &mn);
|
XkbSendMapNotify(pDev, &mn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XkbUpdateActions(pDev, dst->min_key_code,
|
||||||
|
XkbNumKeys(pDev->key->xkbInfo->desc), &changes,
|
||||||
|
&check, &cause);
|
||||||
|
if (check)
|
||||||
|
XkbCheckSecondaryEffects(pDev->key->xkbInfo, check, &changes,
|
||||||
|
&cause);
|
||||||
|
memcpy(pDev->kbdfeed->ctrl.autoRepeats, dst->ctrls->per_key_repeat,
|
||||||
|
XkbPerKeyBitArraySize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue