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