From turutani@scphys.kyoto-u.ac.jp  Mon Mar 10 22:11:58 2008
Return-Path: <turutani@scphys.kyoto-u.ac.jp>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 49C221065674
	for <FreeBSD-gnats-submit@freebsd.org>; Mon, 10 Mar 2008 22:11:58 +0000 (UTC)
	(envelope-from turutani@scphys.kyoto-u.ac.jp)
Received: from omls-1c.kuins.net (omls-1c.kuins.net [130.54.130.73])
	by mx1.freebsd.org (Postfix) with ESMTP id 9FDE78FC15
	for <FreeBSD-gnats-submit@freebsd.org>; Mon, 10 Mar 2008 22:11:56 +0000 (UTC)
	(envelope-from turutani@scphys.kyoto-u.ac.jp)
Received: from imls-1a.kuins.net (imls-1a.imail.kuins.net [10.224.253.3] (may be forged))
	by omls-1c.kuins.net (8.13.8/8.12.7) with ESMTP id m2AMBtAJ004104
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 11 Mar 2008 07:11:55 +0900
Received: from imls-1a.kuins.net (localhost.localdomain [127.0.0.1])
	by imls-1a.kuins.net (8.12.11/8.12.10) with ESMTP id m2AMBs1o007511
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 11 Mar 2008 07:11:55 +0900
Received: from polymer3.scphys.kyoto-u.ac.jp (h78.212.225.10.102382.vlan.kuins.net [10.225.212.78])
	by imls-1a.kuins.net (8.12.11/8.12.10) with ESMTP id m2AMBsIu007501;
	Tue, 11 Mar 2008 07:11:54 +0900
Received: from polymer3.scphys.kyoto-u.ac.jp (localhost [127.0.0.1])
	by polymer3.scphys.kyoto-u.ac.jp (8.14.2/8.14.2/20071004-1) with ESMTP id m2AMBmeB064642;
	Tue, 11 Mar 2008 07:11:48 +0900 (JST)
	(envelope-from turutani@polymer3.scphys.kyoto-u.ac.jp)
Received: (from turutani@localhost)
	by polymer3.scphys.kyoto-u.ac.jp (8.14.2/8.14.2/Submit) id m2AMBmdZ064641;
	Tue, 11 Mar 2008 07:11:48 +0900 (JST)
	(envelope-from turutani)
Message-Id: <200803102211.m2AMBmdZ064641@polymer3.scphys.kyoto-u.ac.jp>
Date: Tue, 11 Mar 2008 07:11:48 +0900 (JST)
From: Tsurutani Naoki <turutani@scphys.kyoto-u.ac.jp>
Reply-To: Tsurutani Naoki <turutani@scphys.kyoto-u.ac.jp>
To: FreeBSD-gnats-submit@freebsd.org
Cc: turutani@scphys.kyoto-u.ac.jp
Subject: xmodmap does not work in startup file
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         121580
>Category:       ports
>Synopsis:       x11-servers/xorg-server - xmodmap does not work in startup file
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-x11
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Mar 10 22:20:00 UTC 2008
>Closed-Date:    Thu Mar 13 11:41:55 UTC 2008
>Last-Modified:  Thu Mar 13 11:41:55 UTC 2008
>Originator:     Tsurutani Naoki
>Release:        FreeBSD 6.3-PRERELEASE i386
>Organization:
>Environment:
System: FreeBSD polymer3.scphys.kyoto-u.ac.jp 6.3-PRERELEASE FreeBSD 6.3-PRERELEASE #11: Wed Jan 16 16:30:07 JST 2008 turutani@polymer3.scphys.kyoto-u.ac.jp:/usr/local/work/usr/obj/usr/src/sys/POLYMER i386


	
>Description:
	xmodmap does not work in .xinitrc.
	Once X server started, xmodmap works fine if xmodmap has not been done
	in .xinitrc etc.
	
>How-To-Repeat:
	always start X server with "startx".
	this does not happen using xdm.
	
>Fix:
	add the following patch to ports/x11-servers/xorg-server/files/.
	this fix is already incorporated into xorg-server source tree.

--- Xi/exevents.c.orig	2007-08-24 04:04:52.000000000 +0900
+++ Xi/exevents.c	2008-03-10 10:32:31.000000000 +0900
@@ -73,6 +73,10 @@
 #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 @@
 }
 
 void
-SendDeviceMappingNotify(CARD8 request,
+SendDeviceMappingNotify(ClientPtr client, CARD8 request,
 			KeyCode firstKeyCode, CARD8 count, DeviceIntPtr dev)
 {
     xEvent event;
@@ -957,6 +961,11 @@
 	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 @@
     keysyms.map = map;
     if (!SetKeySymsMap(&k->curKeySyms, &keysyms))
 	return BadAlloc;
-    SendDeviceMappingNotify(MappingKeyboard, firstKeyCode, keyCodes, dev);
+    SendDeviceMappingNotify(client, MappingKeyboard, firstKeyCode, keyCodes, dev);
     return client->noClientException;
 }
 
--- Xi/setbmap.c.orig	2007-08-24 04:04:52.000000000 +0900
+++ Xi/setbmap.c	2008-03-10 10:33:08.000000000 +0900
@@ -134,7 +134,7 @@
     }
 
     if (ret != MappingBusy)
-	SendDeviceMappingNotify(MappingPointer, 0, 0, dev);
+	SendDeviceMappingNotify(client, MappingPointer, 0, 0, dev);
     return Success;
 }
 
--- Xi/setmmap.c.orig	2007-08-24 04:04:52.000000000 +0900
+++ Xi/setmmap.c	2008-03-10 10:33:38.000000000 +0900
@@ -122,7 +122,7 @@
     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 {
--- dix/devices.c.orig	2008-03-10 10:25:54.000000000 +0900
+++ dix/devices.c	2008-03-10 10:37:36.000000000 +0900
@@ -1369,6 +1369,7 @@
 ProcSetModifierMapping(ClientPtr client)
 {
     xSetModifierMappingReply rep;
+    DeviceIntPtr dev;
     REQUEST(xSetModifierMappingReq);
     
     REQUEST_AT_LEAST_SIZE(xSetModifierMappingReq);
@@ -1386,6 +1387,9 @@
 
     /* 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;
 }
@@ -1458,6 +1462,12 @@
     /* 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;
 }
 
--- include/exevents.h.orig	2007-08-24 04:04:54.000000000 +0900
+++ include/exevents.h	2008-03-10 10:38:19.000000000 +0900
@@ -129,6 +129,7 @@
 	KeyClassPtr *          /* k */);
 
 extern void SendDeviceMappingNotify(
+	ClientPtr              /* client, */,
 	CARD8                  /* request, */,
 	KeyCode                /* firstKeyCode */,
 	CARD8                  /* count */,
	


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-ports-bugs->freebsd-x11 
Responsible-Changed-By: edwin 
Responsible-Changed-When: Mon Mar 10 22:38:51 UTC 2008 
Responsible-Changed-Why:  
Over to maintainer (via the GNATS Auto Assign Tool) 

http://www.freebsd.org/cgi/query-pr.cgi?pr=121580 

From: "Florent Thoumie" <flz@xbsd.org>
To: bug-followup@FreeBSD.org, turutani@scphys.kyoto-u.ac.jp
Cc:  
Subject: Re: ports/121580: x11-servers/xorg-server - xmodmap does not work in startup file
Date: Tue, 11 Mar 2008 10:06:21 +0000

 Can you point to the freedesktop commit?
 
 -- 
 Florent Thoumie
 flz@FreeBSD.org
 FreeBSD Committer

From: Tsurutani Naoki <turutani@scphys.kyoto-u.ac.jp>
To: Florent Thoumie <flz@xbsd.org>
Cc: bug-followup@FreeBSD.org, turutani@scphys.kyoto-u.ac.jp
Subject: Re: ports/121580: x11-servers/xorg-server - xmodmap does not work
 in startup file
Date: Tue, 11 Mar 2008 21:46:23 +0900

 Florent Thoumie wrote:
 > Can you point to the freedesktop commit?
 >
 >   
 http://gitweb.freedesktop.org/?p=xorg/xserver.git;a=commitdiff;h=27ad5d74c20f01516a1bff73be283f8982fcf0fe
 
 ---
 Tsurutani Naoki
 turutani@scphys.kyoto-u.ac.jp
State-Changed-From-To: open->closed 
State-Changed-By: flz 
State-Changed-When: Jeu 13 mar 2008 11:41:54 UTC 
State-Changed-Why:  
Committed. Thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=121580 
>Unformatted:
