debian/changelog | 5 debian/patches/44_XKB_mapping_changes_for_all_core-sending_devices.diff | 149 ++++++++++ debian/patches/series | 1 3 files changed, 154 insertions(+), 1 deletion(-)
New commits: commit cae73dc9df934f06c4af69a9306d52e5c8257f4e Author: Brice Goglin <[EMAIL PROTECTED]> Date: Sun Sep 23 17:42:19 2007 +0200 Add 44_XKB_mapping_changes_for_all_core-sending_devices.diff diff --git a/debian/changelog b/debian/changelog index d76314e..625b5db 100644 --- a/debian/changelog +++ b/debian/changelog @@ -16,6 +16,9 @@ xorg-server (2:1.4-3) UNRELEASED; urgency=low [ Brice Goglin ] * Build the Xfbdev server in new package xserver-xfbdev, closes: #439764. + * Add upstream commit 27ad5d74c20f01516a1bff73be283f8982fcf0fe as patch + 44_XKB_mapping_changes_for_all_core-sending_devices.diff to fix broken + xmodmap invocation in .xsession, closes: #443044. [ Christian Perrier ] * Debconf templates and debian/control reviewed by the debian-l10n- @@ -42,7 +45,7 @@ xorg-server (2:1.4-3) UNRELEASED; urgency=low debian/patches/series. * Don't build kdrive-based servers we're not shipping. - -- Julien Cristau <[EMAIL PROTECTED]> Sun, 23 Sep 2007 13:55:28 +0200 + -- Brice Goglin <[EMAIL PROTECTED]> Sun, 23 Sep 2007 17:32:49 +0200 xorg-server (2:1.4-2) unstable; urgency=low diff --git a/debian/patches/44_XKB_mapping_changes_for_all_core-sending_devices.diff b/debian/patches/44_XKB_mapping_changes_for_all_core-sending_devices.diff new file mode 100644 index 0000000..f823591 --- /dev/null +++ b/debian/patches/44_XKB_mapping_changes_for_all_core-sending_devices.diff @@ -0,0 +1,149 @@ +From: Daniel Stone <[EMAIL PROTECTED]> +Date: Sun, 23 Sep 2007 14:17:03 +0000 (+0300) +Subject: Input: Generate XKB mapping changes for all core-sending devices (bug #12523) +X-Git-Url: http://gitweb.freedesktop.org/?p=xorg/xserver.git;a=commitdiff;h=27ad5d74c20f01516a1bff73be283f8982fcf0fe + +Input: Generate XKB mapping changes for all core-sending devices (bug #12523) + +When we change the mapping on a core device, make sure we propagate this +through to XKB for all extended devices as well. + +http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=443044 +--- + +--- a/Xi/exevents.c ++++ b/Xi/exevents.c +@@ -73,6 +73,10 @@ SOFTWARE. + #include "dixgrabs.h" /* CreateGrab() */ + #include "scrnintstr.h" + ++#ifdef XKB ++#include "xkbsrv.h" ++#endif ++ + #define WID(w) ((w) ? ((w)->drawable.id) : 0) + #define AllModifiersMask ( \ + ShiftMask | LockMask | ControlMask | Mod1Mask | Mod2Mask | \ +@@ -942,7 +946,7 @@ SetModifierMapping(ClientPtr client, Dev + } + + void +-SendDeviceMappingNotify(CARD8 request, ++SendDeviceMappingNotify(ClientPtr client, CARD8 request, + KeyCode firstKeyCode, CARD8 count, DeviceIntPtr dev) + { + xEvent event; +@@ -957,6 +961,11 @@ SendDeviceMappingNotify(CARD8 request, + ev->count = count; + } + ++#ifdef XKB ++ if (request == MappingKeyboard || request == MappingModifier) ++ XkbApplyMappingChange(dev, request, firstKeyCode, count, client); ++#endif ++ + SendEventToAllWindows(dev, DeviceMappingNotifyMask, (xEvent *) ev, 1); + } + +@@ -992,7 +1001,7 @@ ChangeKeyMapping(ClientPtr client, + keysyms.map = map; + if (!SetKeySymsMap(&k->curKeySyms, &keysyms)) + return BadAlloc; +- SendDeviceMappingNotify(MappingKeyboard, firstKeyCode, keyCodes, dev); ++ SendDeviceMappingNotify(client, MappingKeyboard, firstKeyCode, keyCodes, dev); + return client->noClientException; + } + +--- a/Xi/setbmap.c ++++ b/Xi/setbmap.c +@@ -134,7 +134,7 @@ ProcXSetDeviceButtonMapping(ClientPtr cl + } + + if (ret != MappingBusy) +- SendDeviceMappingNotify(MappingPointer, 0, 0, dev); ++ SendDeviceMappingNotify(client, MappingPointer, 0, 0, dev); + return Success; + } + +--- a/Xi/setmmap.c ++++ b/Xi/setmmap.c +@@ -122,7 +122,7 @@ ProcXSetDeviceModifierMapping(ClientPtr + if (ret == MappingSuccess || ret == MappingBusy || ret == MappingFailed) { + rep.success = ret; + if (ret == MappingSuccess) +- SendDeviceMappingNotify(MappingModifier, 0, 0, dev); ++ SendDeviceMappingNotify(client, MappingModifier, 0, 0, dev); + WriteReplyToClient(client, sizeof(xSetDeviceModifierMappingReply), + &rep); + } else { +--- a/dix/devices.c ++++ b/dix/devices.c +@@ -1208,10 +1208,9 @@ SendMappingNotify(unsigned request, unsi + } + #ifdef XKB + if (!noXkbExtension && +- ((request == MappingKeyboard) || (request == MappingModifier))) { +- XkbApplyMappingChange(inputInfo.keyboard,request,firstKeyCode,count, +- client); +- } ++ ((request == MappingKeyboard) || (request == MappingModifier))) ++ XkbApplyMappingChange(inputInfo.keyboard, request, firstKeyCode, count, ++ client); + #endif + + /* 0 is the server client */ +@@ -1359,6 +1358,7 @@ int + ProcSetModifierMapping(ClientPtr client) + { + xSetModifierMappingReply rep; ++ DeviceIntPtr dev; + REQUEST(xSetModifierMappingReq); + + REQUEST_AT_LEAST_SIZE(xSetModifierMappingReq); +@@ -1374,8 +1374,10 @@ ProcSetModifierMapping(ClientPtr client) + rep.success = DoSetModifierMapping(client, (KeyCode *)&stuff[1], + stuff->numKeyPerModifier); + +- /* FIXME: Send mapping notifies for all the extended devices as well. */ + SendMappingNotify(MappingModifier, 0, 0, client); ++ for (dev = inputInfo.devices; dev; dev = dev->next) ++ if (dev->key && dev->coreEvents) ++ SendDeviceMappingNotify(client, MappingModifier, 0, 0, dev); + WriteReplyToClient(client, sizeof(xSetModifierMappingReply), &rep); + return client->noClientException; + } +@@ -1438,16 +1440,19 @@ ProcChangeKeyboardMapping(ClientPtr clie + keysyms.maxKeyCode = stuff->firstKeyCode + stuff->keyCodes - 1; + keysyms.mapWidth = stuff->keySymsPerKeyCode; + keysyms.map = (KeySym *)&stuff[1]; +- for (pDev = inputInfo.devices; pDev; pDev = pDev->next) { +- if ((pDev->coreEvents || pDev == inputInfo.keyboard) && pDev->key) { ++ for (pDev = inputInfo.devices; pDev; pDev = pDev->next) ++ if ((pDev->coreEvents || pDev == inputInfo.keyboard) && pDev->key) + if (!SetKeySymsMap(&pDev->key->curKeySyms, &keysyms)) + return BadAlloc; +- } +- } + +- /* FIXME: Send mapping notifies for all the extended devices as well. */ + SendMappingNotify(MappingKeyboard, stuff->firstKeyCode, stuff->keyCodes, + client); ++ for (pDev = inputInfo.devices; pDev; pDev = pDev->next) ++ if (pDev->key && pDev->coreEvents) ++ SendDeviceMappingNotify(client, MappingKeyboard, ++ stuff->firstKeyCode, stuff->keyCodes, ++ pDev); ++ + return client->noClientException; + } + +--- a/include/exevents.h ++++ b/include/exevents.h +@@ -129,6 +129,7 @@ extern int SetModifierMapping( + KeyClassPtr * /* k */); + + extern void SendDeviceMappingNotify( ++ ClientPtr /* client, */, + CARD8 /* request, */, + KeyCode /* firstKeyCode */, + CARD8 /* count */, diff --git a/debian/patches/series b/debian/patches/series index 290b2c1..3d6c803 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -10,6 +10,7 @@ 41_vbe_filter_less.diff 42_fix_RemoveGeneralSocket_crash_from_dbus.diff 43_allow_override_BIOS_EDID_preferred_mode.diff +44_XKB_mapping_changes_for_all_core-sending_devices.diff #47_fbdevhw_magic_numbers.diff #51_xkb-and-loathing.diff 91_ttf2pt1 -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]