xserver: Branch 'master'
Daniel Stone
daniels at kemper.freedesktop.org
Mon Dec 29 17:20:19 PST 2008
xkb/xkbUtils.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
New commits:
commit 48dbaf173a82693fd72953983da9fc556cd1c6ed
Author: Daniel Stone <daniel at fooishbar.org>
Date: Tue Dec 30 12:17:14 2008 +1100
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 at fooishbar.org>
diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index 7c39bcc..aeb9892 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -2123,6 +2123,12 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
DeviceIntPtr pDev = NULL, tmpDev = NULL;
xkbMapNotify mn;
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)
return FALSE;
@@ -2205,9 +2211,18 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
mn.firstVModMapKey = src->min_key_code;
mn.nVModMapKeys = XkbNumKeys(src);
mn.virtualMods = ~0; /* ??? */
- mn.changed = XkbAllMapComponentsMask;
+ mn.changed = XkbAllMapComponentsMask;
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);
}
}
More information about the xorg-commit
mailing list