xserver: Branch 'master' - 10 commits

Daniel Stone daniels at kemper.freedesktop.org
Sun Feb 17 12:50:49 PST 2008


 dix/main.c                               |    9 
 hw/dmx/examples/xinput.c                 |    2 
 hw/dmx/examples/xled.c                   |    2 
 hw/xfree86/utils/xorgcfg/text-mode.c     |    2 
 hw/xfree86/utils/xorgconfig/xorgconfig.c |    2 
 include/xkbfile.h                        |  436 +++++++++++++++++++++
 include/xkbsrv.h                         |   47 --
 include/xkbstr.h                         |  613 +++++++++++++++++++++++++++++
 xkb/Makefile.am                          |    1 
 xkb/XKBAlloc.c                           |    2 
 xkb/XKBGAlloc.c                          |   42 --
 xkb/XKBMAlloc.c                          |    4 
 xkb/XKBMisc.c                            |    5 
 xkb/ddxBeep.c                            |    4 
 xkb/ddxCtrls.c                           |   23 -
 xkb/ddxKeyClick.c                        |    4 
 xkb/ddxList.c                            |   13 
 xkb/ddxLoad.c                            |  171 --------
 xkb/maprules.c                           |   92 +---
 xkb/xkb.c                                |  124 ++----
 xkb/xkb.h                                |    5 
 xkb/xkbAccessX.c                         |    8 
 xkb/xkbActions.c                         |    4 
 xkb/xkbEvents.c                          |   34 -
 xkb/xkbInit.c                            |  203 +++------
 xkb/xkbPrKeyEv.c                         |    4 
 xkb/xkbPrOtherEv.c                       |    2 
 xkb/xkbSwap.c                            |    2 
 xkb/xkbUtils.c                           |   29 -
 xkb/xkberrs.c                            |   37 -
 xkb/xkbfmisc.c                           |  113 -----
 xkb/xkbgeom.h                            |  635 +++++++++++++++++++++++++++++++
 xkb/xkbout.c                             |  146 ++-----
 xkb/xkbtext.c                            |   60 +-
 xkb/xkmread.c                            |  235 ++---------
 35 files changed, 2083 insertions(+), 1032 deletions(-)

New commits:
commit fbd776894658e7afb2c55dc8582b2a3efab78a3c
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Sat Feb 16 20:01:18 2008 +0200

    XKB: Ditch XkbFileInfo
    
    Sorry about the megacommit, but this touches on a lot of stuff.
    
    Get rid of XkbFileInfo, which was pretty seriously redundant, and move the
    only useful thing it had (defined) into XkbDescRec.  defined will be removed
    pretty soon anyway.  Is the compat map pointer non-NULL? Then you have a
    compat map, congratulations! Anyhow, I digress.
    
    All functions that took an XkbFileInfoPtr now take an XkbDescPtr, _except_
    XkmReadFile, which returns an XkbDescPtr *, because people want to deal in
    XkbDescPtrs, not XkbDescRecs.

diff --git a/include/xkbfile.h b/include/xkbfile.h
index e90d766..0a6cb18 100644
--- a/include/xkbfile.h
+++ b/include/xkbfile.h
@@ -37,15 +37,9 @@
 #define	XkbMapDefined		(1<<0)
 #define	XkbStateDefined		(1<<1)
 
-typedef struct _XkbFileInfo {
-    unsigned		type;
-    unsigned		defined;
-    XkbDescPtr	 	xkb;
-} XkbFileInfo,*XkbFileInfoPtr;
-
 typedef void	(*XkbFileAddOnFunc)(
     FILE *		/* file */,
-    XkbFileInfo *	/* result */,
+    XkbDescPtr  	/* result */,
     Bool		/* topLevel */,
     Bool		/* showImplicit */,
     int			/* fileSection */,
@@ -277,12 +271,6 @@ extern	unsigned	XkbConvertXkbComponents(
     unsigned 		/* orig */
 );
 
-extern	Bool	XkbDetermineFileType(
-    XkbFileInfo *	/* xkb */,
-    int			/* format */,
-    int *		/* opts_missing */
-);
-
 extern	Bool	XkbNameMatchesPattern(
     char *		/* name */,
     char *		/* pattern */
@@ -292,7 +280,7 @@ extern	Bool	XkbNameMatchesPattern(
 
 extern	Bool	XkbWriteXKBKeycodes(
     FILE *		/* file */,
-    XkbFileInfo *	/* result */,
+    XkbDescPtr          /* result */,
     Bool		/* topLevel */,
     Bool		/* showImplicit */,
     XkbFileAddOnFunc	/* addOn */,
@@ -301,7 +289,7 @@ extern	Bool	XkbWriteXKBKeycodes(
 
 extern	Bool	XkbWriteXKBKeyTypes(
     FILE *		/* file */,
-    XkbFileInfo *	/* result */,
+    XkbDescPtr  	/* result */,
     Bool		/* topLevel */,
     Bool		/* showImplicit */,
     XkbFileAddOnFunc	/* addOn */,
@@ -310,7 +298,7 @@ extern	Bool	XkbWriteXKBKeyTypes(
 
 extern	Bool	XkbWriteXKBCompatMap(
     FILE *		/* file */,
-    XkbFileInfo *	/* result */,
+    XkbDescPtr	/* result */,
     Bool		/* topLevel */,
     Bool		/* showImplicit */,
     XkbFileAddOnFunc	/* addOn */,
@@ -319,7 +307,7 @@ extern	Bool	XkbWriteXKBCompatMap(
 
 extern	Bool	XkbWriteXKBSymbols(
     FILE *		/* file */,
-    XkbFileInfo *	/* result */,
+    XkbDescPtr	/* result */,
     Bool		/* topLevel */,
     Bool		/* showImplicit */,
     XkbFileAddOnFunc	/* addOn */,
@@ -328,7 +316,7 @@ extern	Bool	XkbWriteXKBSymbols(
 
 extern	Bool	XkbWriteXKBGeometry(
     FILE *		/* file */,
-    XkbFileInfo *	/* result */,
+    XkbDescPtr	/* result */,
     Bool		/* topLevel */,
     Bool		/* showImplicit */,
     XkbFileAddOnFunc	/* addOn */,
@@ -337,7 +325,7 @@ extern	Bool	XkbWriteXKBGeometry(
 
 extern	Bool	XkbWriteXKBSemantics(
     FILE *		/* file */,
-    XkbFileInfo *	/* result */,
+    XkbDescPtr	/* result */,
     Bool		/* topLevel */,
     Bool		/* showImplicit */,
     XkbFileAddOnFunc	/* addOn */,
@@ -346,7 +334,7 @@ extern	Bool	XkbWriteXKBSemantics(
 
 extern	Bool	XkbWriteXKBLayout(
     FILE *		/* file */,
-    XkbFileInfo *	/* result */,
+    XkbDescPtr	/* result */,
     Bool		/* topLevel */,
     Bool		/* showImplicit */,
     XkbFileAddOnFunc	/* addOn */,
@@ -355,7 +343,7 @@ extern	Bool	XkbWriteXKBLayout(
 
 extern	Bool	XkbWriteXKBKeymap(
     FILE *		/* file */,
-    XkbFileInfo *	/* result */,
+    XkbDescPtr	/* result */,
     Bool		/* topLevel */,
     Bool		/* showImplicit */,
     XkbFileAddOnFunc	/* addOn */,
@@ -364,7 +352,7 @@ extern	Bool	XkbWriteXKBKeymap(
 
 extern	Bool	XkbWriteXKBFile(
     FILE *		/* file */,
-    XkbFileInfo *	/* result */,
+    XkbDescPtr	/* result */,
     Bool		/* showImplicit */,
     XkbFileAddOnFunc	/* addOn */,
     void *		/* priv */
@@ -373,16 +361,16 @@ extern	Bool	XkbWriteXKBFile(
 extern	Bool	XkbWriteCFile(
     FILE *		/* file */,
     char *		/* name */,
-    XkbFileInfo *	/* info */
+    XkbDescPtr	/* info */
 );
 
 extern	Bool	XkbWriteXKMFile(
     FILE *		/* file */,
-    XkbFileInfo *	/* result */
+    XkbDescPtr	/* result */
 );
 
 extern	Bool	XkbWriteToServer(
-    XkbFileInfo *	/* result */
+    XkbDescPtr	/* result */
 );
 
 extern	void	XkbEnsureSafeMapName(
@@ -398,8 +386,7 @@ extern	Bool	XkbWriteXKBKeymapForNames(
 );
 
 extern	Status	XkbMergeFile(
-    XkbDescPtr			/* xkb */,
-    XkbFileInfo			/* finfo */
+    XkbDescPtr			/* xkb */
 );
 
 /***====================================================================***/
@@ -412,7 +399,7 @@ extern unsigned	XkmReadFile(
     FILE *		/* file */,
     unsigned		/* need */,
     unsigned		/* want */,
-    XkbFileInfo *	/* result */
+    XkbDescPtr	        * /* result */
 );
 
 #ifdef _XKMFORMAT_H_
@@ -433,7 +420,7 @@ extern xkmSectionInfo *XkmFindTOCEntry(
 extern Bool	XkmReadFileSection(
     FILE *              /* file */,
     xkmSectionInfo *    /* toc */,
-    XkbFileInfo *       /* result */,
+    XkbDescPtr       /* result */,
     unsigned *          /* loaded_rtrn */
 );
 
diff --git a/include/xkbsrv.h b/include/xkbsrv.h
index 60b0eb7..ef99e94 100644
--- a/include/xkbsrv.h
+++ b/include/xkbsrv.h
@@ -1005,7 +1005,7 @@ extern	unsigned int XkbDDXLoadKeymapByNames(
 	XkbComponentNamesPtr	/* names */,
 	unsigned int		/* want */,
 	unsigned int		/* need */,
-	XkbFileInfoPtr		/* finfoRtrn */,
+	XkbDescPtr *		/* finfoRtrn */,
 	char *			/* keymapNameRtrn */,
 	int 			/* keymapNameRtrnLen */
 );
diff --git a/include/xkbstr.h b/include/xkbstr.h
index f390c61..214a554 100644
--- a/include/xkbstr.h
+++ b/include/xkbstr.h
@@ -418,6 +418,7 @@ typedef	struct _XkbGeometry	*XkbGeometryPtr;
 	 * Tie it all together into one big keyboard description
 	 */
 typedef	struct _XkbDesc {
+        unsigned int            defined;
 	unsigned short	 	flags;
 	unsigned short		device_spec;
 	KeyCode			min_key_code;
diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index 760119d..d80ce62 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -334,16 +334,16 @@ XkbDDXLoadKeymapByNames(	DeviceIntPtr		keybd,
 				XkbComponentNamesPtr	names,
 				unsigned		want,
 				unsigned		need,
-				XkbFileInfo *		finfoRtrn,
+				XkbDescPtr *		xkbRtrn,
 				char *			nameRtrn,
 				int 			nameRtrnLen)
 {
-XkbDescPtr	xkb;
+XkbDescPtr      xkb;
 FILE	*	file;
 char		fileName[PATH_MAX];
 unsigned	missing;
 
-    bzero(finfoRtrn,sizeof(XkbFileInfo));
+    *xkbRtrn = NULL;
     if ((keybd==NULL)||(keybd->key==NULL)||(keybd->key->xkbInfo==NULL))
 	 xkb= NULL;
     else xkb= keybd->key->xkbInfo->desc;
@@ -353,7 +353,7 @@ unsigned	missing;
         return 0;
     }
     else if (!XkbDDXCompileKeymapByNames(xkb,names,want,need,
-						nameRtrn,nameRtrnLen)){
+                                         nameRtrn,nameRtrnLen)){
 	DebugF("Couldn't compile keymap file\n");
 	return 0;
     }
@@ -362,15 +362,15 @@ unsigned	missing;
 	LogMessage(X_ERROR, "Couldn't open compiled keymap file %s\n",fileName);
 	return 0;
     }
-    missing= XkmReadFile(file,need,want,finfoRtrn);
-    if (finfoRtrn->xkb==NULL) {
+    missing= XkmReadFile(file,need,want,xkbRtrn);
+    if (*xkbRtrn==NULL) {
 	LogMessage(X_ERROR, "Error loading keymap %s\n",fileName);
 	fclose(file);
 	(void) unlink (fileName);
 	return 0;
     }
     else if (xkbDebugFlags) {
-	DebugF("Loaded XKB keymap %s, defined=0x%x\n",fileName,finfoRtrn->defined);
+	DebugF("Loaded XKB keymap %s, defined=0x%x\n",fileName,(*xkbRtrn)->defined);
     }
     fclose(file);
     (void) unlink (fileName);
diff --git a/xkb/xkb.c b/xkb/xkb.c
index ea5189f..b0d2f0d 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -5109,7 +5109,6 @@ ProcXkbGetKbdByName(ClientPtr client)
 {
     DeviceIntPtr 		dev;
     DeviceIntPtr                tmpd;
-    XkbFileInfo			finfo;
     xkbGetKbdByNameReply 	rep;
     xkbGetMapReply		mrep;
     xkbGetCompatMapReply	crep;
@@ -5117,7 +5116,7 @@ ProcXkbGetKbdByName(ClientPtr client)
     xkbGetNamesReply		nrep;
     xkbGetGeometryReply		grep;
     XkbComponentNamesRec	names;
-    XkbDescPtr			xkb;
+    XkbDescPtr			xkb, new;
     unsigned char *		str;
     char 			mapFile[PATH_MAX];
     unsigned			len;
@@ -5194,35 +5193,35 @@ ProcXkbGetKbdByName(ClientPtr client)
     }
 
     /* We pass dev in here so we can get the old names out if needed. */
-    rep.found = XkbDDXLoadKeymapByNames(dev,&names,fwant,fneed,&finfo,
+    rep.found = XkbDDXLoadKeymapByNames(dev,&names,fwant,fneed,&new,
                                         mapFile,PATH_MAX);
     rep.newKeyboard= False;
     rep.pad1= rep.pad2= rep.pad3= rep.pad4= 0;
 
     stuff->want|= stuff->need;
-    if (finfo.xkb==NULL)
+    if (new==NULL)
 	rep.reported= 0;
     else {
 	if (stuff->load)
 	    rep.loaded= True;
 	if (stuff->load || 
-		((rep.reported&XkbGBN_SymbolsMask) && (finfo.xkb->compat))) {
+		((rep.reported&XkbGBN_SymbolsMask) && (new->compat))) {
 	    XkbChangesRec changes;
 	    bzero(&changes,sizeof(changes));
-	    XkbUpdateDescActions(finfo.xkb,
-			finfo.xkb->min_key_code,XkbNumKeys(finfo.xkb),
+	    XkbUpdateDescActions(new,
+			new->min_key_code,XkbNumKeys(new),
 			&changes);
 	}
 
-	if (finfo.xkb->map==NULL)
+	if (new->map==NULL)
 	    rep.reported&= ~(XkbGBN_SymbolsMask|XkbGBN_TypesMask);
 	else if (rep.reported&(XkbGBN_SymbolsMask|XkbGBN_TypesMask)) {
 	    mrep.type= X_Reply;
 	    mrep.deviceID = dev->id;
 	    mrep.sequenceNumber= client->sequence;
 	    mrep.length = ((SIZEOF(xkbGetMapReply)-SIZEOF(xGenericReply))>>2);
-	    mrep.minKeyCode = finfo.xkb->min_key_code;
-	    mrep.maxKeyCode = finfo.xkb->max_key_code;
+	    mrep.minKeyCode = new->min_key_code;
+	    mrep.maxKeyCode = new->max_key_code;
 	    mrep.present = 0;
 	    mrep.totalSyms = mrep.totalActs =
 		mrep.totalKeyBehaviors= mrep.totalKeyExplicit= 
@@ -5230,7 +5229,7 @@ ProcXkbGetKbdByName(ClientPtr client)
 	    if (rep.reported&(XkbGBN_TypesMask|XkbGBN_ClientSymbolsMask)) {
 		mrep.present|= XkbKeyTypesMask;
 		mrep.firstType = 0;
-		mrep.nTypes = mrep.totalTypes= finfo.xkb->map->num_types;
+		mrep.nTypes = mrep.totalTypes= new->map->num_types;
 	    }
 	    else {
 		mrep.firstType = mrep.nTypes= 0;
@@ -5238,8 +5237,8 @@ ProcXkbGetKbdByName(ClientPtr client)
 	    }
 	    if (rep.reported&XkbGBN_ClientSymbolsMask) {
 		mrep.present|= (XkbKeySymsMask|XkbModifierMapMask);
-		mrep.firstKeySym = mrep.firstModMapKey= finfo.xkb->min_key_code;
-		mrep.nKeySyms = mrep.nModMapKeys= XkbNumKeys(finfo.xkb);
+		mrep.firstKeySym = mrep.firstModMapKey= new->min_key_code;
+		mrep.nKeySyms = mrep.nModMapKeys= XkbNumKeys(new);
 	    }
 	    else {
 		mrep.firstKeySym= mrep.firstModMapKey= 0;
@@ -5249,9 +5248,9 @@ ProcXkbGetKbdByName(ClientPtr client)
 		mrep.present|= XkbAllServerInfoMask;
 		mrep.virtualMods= ~0;
 		mrep.firstKeyAct = mrep.firstKeyBehavior = 
-			mrep.firstKeyExplicit = finfo.xkb->min_key_code;
+			mrep.firstKeyExplicit = new->min_key_code;
 		mrep.nKeyActs = mrep.nKeyBehaviors = 
-			mrep.nKeyExplicit = XkbNumKeys(finfo.xkb);
+			mrep.nKeyExplicit = XkbNumKeys(new);
 	    }
 	    else {
 		mrep.virtualMods= 0;
@@ -5259,10 +5258,10 @@ ProcXkbGetKbdByName(ClientPtr client)
 			mrep.firstKeyExplicit = 0;
 		mrep.nKeyActs= mrep.nKeyBehaviors= mrep.nKeyExplicit= 0;
 	    }
-	    XkbComputeGetMapReplySize(finfo.xkb,&mrep);
+	    XkbComputeGetMapReplySize(new,&mrep);
 	    rep.length+= SIZEOF(xGenericReply)/4+mrep.length;
 	}
-	if (finfo.xkb->compat==NULL)
+	if (new->compat==NULL)
 	    rep.reported&= ~XkbGBN_CompatMapMask;
 	else if (rep.reported&XkbGBN_CompatMapMask) {
 	    crep.type= X_Reply;
@@ -5271,11 +5270,11 @@ ProcXkbGetKbdByName(ClientPtr client)
 	    crep.length= 0;
 	    crep.groups= XkbAllGroupsMask;
 	    crep.firstSI= 0;
-	    crep.nSI= crep.nTotalSI= finfo.xkb->compat->num_si;
-	    XkbComputeGetCompatMapReplySize(finfo.xkb->compat,&crep);
+	    crep.nSI= crep.nTotalSI= new->compat->num_si;
+	    XkbComputeGetCompatMapReplySize(new->compat,&crep);
 	    rep.length+= SIZEOF(xGenericReply)/4+crep.length;
 	}
-	if (finfo.xkb->indicators==NULL)
+	if (new->indicators==NULL)
 	    rep.reported&= ~XkbGBN_IndicatorMapMask;
 	else if (rep.reported&XkbGBN_IndicatorMapMask) {
 	    irep.type= X_Reply;
@@ -5283,28 +5282,28 @@ ProcXkbGetKbdByName(ClientPtr client)
 	    irep.sequenceNumber= client->sequence;
 	    irep.length= 0;
 	    irep.which= XkbAllIndicatorsMask;
-	    XkbComputeGetIndicatorMapReplySize(finfo.xkb->indicators,&irep);
+	    XkbComputeGetIndicatorMapReplySize(new->indicators,&irep);
 	    rep.length+= SIZEOF(xGenericReply)/4+irep.length;
 	}
-	if (finfo.xkb->names==NULL)
+	if (new->names==NULL)
 	    rep.reported&= ~(XkbGBN_OtherNamesMask|XkbGBN_KeyNamesMask);
 	else if (rep.reported&(XkbGBN_OtherNamesMask|XkbGBN_KeyNamesMask)) {
 	    nrep.type= X_Reply;
 	    nrep.deviceID= dev->id;
 	    nrep.sequenceNumber= client->sequence;
 	    nrep.length= 0;
-	    nrep.minKeyCode= finfo.xkb->min_key_code;
-	    nrep.maxKeyCode= finfo.xkb->max_key_code;
+	    nrep.minKeyCode= new->min_key_code;
+	    nrep.maxKeyCode= new->max_key_code;
 	    if (rep.reported&XkbGBN_OtherNamesMask) {
 		nrep.which= XkbAllNamesMask;
-		if (finfo.xkb->map!=NULL)
-		     nrep.nTypes= finfo.xkb->map->num_types;
+		if (new->map!=NULL)
+		     nrep.nTypes= new->map->num_types;
 		else nrep.nTypes= 0;
 		nrep.nKTLevels= 0;
 		nrep.groupNames= XkbAllGroupsMask;
 		nrep.virtualMods= XkbAllVirtualModsMask;
 		nrep.indicators= XkbAllIndicatorsMask;
-		nrep.nRadioGroups= finfo.xkb->names->num_rg;
+		nrep.nRadioGroups= new->names->num_rg;
 	    }
 	    else {
 		nrep.which= 0;
@@ -5317,9 +5316,9 @@ ProcXkbGetKbdByName(ClientPtr client)
 	    }
 	    if (rep.reported&XkbGBN_KeyNamesMask) {
 		nrep.which|= XkbKeyNamesMask;
-		nrep.firstKey= finfo.xkb->min_key_code;
-		nrep.nKeys= XkbNumKeys(finfo.xkb);
-		nrep.nKeyAliases= finfo.xkb->names->num_key_aliases;
+		nrep.firstKey= new->min_key_code;
+		nrep.nKeys= XkbNumKeys(new);
+		nrep.nKeyAliases= new->names->num_key_aliases;
 		if (nrep.nKeyAliases)
 		    nrep.which|= XkbKeyAliasesMask;
 	    }
@@ -5328,10 +5327,10 @@ ProcXkbGetKbdByName(ClientPtr client)
 		nrep.firstKey= nrep.nKeys= 0;
 		nrep.nKeyAliases= 0;
 	    }
-	    XkbComputeGetNamesReplySize(finfo.xkb,&nrep);
+	    XkbComputeGetNamesReplySize(new,&nrep);
 	    rep.length+= SIZEOF(xGenericReply)/4+nrep.length;
 	}
-	if (finfo.xkb->geom==NULL)
+	if (new->geom==NULL)
 	    rep.reported&= ~XkbGBN_GeometryMask;
 	else if (rep.reported&XkbGBN_GeometryMask) {
 	    grep.type= X_Reply;
@@ -5344,7 +5343,7 @@ ProcXkbGetKbdByName(ClientPtr client)
 	    grep.nProperties= grep.nColors= grep.nShapes= 0;
 	    grep.nSections= grep.nDoodads= 0;
 	    grep.baseColorNdx= grep.labelColorNdx= 0;
-	    XkbComputeGetGeometryReplySize(finfo.xkb->geom,&grep,None);
+	    XkbComputeGetGeometryReplySize(new->geom,&grep,None);
 	    rep.length+= SIZEOF(xGenericReply)/4+grep.length;
 	}
     }
@@ -5359,23 +5358,23 @@ ProcXkbGetKbdByName(ClientPtr client)
     }
     WriteToClient(client,SIZEOF(xkbGetKbdByNameReply), (char *)&rep);
     if (reported&(XkbGBN_SymbolsMask|XkbGBN_TypesMask))
-	XkbSendMap(client,finfo.xkb,&mrep);
+	XkbSendMap(client,new,&mrep);
     if (reported&XkbGBN_CompatMapMask)
-	XkbSendCompatMap(client,finfo.xkb->compat,&crep);
+	XkbSendCompatMap(client,new->compat,&crep);
     if (reported&XkbGBN_IndicatorMapMask)
-	XkbSendIndicatorMap(client,finfo.xkb->indicators,&irep);
+	XkbSendIndicatorMap(client,new->indicators,&irep);
     if (reported&(XkbGBN_KeyNamesMask|XkbGBN_OtherNamesMask))
-	XkbSendNames(client,finfo.xkb,&nrep);
+	XkbSendNames(client,new,&nrep);
     if (reported&XkbGBN_GeometryMask)
-	XkbSendGeometry(client,finfo.xkb->geom,&grep,False);
+	XkbSendGeometry(client,new->geom,&grep,False);
     if (rep.loaded) {
 	XkbDescPtr		old_xkb;
 	xkbNewKeyboardNotify 	nkn;
 	int 			i,nG,nTG;
 	old_xkb= xkb;
-	xkb= finfo.xkb;
+	xkb= new;
 	dev->key->xkbInfo->desc= xkb;
-	finfo.xkb= old_xkb; /* so it'll get freed automatically */
+	new= old_xkb; /* so it'll get freed automatically */
 
 	*xkb->ctrls= *old_xkb->ctrls;
 	for (nG=nTG=0,i=xkb->min_key_code;i<=xkb->max_key_code;i++) {
@@ -5419,8 +5418,8 @@ ProcXkbGetKbdByName(ClientPtr client)
         /* this should be either a MN or an NKN, depending on whether or not
          * the keycode range changed? */
 	nkn.deviceID= nkn.oldDeviceID= dev->id;
-	nkn.minKeyCode= finfo.xkb->min_key_code;
-	nkn.maxKeyCode= finfo.xkb->max_key_code;
+	nkn.minKeyCode= new->min_key_code;
+	nkn.maxKeyCode= new->max_key_code;
 	nkn.oldMinKeyCode= xkb->min_key_code;
 	nkn.oldMaxKeyCode= xkb->max_key_code;
 	nkn.requestMajor= XkbReqCode;
@@ -5430,9 +5429,9 @@ ProcXkbGetKbdByName(ClientPtr client)
 	    nkn.changed|= XkbNKN_GeometryMask;
 	XkbSendNewKeyboardNotify(dev,&nkn);
     }
-    if ((finfo.xkb!=NULL)&&(finfo.xkb!=xkb)) {
-	XkbFreeKeyboard(finfo.xkb,XkbAllComponentsMask,True);
-	finfo.xkb= NULL;
+    if ((new!=NULL)&&(new!=xkb)) {
+	XkbFreeKeyboard(new,XkbAllComponentsMask,True);
+	new= NULL;
     }
     if (names.keymap)	{ _XkbFree(names.keymap); names.keymap= NULL; }
     if (names.keycodes)	{ _XkbFree(names.keycodes); names.keycodes= NULL; }
diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c
index 2aacc8c..890cf42 100644
--- a/xkb/xkbActions.c
+++ b/xkb/xkbActions.c
@@ -843,7 +843,7 @@ _XkbFilterRedirectKey(	XkbSrvInfoPtr	xkbi,
 			unsigned	keycode,
 			XkbAction *	pAction)
 {
-unsigned	realMods;
+unsigned	realMods = 0;
 xEvent 		ev;
 int		x,y;
 XkbStateRec	old;
@@ -1145,7 +1145,7 @@ void
 XkbHandleActions(DeviceIntPtr dev,DeviceIntPtr kbd,xEvent *xE,int count)
 {
 int		key,bit,i;
-CARD8		realMods;
+CARD8		realMods = 0;
 XkbSrvInfoPtr	xkbi;
 KeyClassPtr	keyc;
 int		changed,sendEvent;
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
index 73dd32e..37dd940 100644
--- a/xkb/xkbInit.c
+++ b/xkb/xkbInit.c
@@ -88,7 +88,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 typedef struct	_SrvXkmInfo {
 	DeviceIntPtr	dev;
 	FILE *		file;
-	XkbFileInfo	xkbinfo;
+	XkbDescPtr	xkb;
 } SrvXkmInfo;
 
 
@@ -125,7 +125,6 @@ typedef struct	_SrvXkmInfo {
 char	*		XkbBaseDirectory=	XKB_BASE_DIRECTORY;
 char	*		XkbBinDirectory=	XKB_BIN_DIRECTORY;
 static int	 	XkbWantAccessX=		0;	
-static XkbFileInfo *	_XkbInitFileInfo=	NULL;
 
 static Bool		rulesDefined=		False;
 static char *		XkbRulesFile=		NULL;
@@ -283,10 +282,8 @@ XkbSetRulesDflts(char *rulesFile,char *model,char *layout,
 #include "xkbDflts.h"
 
 static Bool
-XkbInitKeyTypes(XkbDescPtr xkb,SrvXkmInfo *file)
+XkbInitKeyTypes(XkbDescPtr xkb)
 {
-    if (file->xkbinfo.defined&XkmTypesMask)
-	return True;
     initTypeNames(NULL);
     if (XkbAllocClientMap(xkb,XkbKeyTypesMask,num_dflt_types)!=Success)
 	return False;
@@ -299,7 +296,7 @@ XkbInitKeyTypes(XkbDescPtr xkb,SrvXkmInfo *file)
 }
 
 static void
-XkbInitRadioGroups(XkbSrvInfoPtr xkbi,SrvXkmInfo *file)
+XkbInitRadioGroups(XkbSrvInfoPtr xkbi)
 {
     xkbi->nRadioGroups = 0;
     xkbi->radioGroups = NULL;
@@ -308,13 +305,11 @@ XkbInitRadioGroups(XkbSrvInfoPtr xkbi,SrvXkmInfo *file)
 
 
 static Status
-XkbInitCompatStructs(XkbDescPtr xkb,SrvXkmInfo *file)
+XkbInitCompatStructs(XkbDescPtr xkb)
 {
 register int 	i;
 XkbCompatMapPtr	compat;
 
-    if (file->xkbinfo.defined&XkmCompatMapMask)
-	return Success;
     if (XkbAllocCompatMap(xkb,XkbAllCompatMask,num_dfltSI)!=Success)
 	return BadAlloc;
     compat = xkb->compat;
@@ -335,17 +330,17 @@ XkbCompatMapPtr	compat;
 }
 
 static void
-XkbInitSemantics(XkbDescPtr xkb,SrvXkmInfo *file)
+XkbInitSemantics(XkbDescPtr xkb)
 {
-    XkbInitKeyTypes(xkb,file);
-    XkbInitCompatStructs(xkb,file);
+    XkbInitKeyTypes(xkb);
+    XkbInitCompatStructs(xkb);
     return;
 }
 
 /***====================================================================***/
 
 static Status
-XkbInitNames(XkbSrvInfoPtr xkbi,SrvXkmInfo *file)
+XkbInitNames(XkbSrvInfoPtr xkbi)
 {
 XkbDescPtr	xkb;
 XkbNamesPtr	names;
@@ -363,29 +358,25 @@ Atom		unknown;
     if (names->symbols==None)		names->symbols= unknown;
     if (names->types==None)		names->types= unknown;
     if (names->compat==None)		names->compat= unknown;
-    if ((file->xkbinfo.defined&XkmVirtualModsMask)==0) {
-	if (names->vmods[vmod_NumLock]==None)
-	    names->vmods[vmod_NumLock]= CREATE_ATOM("NumLock");
-	if (names->vmods[vmod_Alt]==None)
-	    names->vmods[vmod_Alt]= CREATE_ATOM("Alt");
-	if (names->vmods[vmod_AltGr]==None)
-	    names->vmods[vmod_AltGr]= CREATE_ATOM("ModeSwitch");
-    }
-
-    if (((file->xkbinfo.defined&XkmIndicatorsMask)==0)||
-	((file->xkbinfo.defined&XkmGeometryMask)==0)) {
-	initIndicatorNames(NULL,xkb);
-	if (names->indicators[LED_CAPS-1]==None)
-	    names->indicators[LED_CAPS-1] = CREATE_ATOM("Caps Lock");
-	if (names->indicators[LED_NUM-1]==None)
-	    names->indicators[LED_NUM-1] = CREATE_ATOM("Num Lock");
-	if (names->indicators[LED_SCROLL-1]==None)
-	    names->indicators[LED_SCROLL-1] = CREATE_ATOM("Scroll Lock");
+    if (names->vmods[vmod_NumLock]==None)
+        names->vmods[vmod_NumLock]= CREATE_ATOM("NumLock");
+    if (names->vmods[vmod_Alt]==None)
+        names->vmods[vmod_Alt]= CREATE_ATOM("Alt");
+    if (names->vmods[vmod_AltGr]==None)
+        names->vmods[vmod_AltGr]= CREATE_ATOM("ModeSwitch");
+
+    initIndicatorNames(NULL,xkb);
+    if (names->indicators[LED_CAPS-1]==None)
+        names->indicators[LED_CAPS-1] = CREATE_ATOM("Caps Lock");
+    if (names->indicators[LED_NUM-1]==None)
+        names->indicators[LED_NUM-1] = CREATE_ATOM("Num Lock");
+    if (names->indicators[LED_SCROLL-1]==None)
+        names->indicators[LED_SCROLL-1] = CREATE_ATOM("Scroll Lock");
 #ifdef LED_COMPOSE
-	if (names->indicators[LED_COMPOSE-1]==None)
-	    names->indicators[LED_COMPOSE-1] = CREATE_ATOM("Compose");
+    if (names->indicators[LED_COMPOSE-1]==None)
+        names->indicators[LED_COMPOSE-1] = CREATE_ATOM("Compose");
 #endif
-    }
+
     if (xkb->geom!=NULL)
 	 names->geometry= xkb->geom->name;
     else names->geometry= unknown;
@@ -393,7 +384,7 @@ Atom		unknown;
 }
 
 static Status
-XkbInitIndicatorMap(XkbSrvInfoPtr xkbi,SrvXkmInfo *file)
+XkbInitIndicatorMap(XkbSrvInfoPtr xkbi)
 {
 XkbDescPtr		xkb;
 XkbIndicatorPtr		map;
@@ -402,27 +393,24 @@ XkbSrvLedInfoPtr	sli;
     xkb= xkbi->desc;
     if (XkbAllocIndicatorMaps(xkb)!=Success)
 	return BadAlloc;
-    if ((file->xkbinfo.defined&XkmIndicatorsMask)==0) {
-	map= xkb->indicators;
-	map->phys_indicators = PHYS_LEDS;
-	map->maps[LED_CAPS-1].flags= XkbIM_NoExplicit;
-	map->maps[LED_CAPS-1].which_mods= XkbIM_UseLocked;
-	map->maps[LED_CAPS-1].mods.mask= LockMask;
-	map->maps[LED_CAPS-1].mods.real_mods= LockMask;
-
-	map->maps[LED_NUM-1].flags= XkbIM_NoExplicit;
-	map->maps[LED_NUM-1].which_mods= XkbIM_UseLocked;
-	map->maps[LED_NUM-1].mods.mask= 0;
-	map->maps[LED_NUM-1].mods.real_mods= 0;
-	map->maps[LED_NUM-1].mods.vmods= vmod_NumLockMask;
-
-/* Metro Link */
-	map->maps[LED_SCROLL-1].flags= XkbIM_NoExplicit;
-	map->maps[LED_SCROLL-1].which_mods= XkbIM_UseLocked;
-	map->maps[LED_SCROLL-1].mods.mask= Mod3Mask;
-	map->maps[LED_SCROLL-1].mods.real_mods= Mod3Mask;
-/* Metro Link */
-    }
+    map= xkb->indicators;
+    map->phys_indicators = PHYS_LEDS;
+    map->maps[LED_CAPS-1].flags= XkbIM_NoExplicit;
+    map->maps[LED_CAPS-1].which_mods= XkbIM_UseLocked;
+    map->maps[LED_CAPS-1].mods.mask= LockMask;
+    map->maps[LED_CAPS-1].mods.real_mods= LockMask;
+
+    map->maps[LED_NUM-1].flags= XkbIM_NoExplicit;
+    map->maps[LED_NUM-1].which_mods= XkbIM_UseLocked;
+    map->maps[LED_NUM-1].mods.mask= 0;
+    map->maps[LED_NUM-1].mods.real_mods= 0;
+    map->maps[LED_NUM-1].mods.vmods= vmod_NumLockMask;
+
+    map->maps[LED_SCROLL-1].flags= XkbIM_NoExplicit;
+    map->maps[LED_SCROLL-1].which_mods= XkbIM_UseLocked;
+    map->maps[LED_SCROLL-1].mods.mask= Mod3Mask;
+    map->maps[LED_SCROLL-1].mods.real_mods= Mod3Mask;
+
     sli= XkbFindSrvLedInfo(xkbi->device,XkbDfltXIClass,XkbDfltXIId,0);
     if (sli)
 	XkbCheckIndicatorMaps(xkbi->device,sli,XkbAllIndicatorsMask);
@@ -430,7 +418,7 @@ XkbSrvLedInfoPtr	sli;
 }
 
 static Status
-XkbInitControls(DeviceIntPtr pXDev,XkbSrvInfoPtr xkbi,SrvXkmInfo *file)
+XkbInitControls(DeviceIntPtr pXDev,XkbSrvInfoPtr xkbi)
 {
 XkbDescPtr	xkb;
 XkbControlsPtr	ctrls;
@@ -440,8 +428,7 @@ XkbControlsPtr	ctrls;
     if (XkbAllocControls(xkb,XkbAllControlsMask)!=Success)
 	FatalError("Couldn't allocate keyboard controls\n");
     ctrls= xkb->ctrls;
-    if ((file->xkbinfo.defined&XkmSymbolsMask)==0)
-	ctrls->num_groups = 1;
+    ctrls->num_groups = 1;
     ctrls->groups_wrap = XkbSetGroupInfo(1,XkbWrapIntoRange,0);
     ctrls->internal.mask = 0;
     ctrls->internal.real_mods = 0;
@@ -464,29 +451,18 @@ XkbInitDevice(DeviceIntPtr pXDev)
 int			i;
 XkbSrvInfoPtr		xkbi;
 XkbChangesRec		changes;
-SrvXkmInfo		file;
 unsigned		check;
 XkbEventCauseRec	cause;
 
-    file.dev= pXDev;
-    file.file=NULL;
-    bzero(&file.xkbinfo,sizeof(XkbFileInfo));
     bzero(&changes,sizeof(XkbChangesRec));
     pXDev->key->xkbInfo= xkbi= _XkbTypedCalloc(1,XkbSrvInfoRec);
     if ( xkbi ) {
 	XkbDescPtr	xkb;
-	if ((_XkbInitFileInfo!=NULL)&&(_XkbInitFileInfo->xkb!=NULL)) {
-	    file.xkbinfo= *_XkbInitFileInfo;
-	    xkbi->desc= _XkbInitFileInfo->xkb;
-	    _XkbInitFileInfo= NULL;
-	}
-	else {
-	    xkbi->desc= XkbAllocKeyboard();
-	    if (!xkbi->desc)
-		FatalError("Couldn't allocate keyboard description\n");
-	    xkbi->desc->min_key_code = pXDev->key->curKeySyms.minKeyCode;
-	    xkbi->desc->max_key_code = pXDev->key->curKeySyms.maxKeyCode;
-	}
+        xkbi->desc= XkbAllocKeyboard();
+	if (!xkbi->desc)
+	    FatalError("Couldn't allocate keyboard description\n");
+	xkbi->desc->min_key_code = pXDev->key->curKeySyms.minKeyCode;
+	xkbi->desc->max_key_code = pXDev->key->curKeySyms.maxKeyCode;
 	xkb= xkbi->desc;
 	if (xkb->min_key_code == 0)
 	    xkb->min_key_code = pXDev->key->curKeySyms.minKeyCode;
@@ -509,32 +485,23 @@ XkbEventCauseRec	cause;
 	xkbi->dfltPtrDelta=1;
 	xkbi->device = pXDev;
 
-	file.xkbinfo.xkb= xkb;
-	XkbInitSemantics(xkb,&file);
-	XkbInitNames(xkbi,&file);
-	XkbInitRadioGroups(xkbi,&file);
+	XkbInitSemantics(xkb);
+	XkbInitNames(xkbi);
+	XkbInitRadioGroups(xkbi);
 
 	/* 12/31/94 (ef) -- XXX! Should check if state loaded from file */
 	bzero(&xkbi->state,sizeof(XkbStateRec));
 
-	XkbInitControls(pXDev,xkbi,&file);
+	XkbInitControls(pXDev,xkbi);
 
-	if (file.xkbinfo.defined&XkmSymbolsMask)
-	   memcpy(pXDev->key->modifierMap,xkb->map->modmap,xkb->max_key_code+1);
-	else
-	   memcpy(xkb->map->modmap,pXDev->key->modifierMap,xkb->max_key_code+1);
+        memcpy(xkb->map->modmap,pXDev->key->modifierMap,xkb->max_key_code+1);
 
-	XkbInitIndicatorMap(xkbi,&file);
+	XkbInitIndicatorMap(xkbi);
 
 	XkbDDXInitDevice(pXDev);
 
-	if (!(file.xkbinfo.defined&XkmSymbolsMask)) {
-	    XkbUpdateKeyTypesFromCore(pXDev,xkb->min_key_code,XkbNumKeys(xkb),
-								&changes);
-	}
-	else {
-	    XkbUpdateCoreDescription(pXDev,True);
-	}
+        XkbUpdateKeyTypesFromCore(pXDev,xkb->min_key_code,XkbNumKeys(xkb),
+                                  &changes);
 	XkbSetCauseUnknown(&cause);
 	XkbUpdateActions(pXDev,xkb->min_key_code, XkbNumKeys(xkb),&changes,
 								&check,&cause);
@@ -546,8 +513,6 @@ XkbEventCauseRec	cause;
 	pXDev->key->curKeySyms.minKeyCode = xkb->min_key_code;
 	pXDev->key->curKeySyms.maxKeyCode = xkb->max_key_code;
     }
-    if (file.file!=NULL)
-	fclose(file.file);
     return;
 }
 
@@ -571,12 +536,12 @@ XkbInitKeyboardDeviceStruct(
         DeviceIntPtr /*device*/,
         KeybdCtrl * /*ctrl*/))
 {
-XkbFileInfo		finfo;
 KeySymsRec		tmpSyms,*pSyms;
 CARD8			tmpMods[XkbMaxLegalKeyCode+1],*pMods;
 char			name[PATH_MAX],*rules;
 Bool			ok=False;
 XkbRF_VarDefsRec	defs;
+XkbDescPtr              xkb;
 
     if ((dev->key!=NULL)||(dev->kbdfeed!=NULL))
 	return False;
@@ -633,13 +598,11 @@ XkbRF_VarDefsRec	defs;
     }
 
     ok = (Bool) XkbDDXLoadKeymapByNames(dev,names,XkmAllIndicesMask,0,
-                                        &finfo,name,PATH_MAX);
+                                        &xkb,name,PATH_MAX);
 
-    if (ok && (finfo.xkb!=NULL)) {
-	XkbDescPtr	xkb;
+    if (ok && (xkb!=NULL)) {
 	KeyCode		minKC,maxKC;
 
-	xkb= finfo.xkb;
 	minKC= xkb->min_key_code;
 	maxKC= xkb->max_key_code;
 	if (XkbIsLegalKeycode(minKC)&&XkbIsLegalKeycode(maxKC)&&(minKC<=maxKC)&&
@@ -669,13 +632,11 @@ XkbRF_VarDefsRec	defs;
 		pMods= tmpMods;
 	    }
 	}
-	_XkbInitFileInfo= &finfo;
     }
     else {
 	LogMessage(X_WARNING, "Couldn't load XKB keymap, falling back to pre-XKB keymap\n");
     }
     ok= InitKeyboardDeviceStruct((DevicePtr)dev,pSyms,pMods,bellProc,ctrlProc);
-    _XkbInitFileInfo= NULL;
     if ((pSyms==&tmpSyms)&&(pSyms->map!=NULL)) {
 	_XkbFree(pSyms->map);
 	pSyms->map= NULL;
diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c
index 4182c3a..866b4b1 100644
--- a/xkb/xkbfmisc.c
+++ b/xkb/xkbfmisc.c
@@ -146,7 +146,7 @@ XkbWriteSectionFromName(FILE *file,char *sectionName,char *name)
 /* ARGSUSED */
 static void
 _AddIncl(	FILE *		file,
-		XkbFileInfo *	result,
+		XkbDescPtr 	xkb,
 		Bool 		topLevel,
 		Bool 		showImplicit,
 		int 		index,
@@ -169,9 +169,6 @@ unsigned	complete;
 XkbNamesPtr	old_names;
 int		multi_section;
 unsigned	wantNames,wantConfig,wantDflts;
-XkbFileInfo	finfo;
-
-    bzero(&finfo,sizeof(XkbFileInfo));
 
     complete= 0;
     if ((name=names->keymap)==NULL)	name= "default";
@@ -187,14 +184,8 @@ XkbFileInfo	finfo;
     if (want==0)
 	return False;
 
-    if (xkb!=NULL) {
+    if (xkb!=NULL)
 	 old_names= xkb->names;
-	 finfo.type= 0;
-	 finfo.defined= 0;
-	 finfo.xkb= xkb;
-	 if (!XkbDetermineFileType(&finfo,XkbXKBFile,NULL))
-	    return False;
-    }
     else old_names= NULL;
 
     wantConfig= want&(~complete);
@@ -304,7 +295,7 @@ XkbFileInfo	finfo;
     wantNames= complete&(~(wantConfig|wantDflts));
     name= names->keycodes;
     if (wantConfig&XkmKeyNamesMask)
-	XkbWriteXKBKeycodes(file,&finfo,False,False,_AddIncl,name);
+	XkbWriteXKBKeycodes(file,xkb,False,False,_AddIncl,name);
     else if (wantDflts&XkmKeyNamesMask)
 	fprintf(stderr,"Default symbols not implemented yet!\n");
     else if (wantNames&XkmKeyNamesMask)
@@ -312,7 +303,7 @@ XkbFileInfo	finfo;
 
     name= names->types;
     if (wantConfig&XkmTypesMask)
-	XkbWriteXKBKeyTypes(file,&finfo,False,False,_AddIncl,name);
+	XkbWriteXKBKeyTypes(file,xkb,False,False,_AddIncl,name);
     else if (wantDflts&XkmTypesMask)
 	fprintf(stderr,"Default types not implemented yet!\n");
     else if (wantNames&XkmTypesMask)
@@ -320,7 +311,7 @@ XkbFileInfo	finfo;
 
     name= names->compat;
     if (wantConfig&XkmCompatMapMask)
-	XkbWriteXKBCompatMap(file,&finfo,False,False,_AddIncl,name);
+	XkbWriteXKBCompatMap(file,xkb,False,False,_AddIncl,name);
     else if (wantDflts&XkmCompatMapMask)
 	fprintf(stderr,"Default interps not implemented yet!\n");
     else if (wantNames&XkmCompatMapMask)
@@ -328,13 +319,13 @@ XkbFileInfo	finfo;
 
     name= names->symbols;
     if (wantConfig&XkmSymbolsMask)
-	XkbWriteXKBSymbols(file,&finfo,False,False,_AddIncl,name);
+	XkbWriteXKBSymbols(file,xkb,False,False,_AddIncl,name);
     else if (wantNames&XkmSymbolsMask)
 	XkbWriteSectionFromName(file,"symbols",name);
 
     name= names->geometry;
     if (wantConfig&XkmGeometryMask)
-	XkbWriteXKBGeometry(file,&finfo,False,False,_AddIncl,name);
+	XkbWriteXKBGeometry(file,xkb,False,False,_AddIncl,name);
     else if (wantNames&XkmGeometryMask)
 	XkbWriteSectionFromName(file,"geometry",name);
 
@@ -404,81 +395,6 @@ unsigned	rtrn;
     return rtrn;
 }
 
-Bool
-XkbDetermineFileType(XkbFileInfoPtr finfo,int format,int *opts_missing)
-{
-unsigned	present;
-XkbDescPtr	xkb;
-
-    if ((!finfo)||(!finfo->xkb))
-	return False;
-    if (opts_missing)
-	*opts_missing= 0;
-    xkb= finfo->xkb;
-    present= 0;
-    if ((xkb->names)&&(xkb->names->keys))	present|= XkmKeyNamesMask;
-    if ((xkb->map)&&(xkb->map->types))		present|= XkmTypesMask;
-    if (xkb->compat)				present|= XkmCompatMapMask;
-    if ((xkb->map)&&(xkb->map->num_syms>1))	present|= XkmSymbolsMask;
-    if (xkb->indicators)			present|= XkmIndicatorsMask;
-    if (xkb->geom)				present|= XkmGeometryMask;
-    if (!present)
-	return False;
-    else switch (present) {
-	case XkmKeyNamesMask:	
-	    finfo->type= 	XkmKeyNamesIndex;
-	    finfo->defined= 	present;
-	    return True;
-	case XkmTypesMask:
-	    finfo->type=	XkmTypesIndex;
-	    finfo->defined= 	present;
-	    return True;
-	case XkmCompatMapMask:	
-	    finfo->type=	XkmCompatMapIndex;
-	    finfo->defined=	present;
-	    return True;
-	case XkmSymbolsMask:	
-	    if (format!=XkbXKMFile) {
-		finfo->type= 	XkmSymbolsIndex;
-		finfo->defined=	present;
-		return True;
-	    }
-	    break;
-	case XkmGeometryMask:	
-	    finfo->type=	XkmGeometryIndex;
-	    finfo->defined=	present;
-	    return True;
-    }
-    if ((present&(~XkmSemanticsLegal))==0) {
-	if ((XkmSemanticsRequired&present)==XkmSemanticsRequired) {
-	    if (opts_missing)
-		*opts_missing= XkmSemanticsOptional&(~present);
-	    finfo->type= 	XkmSemanticsFile;
-	    finfo->defined=	present;
-	    return True;
-	}
-    }
-    else if ((present&(~XkmLayoutLegal))==0) {
-	if ((XkmLayoutRequired&present)==XkmLayoutRequired) {
-	    if (opts_missing)
-		*opts_missing= XkmLayoutOptional&(~present);
-	    finfo->type=	XkmLayoutFile;
-	    finfo->defined=	present;
-	    return True;
-	}
-    }
-    else if ((present&(~XkmKeymapLegal))==0) {
-	if ((XkmKeymapRequired&present)==XkmKeymapRequired) {
-	    if (opts_missing)
-		*opts_missing= XkmKeymapOptional&(~present);
-	    finfo->type=	XkmKeymapFile;
-	    finfo->defined=	present;
-	    return True;
-	}
-    }
-    return False;
-}
-
 /* all latin-1 alphanumerics, plus parens, slash, minus, underscore and */
 /* wildcards */
 
diff --git a/xkb/xkbout.c b/xkb/xkbout.c
index b72c05c..229cc92 100644
--- a/xkb/xkbout.c
+++ b/xkb/xkbout.c
@@ -90,9 +90,9 @@ Atom *		vmodNames;
 /***====================================================================***/
 
 static Bool
-WriteXKBAction(FILE *file,XkbFileInfo *result,XkbAnyAction *action)
+WriteXKBAction(FILE *file,XkbDescPtr xkb,XkbAnyAction *action)
 {
-    fprintf(file,"%s",XkbActionText(result->xkb,(XkbAction *)action,XkbXKBFile));
+    fprintf(file,"%s",XkbActionText(xkb,(XkbAction *)action,XkbXKBFile));
     return True;
 }
 
@@ -100,7 +100,7 @@ WriteXKBAction(FILE *file,XkbFileInfo *result,XkbAnyAction *action)
 
 Bool
 XkbWriteXKBKeycodes(	FILE *			file,
-			XkbFileInfo *		result,
+			XkbDescPtr		xkb,
 			Bool			topLevel,
 			Bool			showImplicit,
 			XkbFileAddOnFunc	addOn,
@@ -108,10 +108,8 @@ XkbWriteXKBKeycodes(	FILE *			file,
 {
 Atom			kcName;
 register unsigned 	i;
-XkbDescPtr		xkb;
 char *			alternate;
 
-    xkb= result->xkb;
     if ((!xkb)||(!xkb->names)||(!xkb->names->keys)) {
 	_XkbLibError(_XkbErrMissingNames,"XkbWriteXKBKeycodes",0);
 	return False;
@@ -155,14 +153,14 @@ char *			alternate;
 	}
     }
     if (addOn)
-	(*addOn)(file,result,topLevel,showImplicit,XkmKeyNamesIndex,priv);
+	(*addOn)(file,xkb,topLevel,showImplicit,XkmKeyNamesIndex,priv);
     fprintf(file,"};\n\n");
     return True;
 }
 
 Bool
 XkbWriteXKBKeyTypes(	FILE *			file,
-			XkbFileInfo *		result,
+			XkbDescPtr              xkb,
 			Bool			topLevel,
 			Bool			showImplicit,
 			XkbFileAddOnFunc	addOn,
@@ -171,9 +169,7 @@ XkbWriteXKBKeyTypes(	FILE *			file,
 register unsigned	i,n;
 XkbKeyTypePtr		type;
 XkbKTMapEntryPtr	entry;
-XkbDescPtr		xkb;
 
-    xkb= result->xkb;
     if ((!xkb)||(!xkb->map)||(!xkb->map->types)) {
 	_XkbLibError(_XkbErrMissingTypes,"XkbWriteXKBKeyTypes",0);
 	return False;
@@ -223,22 +219,20 @@ XkbDescPtr		xkb;
 	fprintf(file,"    };\n");
     }
     if (addOn)
-	(*addOn)(file,result,topLevel,showImplicit,XkmTypesIndex,priv);
+	(*addOn)(file,xkb,topLevel,showImplicit,XkmTypesIndex,priv);
     fprintf(file,"};\n\n");
     return True;
 }
 
 static Bool
 WriteXKBIndicatorMap(	FILE *			file,
-			XkbFileInfo *		result,
+			XkbDescPtr              xkb,
 			Atom			name,
 			XkbIndicatorMapPtr	led,
 			XkbFileAddOnFunc	addOn,
 			void *			priv)
 {
-XkbDescPtr	xkb;
 
-    xkb= result->xkb;
     fprintf(file,"    indicator \"%s\" {\n",XkbAtomGetString(name));
     if (led->flags&XkbIM_NoExplicit)
 	fprintf(file,"        !allowExplicit;\n");
@@ -266,14 +260,14 @@ XkbDescPtr	xkb;
 			XkbControlsMaskText(led->ctrls,XkbXKBFile));
     }
     if (addOn)
-	(*addOn)(file,result,False,True,XkmIndicatorsIndex,priv);
+	(*addOn)(file,xkb,False,True,XkmIndicatorsIndex,priv);
     fprintf(file,"    };\n");
     return True;
 }
 
 Bool
 XkbWriteXKBCompatMap(	FILE *			file,
-			XkbFileInfo *		result,
+			XkbDescPtr              xkb,
 			Bool			topLevel,
 			Bool			showImplicit,
 			XkbFileAddOnFunc	addOn,
@@ -281,9 +275,7 @@ XkbWriteXKBCompatMap(	FILE *			file,
 {
 register unsigned	i;
 XkbSymInterpretPtr	interp;
-XkbDescPtr		xkb;
 
-    xkb= result->xkb;
     if ((!xkb)||(!xkb->compat)||(!xkb->compat->sym_interpret)) {
 	_XkbLibError(_XkbErrMissingCompatMap,"XkbWriteXKBCompatMap",0);
 	return False;
@@ -316,7 +308,7 @@ XkbDescPtr		xkb;
 	if (interp->flags&XkbSI_AutoRepeat)
 	    fprintf(file,"        repeat= True;\n");
 	fprintf(file,"        action= ");
-	WriteXKBAction(file,result,&interp->act);
+	WriteXKBAction(file,xkb,&interp->act);
 	fprintf(file,";\n");
 	fprintf(file,"    };\n");
     }
@@ -337,32 +329,30 @@ XkbDescPtr		xkb;
 		(map->which_mods!=0)||
 		(map->mods.real_mods!=0)||(map->mods.vmods!=0)||
 		(map->ctrls!=0)) {
-		WriteXKBIndicatorMap(file,result,xkb->names->indicators[i],map,
+		WriteXKBIndicatorMap(file,xkb,xkb->names->indicators[i],map,
 								addOn,priv);
 	    }
 	}
     }
     if (addOn)
-	(*addOn)(file,result,topLevel,showImplicit,XkmCompatMapIndex,priv);
+	(*addOn)(file,xkb,topLevel,showImplicit,XkmCompatMapIndex,priv);
     fprintf(file,"};\n\n");
     return True;
 }
 
 Bool
 XkbWriteXKBSymbols(	FILE *			file,
-			XkbFileInfo *		result,
+			XkbDescPtr              xkb,
 			Bool			topLevel,
 			Bool			showImplicit,
 			XkbFileAddOnFunc	addOn,
 			void *			priv)
 {
 register unsigned	i,tmp;
-XkbDescPtr		xkb;
 XkbClientMapPtr		map;
 XkbServerMapPtr		srv;
 Bool			showActions;
 
-    xkb= result->xkb;
     map= xkb->map;
     srv= xkb->server;
     if ((!xkb)||(!map)||(!map->syms)||(!map->key_sym_map)) {
@@ -517,7 +507,7 @@ Bool			showActions;
 		    for (s=0;s<XkbKeyGroupWidth(xkb,i,g);s++) {
 			if (s!=0)
 			    fprintf(file,", ");
-			WriteXKBAction(file,result,(XkbAnyAction *)&acts[s]);
+			WriteXKBAction(file,xkb,(XkbAnyAction *)&acts[s]);
 		    }
 		    fprintf(file," ]");
 		    acts+= XkbKeyGroupsWidth(xkb,i);
@@ -543,7 +533,7 @@ Bool			showActions;
 	}
     }
     if (addOn)
-	(*addOn)(file,result,topLevel,showImplicit,XkmSymbolsIndex,priv);
+	(*addOn)(file,xkb,topLevel,showImplicit,XkmSymbolsIndex,priv);
     fprintf(file,"};\n\n");
     return True;
 }
@@ -803,17 +793,15 @@ int		dfltKeyColor = 0;
 
 Bool
 XkbWriteXKBGeometry(	FILE *			file,
-			XkbFileInfo *		result,
+			XkbDescPtr              xkb,
 			Bool			topLevel,
 			Bool			showImplicit,
 			XkbFileAddOnFunc	addOn,
 			void *			priv)
 {
 register unsigned	i,n;
-XkbDescPtr		xkb;
 XkbGeometryPtr		geom;
 
-    xkb= result->xkb;
     if ((!xkb)||(!xkb->geom)) {
 	_XkbLibError(_XkbErrMissingGeometry,"XkbWriteXKBGeometry",0);
  	return False;
@@ -901,7 +889,7 @@ XkbGeometryPtr		geom;
 	}
     }
     if (addOn)
-	(*addOn)(file,result,topLevel,showImplicit,XkmGeometryIndex,priv);
+	(*addOn)(file,xkb,topLevel,showImplicit,XkmGeometryIndex,priv);
     fprintf(file,"};\n\n");
     return True;
 }
diff --git a/xkb/xkmread.c b/xkb/xkmread.c
index 1e5b2cb..b14a5be 100644
--- a/xkb/xkmread.c
+++ b/xkb/xkmread.c
@@ -165,14 +165,12 @@ int	count,nRead=0;
 /***====================================================================***/
 
 static int
-ReadXkmVirtualMods(FILE *file,XkbFileInfo *result,XkbChangesPtr changes)
+ReadXkmVirtualMods(FILE *file,XkbDescPtr xkb,XkbChangesPtr changes)
 {
 register unsigned int i,bit;
 unsigned int	bound,named,tmp;
 int		nRead=0;
-XkbDescPtr	xkb;
 
-    xkb= result->xkb;
     if (XkbAllocServerMap(xkb,XkbVirtualModsMask,0)!=Success) {
 	_XkbLibError(_XkbErrBadAlloc,"ReadXkmVirtualMods",0);
 	return -1;
@@ -209,16 +207,14 @@ XkbDescPtr	xkb;
 /***====================================================================***/
 
 static int
-ReadXkmKeycodes(FILE *file,XkbFileInfo *result,XkbChangesPtr changes)
+ReadXkmKeycodes(FILE *file,XkbDescPtr xkb,XkbChangesPtr changes)
 {
 register int	i;
 unsigned	minKC,maxKC,nAl;
 int		nRead=0;
 char 		name[100];
 XkbKeyNamePtr	pN;
-XkbDescPtr	xkb;
 
-    xkb= result->xkb;
     name[0]= '\0';
     nRead+= XkmGetCountedString(file,name,100);
     minKC= XkmGetCARD8(file,&nRead);
@@ -276,7 +272,7 @@ XkbDescPtr	xkb;
 /***====================================================================***/
 
 static int
-ReadXkmKeyTypes(FILE *file,XkbFileInfo *result,XkbChangesPtr changes)
+ReadXkmKeyTypes(FILE *file,XkbDescPtr xkb,XkbChangesPtr changes)
 {
 register unsigned	i,n;
 unsigned		num_types;
@@ -287,9 +283,7 @@ xkmKeyTypeDesc		wire;
 XkbKTMapEntryPtr	entry;
 xkmKTMapEntryDesc	wire_entry;
 char 			buf[100];
-XkbDescPtr		xkb;
 
-    xkb= result->xkb;
     if ((tmp= XkmGetCountedString(file,buf,100))<1) {
 	_XkbLibError(_XkbErrBadLength,"ReadXkmKeyTypes",0);
 	return -1;
@@ -414,7 +408,7 @@ XkbDescPtr		xkb;
 /***====================================================================***/
 
 static int
-ReadXkmCompatMap(FILE *file,XkbFileInfo *result,XkbChangesPtr changes)
+ReadXkmCompatMap(FILE *file,XkbDescPtr xkb,XkbChangesPtr changes)
 {
 register int		i;
 unsigned		num_si,groups;
@@ -423,10 +417,8 @@ XkbSymInterpretPtr	interp;
 xkmSymInterpretDesc	wire;
 unsigned		tmp;
 int			nRead=0;
-XkbDescPtr		xkb;
 XkbCompatMapPtr		compat;
 
-    xkb= result->xkb;
     if ((tmp= XkmGetCountedString(file,name,100))<1) {
 	_XkbLibError(_XkbErrBadLength,"ReadXkmCompatMap",0);
 	return -1;
@@ -492,16 +484,14 @@ XkbCompatMapPtr		compat;
 }
 
 static int
-ReadXkmIndicators(FILE *file,XkbFileInfo *result,XkbChangesPtr changes)
+ReadXkmIndicators(FILE *file,XkbDescPtr xkb,XkbChangesPtr changes)
 {
 register unsigned	nLEDs;
 xkmIndicatorMapDesc	wire;
 char			buf[100];
 unsigned		tmp;
 int			nRead=0;
-XkbDescPtr		xkb;
 
-    xkb= result->xkb;
     if ((xkb->indicators==NULL)&&(XkbAllocIndicatorMaps(xkb)!=Success)) {
 	_XkbLibError(_XkbErrBadAlloc,"indicator rec",0);
 	return -1;
@@ -575,16 +565,14 @@ FindTypeForKey(XkbDescPtr xkb,Atom name,unsigned width,KeySym *syms)
 }
 
 static int
-ReadXkmSymbols(FILE *file,XkbFileInfo *result)
+ReadXkmSymbols(FILE *file,XkbDescPtr xkb)
 {
 register int		i,g,s,totalVModMaps;
 xkmKeySymMapDesc 	wireMap;
 char 			buf[100];
 unsigned		minKC,maxKC,groupNames,tmp;
 int			nRead=0;
-XkbDescPtr		xkb;
 
-    xkb= result->xkb;
     if ((tmp=XkmGetCountedString(file,buf,100))<1)
 	return -1;
     nRead+= tmp;
@@ -911,7 +899,7 @@ Atom		nameAtom;
 }
 
 static int
-ReadXkmGeometry(FILE *file,XkbFileInfo *result)
+ReadXkmGeometry(FILE *file,XkbDescPtr xkb)
 {
 register int		i;
 char 			buf[100];
@@ -931,11 +919,11 @@ XkbGeometrySizesRec	sizes;
     sizes.num_sections= wireGeom.num_sections;
     sizes.num_doodads= wireGeom.num_doodads;
     sizes.num_key_aliases= wireGeom.num_key_aliases;
-    if (XkbAllocGeometry(result->xkb,&sizes)!=Success) {
+    if (XkbAllocGeometry(xkb,&sizes)!=Success) {
 	_XkbLibError(_XkbErrBadAlloc,"ReadXkmGeometry",0);
 	return nRead;
     }
-    geom= result->xkb->geom;
+    geom= xkb->geom;
     geom->name= XkbInternAtom(buf,False);
     geom->width_mm= wireGeom.width_mm;
     geom->height_mm= wireGeom.height_mm;
@@ -1055,7 +1043,7 @@ int	 nRead=0;
     return 1;
 }
 
-Bool
+static Bool
 XkmReadTOC(FILE *file,xkmFileInfo* file_info,int max_toc,xkmSectionInfo *toc)
 {
 unsigned hdr,tmp;
@@ -1086,117 +1074,11 @@ unsigned i,size_toc;
     return 1;
 }
 
-Bool
-XkmReadFileSection(	FILE *			file,
-			xkmSectionInfo *	toc,
-			XkbFileInfo *		result,
-			unsigned *		loaded_rtrn)
-{
-xkmSectionInfo		tmpTOC;
-int			nRead;
-
-    if ((!result)||(!result->xkb)) {
-	_XkbLibError(_XkbErrBadMatch,"XkmReadFileSection",0);
-	return 0;
-    }
-    fseek(file,toc->offset,SEEK_SET);
-    fread(&tmpTOC,SIZEOF(xkmSectionInfo),1,file);
-    nRead= SIZEOF(xkmSectionInfo);
-    if ((tmpTOC.type!=toc->type)||(tmpTOC.format!=toc->format)||
-	(tmpTOC.size!=toc->size)||(tmpTOC.offset!=toc->offset)) {
-	_XkbLibError(_XkbErrIllegalContents,"XkmReadFileSection",0);
-	return 0;
-    }
-    switch (tmpTOC.type) {
-	case XkmVirtualModsIndex:
-	    nRead+= ReadXkmVirtualMods(file,result,NULL);
-	    if ((loaded_rtrn)&&(nRead>=0))
-		*loaded_rtrn|= XkmVirtualModsMask;
-	    break;
-	case XkmTypesIndex:
-	    nRead+= ReadXkmKeyTypes(file,result,NULL);
-	    if ((loaded_rtrn)&&(nRead>=0))
-		*loaded_rtrn|= XkmTypesMask;
-	    break;
-	case XkmCompatMapIndex:
-	    nRead+= ReadXkmCompatMap(file,result,NULL);
-	    if ((loaded_rtrn)&&(nRead>=0))
-		*loaded_rtrn|= XkmCompatMapMask;
-	    break;
-	case XkmKeyNamesIndex:
-	    nRead+= ReadXkmKeycodes(file,result,NULL);
-	    if ((loaded_rtrn)&&(nRead>=0))
-		*loaded_rtrn|= XkmKeyNamesMask;
-	    break;
-	case XkmSymbolsIndex:
-	    nRead+= ReadXkmSymbols(file,result);
-	    if ((loaded_rtrn)&&(nRead>=0))
-		*loaded_rtrn|= XkmSymbolsMask;
-	    break;
-	case XkmIndicatorsIndex:
-	    nRead+= ReadXkmIndicators(file,result,NULL);
-	    if ((loaded_rtrn)&&(nRead>=0))
-		*loaded_rtrn|= XkmIndicatorsMask;
-	    break;
-	case XkmGeometryIndex:
-	    nRead+= ReadXkmGeometry(file,result);
-	    if ((loaded_rtrn)&&(nRead>=0))
-		*loaded_rtrn|= XkmGeometryMask;
-	    break;
-	default:
-	    _XkbLibError(_XkbErrBadImplementation,
-	    			XkbConfigText(tmpTOC.type,XkbMessage),0);
-	    nRead= 0;
-	    break;
-    }
-    if (nRead!=tmpTOC.size) {
-	_XkbLibError(_XkbErrBadLength,XkbConfigText(tmpTOC.type,XkbMessage),
-						nRead-tmpTOC.size);
-	return 0;
-    }
-    return (nRead>=0);
-}
-
-char *
-XkmReadFileSectionName(FILE *file,xkmSectionInfo *toc)
-{
-xkmSectionInfo	tmpTOC;
-char 		name[100];
-
-    if ((!file)||(!toc))
-	return 0;
-    switch (toc->type) {
-	case XkmVirtualModsIndex:
-	case XkmIndicatorsIndex:
-	    break;
-	case XkmTypesIndex:
-	case XkmCompatMapIndex:
-	case XkmKeyNamesIndex:
-	case XkmSymbolsIndex:
-	case XkmGeometryIndex:
-	    fseek(file,toc->offset,SEEK_SET);
-	    fread(&tmpTOC,SIZEOF(xkmSectionInfo),1,file);
-	    if ((tmpTOC.type!=toc->type)||(tmpTOC.format!=toc->format)||
-		(tmpTOC.size!=toc->size)||(tmpTOC.offset!=toc->offset)) {
-		_XkbLibError(_XkbErrIllegalContents,"XkmReadFileSectionName",0);
-		return 0;
-	    }
-	    if (XkmGetCountedString(file,name,100)>0)
-		return _XkbDupString(name);
-	    break;
-	default:
-	    _XkbLibError(_XkbErrBadImplementation,
-				XkbConfigText(tmpTOC.type,XkbMessage),0);
-	    break;
-    }
-    return NULL;
-}
-
 /***====================================================================***/
 
 #define	MAX_TOC	16
 unsigned
-XkmReadFile(FILE *file,unsigned need,unsigned want,XkbFileInfo *result)
+XkmReadFile(FILE *file,unsigned need,unsigned want,XkbDescPtr *xkb)
 {
 register unsigned	i;
 xkmSectionInfo		toc[MAX_TOC],tmpTOC;
@@ -1211,9 +1093,8 @@ unsigned		which= need|want;
        						need&(~fileInfo.present));
        return which;
     }
-    result->type= fileInfo.type;
-    if (result->xkb==NULL)
-	result->xkb= XkbAllocKeyboard();
+    if (*xkb==NULL)
+	*xkb= XkbAllocKeyboard();
     for (i=0;i<fileInfo.num_toc;i++) {
 	fseek(file,toc[i].offset,SEEK_SET);
 	tmp= fread(&tmpTOC,SIZEOF(xkmSectionInfo),1,file);
@@ -1227,25 +1108,25 @@ unsigned		which= need|want;
 	}
 	switch (tmpTOC.type) {
 	    case XkmVirtualModsIndex:
-		tmp= ReadXkmVirtualMods(file,result,NULL);
+		tmp= ReadXkmVirtualMods(file,*xkb,NULL);
 		break;
 	    case XkmTypesIndex:
-		tmp= ReadXkmKeyTypes(file,result,NULL);
+		tmp= ReadXkmKeyTypes(file,*xkb,NULL);
 		break;
 	    case XkmCompatMapIndex:
-		tmp= ReadXkmCompatMap(file,result,NULL);
+		tmp= ReadXkmCompatMap(file,*xkb,NULL);
 		break;
 	    case XkmKeyNamesIndex:
-		tmp= ReadXkmKeycodes(file,result,NULL);
+		tmp= ReadXkmKeycodes(file,*xkb,NULL);
 		break;
 	    case XkmIndicatorsIndex:
-		tmp= ReadXkmIndicators(file,result,NULL);
+		tmp= ReadXkmIndicators(file,*xkb,NULL);
 		break;
 	    case XkmSymbolsIndex:
-		tmp= ReadXkmSymbols(file,result);
+		tmp= ReadXkmSymbols(file,*xkb);
 		break;
 	    case XkmGeometryIndex:
-		tmp= ReadXkmGeometry(file,result);
+		tmp= ReadXkmGeometry(file,*xkb);
 		break;
 	    default:
 		_XkbLibError(_XkbErrBadImplementation,
@@ -1256,7 +1137,7 @@ unsigned		which= need|want;
 	if (tmp>0) {
 	    nRead+= tmp;
 	    which&= ~(1<<toc[i].type);
-	    result->defined|= (1<<toc[i].type);
+	    (*xkb)->defined|= (1<<toc[i].type);
 	}
 	if (nRead!=tmpTOC.size) {
 	    _XkbLibError(_XkbErrBadLength,XkbConfigText(tmpTOC.type,XkbMessage),
commit e5f002eddef1abe324033a3155f01d048536a48d
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Sat Feb 16 20:00:47 2008 +0200

    XkbProcessOtherEvent: Don't depend on now-removed header
    
    We don't do XKBsrv.h anymore.

diff --git a/xkb/xkbPrOtherEv.c b/xkb/xkbPrOtherEv.c
index d65107c..8017903 100644
--- a/xkb/xkbPrOtherEv.c
+++ b/xkb/xkbPrOtherEv.c
@@ -36,7 +36,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include <X11/keysym.h>
 #include "misc.h"
 #include "inputstr.h"
-#include <X11/extensions/XKBsrv.h>
+#include "xkbsrv.h"
 
 #include <X11/extensions/XI.h>
 #include <X11/extensions/XIproto.h>
commit 2d256f098ae05033ad76672d5ebdb9dfa7e6b995
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Sat Feb 16 19:57:37 2008 +0200

    XKB: Always set size correctly in XkbCopyKeymap's geometry routines
    
    We were forgetting to set the sizes for sections and rows and a couple of
    other misc bits in XkbCopyKeymap's geometry.  Sort that out, and add a
    couple of clarifying comments along the way.

diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index 28d66b3..b313270 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -1506,10 +1506,12 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
         /* properties */
         if (src->geom->num_properties) {
             if (src->geom->num_properties != dst->geom->sz_properties) {
+                /* If we've got more properties in the destination than
+                 * the source, run through and free all the excess ones
+                 * first. */
                 if (src->geom->num_properties < dst->geom->sz_properties) {
                     for (i = src->geom->num_properties,
-                          dprop = dst->geom->properties +
-                                  src->geom->num_properties;
+                         dprop = dst->geom->properties + i;
                          i < dst->geom->num_properties;
                          i++, dprop++) {
                         xfree(dprop->name);
@@ -1529,6 +1531,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
                 dst->geom->properties = tmp;
             }
 
+            /* We don't set num_properties as we need it to try and avoid
+             * too much reallocing. */
             dst->geom->sz_properties = src->geom->num_properties;
 
             if (dst->geom->sz_properties > dst->geom->num_properties) {
@@ -1564,6 +1568,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
                 }
             }
 
+            /* ... which is already src->geom->num_properties. */
             dst->geom->num_properties = dst->geom->sz_properties;
         }
         else {
@@ -1587,8 +1592,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
             if (src->geom->num_colors != dst->geom->sz_colors) {
                 if (src->geom->num_colors < dst->geom->sz_colors) {
                     for (i = src->geom->num_colors,
-                          dcolor = dst->geom->colors +
-                                   src->geom->num_colors;
+                         dcolor = dst->geom->colors + i;
                          i < dst->geom->num_colors;
                          i++, dcolor++) {
                         xfree(dcolor->spec);
@@ -1706,7 +1710,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
                         }
 
                         doutline->num_points = soutline->num_points;
-                        doutline->sz_points = soutline->sz_points;
+                        doutline->sz_points = soutline->num_points;
                     }
                 }
 
@@ -1785,6 +1789,7 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
             memset(tmp, 0, src->geom->num_sections * sizeof(XkbSectionRec));
             dst->geom->sections = tmp;
             dst->geom->num_sections = src->geom->num_sections;
+            dst->geom->sz_sections = src->geom->num_sections;
 
             for (i = 0,
                   ssection = src->geom->sections,
@@ -1798,6 +1803,8 @@ XkbCopyKeymap(XkbDescPtr src, XkbDescPtr dst, Bool sendNotifies)
                     dsection->rows = tmp;
                 }
                 dsection->num_rows = ssection->num_rows;
+                dsection->sz_rows = ssection->num_rows;
+
                 for (j = 0, srow = ssection->rows, drow = dsection->rows;
                      j < ssection->num_rows;
                      j++, srow++, drow++) {
commit ab79110a84b2d299ecae0605fa535edbebd99565
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Sun Feb 3 23:48:57 2008 +1100

    XKB: Remove support for pre-built keymaps
    
    Don't load prebuilt keymaps anymore.

diff --git a/include/xkbsrv.h b/include/xkbsrv.h
index a711504..60b0eb7 100644
--- a/include/xkbsrv.h
+++ b/include/xkbsrv.h
@@ -1022,13 +1022,6 @@ extern	Bool XkbDDXApplyConfig(
 	XkbSrvInfoPtr	/* xkbi */
 );
 
-extern void *XkbDDXPreloadConfig(
-	char **			/* rulesFileRtrn */,
-	XkbRF_VarDefsPtr	/* defs */,
-	XkbComponentNamesPtr	/* names */,
-	DeviceIntPtr		/* dev */
-);
-
 extern	int _XkbStrCaseCmp(
 	char *			/* str1 */,
 	char *			/* str2 */
diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index 60a8d44..760119d 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -178,74 +178,6 @@ OutputDirectory(
     }
 }
 
-static Bool
-XkbDDXCompileNamedKeymap(	XkbDescPtr		xkb,
-				XkbComponentNamesPtr	names,
-				char *			nameRtrn,
-				int			nameRtrnLen)
-{
-char 	*cmd = NULL,file[PATH_MAX],xkm_output_dir[PATH_MAX],*map,*outFile;
-
-    if (names->keymap==NULL)
-	return False;
-    strncpy(file,names->keymap,PATH_MAX); file[PATH_MAX-1]= '\0';
-    if ((map= strrchr(file,'('))!=NULL) {
-	char *tmp;
-	if ((tmp= strrchr(map,')'))!=NULL) {
-	    *map++= '\0';
-	    *tmp= '\0';
-	}
-	else {
-	    map= NULL;
-	}
-    }
-    if ((outFile= strrchr(file,'/'))!=NULL)
-	 outFile= _XkbDupString(&outFile[1]);
-    else outFile= _XkbDupString(file);
-    XkbEnsureSafeMapName(outFile);
-    OutputDirectory(xkm_output_dir, sizeof(xkm_output_dir));
-
-    if (XkbBaseDirectory!=NULL) {
-        char *xkbbasedir = XkbBaseDirectory;
-        char *xkbbindir = XkbBinDirectory;
-
-	cmd = Xprintf("\"%s" PATHSEPARATOR "xkbcomp\" -w %d \"-R%s\" -xkm %s%s -em1 %s -emp %s -eml %s keymap/%s \"%s%s.xkm\"",
-		xkbbindir,
-		((xkbDebugFlags<2)?1:((xkbDebugFlags>10)?10:(int)xkbDebugFlags)),
-		xkbbasedir,(map?"-m ":""),(map?map:""),
-		PRE_ERROR_MSG,ERROR_PREFIX,POST_ERROR_MSG1,file,
-		xkm_output_dir,outFile);
-    }
-    else {
-	cmd = Xprintf("xkbcomp -w %d -xkm %s%s -em1 %s -emp %s -eml %s keymap/%s \"%s%s.xkm\"",
-		((xkbDebugFlags<2)?1:((xkbDebugFlags>10)?10:(int)xkbDebugFlags)),
-		(map?"-m ":""),(map?map:""),
-		PRE_ERROR_MSG,ERROR_PREFIX,POST_ERROR_MSG1,file,
-		xkm_output_dir,outFile);
-    }
-    if (xkbDebugFlags) {
-	DebugF("XkbDDXCompileNamedKeymap compiling keymap using:\n");
-	DebugF("    \"cmd\"\n");
-    }
-    if (System(cmd)==0) {
-	if (nameRtrn) {
-	    strncpy(nameRtrn,outFile,nameRtrnLen);
-	    nameRtrn[nameRtrnLen-1]= '\0';
-	}
-	if (outFile!=NULL)
-	    _XkbFree(outFile);
-        if (cmd!=NULL)
-            xfree(cmd);
-	return True;
-    } 
-    DebugF("Error compiling keymap (%s)\n",names->keymap);
-    if (outFile!=NULL)
-	_XkbFree(outFile);
-    if (cmd!=NULL)
-        xfree(cmd);
-    return False;
-}
-
 static Bool    	
 XkbDDXCompileKeymapByNames(	XkbDescPtr		xkb,
 				XkbComponentNamesPtr	names,
@@ -418,20 +350,7 @@ unsigned	missing;
     if ((names->keycodes==NULL)&&(names->types==NULL)&&
 	(names->compat==NULL)&&(names->symbols==NULL)&&
 	(names->geometry==NULL)) {
-	if (names->keymap==NULL) {
-	    bzero(finfoRtrn,sizeof(XkbFileInfo));
-	    if (xkb && XkbDetermineFileType(finfoRtrn,XkbXKMFile,NULL) &&
-	   				((finfoRtrn->defined&need)==need) ) {
-		finfoRtrn->xkb= xkb;
-		nameRtrn[0]= '\0';
-		return finfoRtrn->defined;
-	    }
-	    return 0;
-	}
-	else if (!XkbDDXCompileNamedKeymap(xkb,names,nameRtrn,nameRtrnLen)) {
-	    DebugF("Couldn't compile keymap file\n");
-	    return 0;
-	}
+        return 0;
     }
     else if (!XkbDDXCompileKeymapByNames(xkb,names,want,need,
 						nameRtrn,nameRtrnLen)){
diff --git a/xkb/maprules.c b/xkb/maprules.c
index 72e642f..4c947f0 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -459,7 +459,7 @@ Bool 		append = False;
     rule->types= _XkbDupString(tmp.name[TYPES]);
     rule->compat= _XkbDupString(tmp.name[COMPAT]);
     rule->geometry= _XkbDupString(tmp.name[GEOMETRY]);
-    rule->keymap= _XkbDupString(tmp.name[KEYMAP]);
+    rule->keymap= NULL;
 
     rule->layout_num = rule->variant_num = 0;
     for (i = 0; i < nread; i++) {
@@ -589,7 +589,6 @@ XkbRF_ApplyRule(	XkbRF_RulePtr 		rule,
     Apply(rule->types,    &names->types);
     Apply(rule->compat,   &names->compat);
     Apply(rule->geometry, &names->geometry);
-    Apply(rule->keymap,   &names->keymap);
 }
 
 static Bool
@@ -1279,7 +1278,6 @@ XkbRF_GroupPtr	group;
 	    if (rule->types)	_XkbFree(rule->types);
 	    if (rule->compat)	_XkbFree(rule->compat);
 	    if (rule->geometry)	_XkbFree(rule->geometry);
-	    if (rule->keymap)	_XkbFree(rule->keymap);
 	    bzero((char *)rule,sizeof(XkbRF_RuleRec));
 	}
 	_XkbFree(rules->rules);
diff --git a/xkb/xkb.c b/xkb/xkb.c
index bd9a87c..ea5189f 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -5157,25 +5157,20 @@ ProcXkbGetKbdByName(ClientPtr client)
     if (stuff->load)
 	 fwant= XkbGBN_AllComponentsMask;
     else fwant= stuff->want|stuff->need;
-    if (!names.keymap) {
-	if ((!names.compat)&&
-    		(fwant&(XkbGBN_CompatMapMask|XkbGBN_IndicatorMapMask))) {
-	    names.compat= _XkbDupString("%");
-	}
-	if ((!names.types)&&(fwant&(XkbGBN_TypesMask))) {
-	    names.types= _XkbDupString("%");
-	}
-	if ((!names.symbols)&&(fwant&XkbGBN_SymbolsMask)) {
-	    names.symbols= _XkbDupString("%");
-	}
-	geom_changed= ((names.geometry!=NULL)&&(strcmp(names.geometry,"%")!=0));
-	if ((!names.geometry)&&(fwant&XkbGBN_GeometryMask)) {
-	    names.geometry= _XkbDupString("%");
-	    geom_changed= False;
-	}
+    if ((!names.compat)&&
+        (fwant&(XkbGBN_CompatMapMask|XkbGBN_IndicatorMapMask))) {
+        names.compat= _XkbDupString("%");
     }
-    else {
-	geom_changed= True;
+    if ((!names.types)&&(fwant&(XkbGBN_TypesMask))) {
+        names.types= _XkbDupString("%");
+    }
+    if ((!names.symbols)&&(fwant&XkbGBN_SymbolsMask)) {
+        names.symbols= _XkbDupString("%");
+    }
+    geom_changed= ((names.geometry!=NULL)&&(strcmp(names.geometry,"%")!=0));
+    if ((!names.geometry)&&(fwant&XkbGBN_GeometryMask)) {
+        names.geometry= _XkbDupString("%");
+        geom_changed= False;
     }
 
     bzero(mapFile,PATH_MAX);
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
index 2ac51f2..73dd32e 100644
--- a/xkb/xkbInit.c
+++ b/xkb/xkbInit.c
@@ -591,7 +591,7 @@ XkbRF_VarDefsRec	defs;
      * generation. Eventually they will be freed at the end of this
      * function.
      */
-    if (names->keymap) names->keymap = _XkbDupString(names->keymap);
+    names->keymap = NULL;
     if (names->keycodes) names->keycodes = _XkbDupString(names->keycodes);
     if (names->types) names->types = _XkbDupString(names->types);
     if (names->compat) names->compat = _XkbDupString(names->compat);
@@ -602,11 +602,6 @@ XkbRF_VarDefsRec	defs;
 	XkbComponentNamesRec	rNames;
 	bzero(&rNames,sizeof(XkbComponentNamesRec));
 	if (XkbDDXNamesFromRules(dev,rules,&defs,&rNames)) {
-	    if (rNames.keymap) {
-		if (!names->keymap)
-		    names->keymap = rNames.keymap;
-		else _XkbFree(rNames.keymap);
-	    }
 	    if (rNames.keycodes) {
 		if (!names->keycodes)
 		    names->keycodes =  rNames.keycodes;
@@ -637,16 +632,8 @@ XkbRF_VarDefsRec	defs;
 	}
     }
 
-    if (names->keymap) {
-        XkbComponentNamesRec	tmpNames;
-	bzero(&tmpNames,sizeof(XkbComponentNamesRec));
-	tmpNames.keymap = names->keymap;
-        ok = (Bool) XkbDDXLoadKeymapByNames(dev,&tmpNames,XkmAllIndicesMask,0,
-					    &finfo,name,PATH_MAX);
-    }
-    if (!(ok && (finfo.xkb!=NULL)))
-        ok = (Bool) XkbDDXLoadKeymapByNames(dev,names,XkmAllIndicesMask,0,
-					    &finfo,name,PATH_MAX);
+    ok = (Bool) XkbDDXLoadKeymapByNames(dev,names,XkmAllIndicesMask,0,
+                                        &finfo,name,PATH_MAX);
 
     if (ok && (finfo.xkb!=NULL)) {
 	XkbDescPtr	xkb;
@@ -694,8 +681,6 @@ XkbRF_VarDefsRec	defs;
 	pSyms->map= NULL;
     }
 
-    if (names->keymap) _XkbFree(names->keymap);
-    names->keymap = NULL;
     if (names->keycodes) _XkbFree(names->keycodes);
     names->keycodes = NULL;
     if (names->types) _XkbFree(names->types);
commit 1332343910a1880854bae21a790cff198855cd24
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Sun Feb 3 23:43:18 2008 +1100

    XKB: Remove usage of client-side types
    
    Since we're no longer sharing with Xlib, don't pass Displays and XPointers
    everywhere.

diff --git a/include/xkbfile.h b/include/xkbfile.h
index d58bec6..e90d766 100644
--- a/include/xkbfile.h
+++ b/include/xkbfile.h
@@ -96,7 +96,6 @@ extern	char *	XkbIndentText(
 );
 
 extern	char *	XkbAtomText(
-    Display *	/* dpy */,
     Atom 	/* atm */,
     unsigned	/* format */
 );
@@ -129,14 +128,12 @@ XkbModMaskText(
 );
 
 extern char *	XkbVModIndexText(
-    Display *	/* dpy */,
     XkbDescPtr	/* xkb */,
     unsigned	/* ndx */,
     unsigned	/* format */
 );
 
 extern	char *	XkbVModMaskText(
-    Display *	/* dpy */,
     XkbDescPtr	/* xkb */,
     unsigned	/* modMask */,
     unsigned	/* mask */,
@@ -189,7 +186,6 @@ extern char *	XkbActionTypeText(
 );
 
 extern char *	XkbActionText(
-    Display *	/* dpy */,
     XkbDescPtr	/* xkb */,
     XkbAction *	/* action */,
     unsigned	/* format */
@@ -232,31 +228,12 @@ extern	Bool	XkbLookupGroupAndLevel(
 
 /***====================================================================***/
 
-extern	char *	XkbAtomGetString(
-    Display *	/* dpy */,
-    Atom 	/* atm */
-);
-
 extern	Atom	XkbInternAtom(
-    Display *	/* dpy */,
     char *	/* name */,
     Bool	/* onlyIfExists */
 );
 
-extern	Status	XkbChangeKbdDisplay(
-    Display *		/* newDpy */,
-    XkbFileInfo *	/* result */
-);
-
-extern	Atom	XkbChangeAtomDisplay(
-    Display *	/* oldDpy */,
-    Display *	/* newDpy */,
-    Atom	/* atm */
-);
-
-extern	void	XkbInitAtoms(
-    Display *	/* dpy */
-);
+extern	void	XkbInitAtoms(void);
 
 /***====================================================================***/
 
@@ -415,7 +392,6 @@ extern	void	XkbEnsureSafeMapName(
 extern	Bool	XkbWriteXKBKeymapForNames(
     FILE *			/* file */,
     XkbComponentNamesPtr	/* names */,
-    Display *			/* dpy */,
     XkbDescPtr			/* xkb */,
     unsigned			/* want */,
     unsigned			/* need */
@@ -432,13 +408,6 @@ extern Bool	XkmProbe(
     FILE *		/* file */
 );
 
-extern unsigned XkbReadFromServer(
-    Display *		/* dpy */,
-    unsigned		/* need */,
-    unsigned		/* want */,
-    XkbFileInfo *	/* result */
-);
-
 extern unsigned	XkmReadFile(
     FILE *		/* file */,
     unsigned		/* need */,
diff --git a/include/xkbsrv.h b/include/xkbsrv.h
index df9aefc..a711504 100644
--- a/include/xkbsrv.h
+++ b/include/xkbsrv.h
@@ -328,12 +328,10 @@ extern	int	DeviceEnterNotify,DeviceLeaveNotify;
 #define	IsKeypadKey(s)		XkbKSIsKeypad(s)
 
 #define	Status		int
-#define	XPointer	pointer
-#define	Display		struct _XDisplay
 
 #ifndef True
-#define	True	1
-#define	False	0
+#define	True	TRUE
+#define	False	FALSE
 #endif
 
 _XFUNCPROTOBEGIN
@@ -1020,11 +1018,11 @@ extern	Bool XkbDDXNamesFromRules(
 );
 
 extern	Bool XkbDDXApplyConfig(
-	XPointer	/* cfg_in */,
+	void *	/* cfg_in */,
 	XkbSrvInfoPtr	/* xkbi */
 );
 
-extern XPointer XkbDDXPreloadConfig(
+extern void *XkbDDXPreloadConfig(
 	char **			/* rulesFileRtrn */,
 	XkbRF_VarDefsPtr	/* defs */,
 	XkbComponentNamesPtr	/* names */,
@@ -1038,6 +1036,6 @@ extern	int _XkbStrCaseCmp(
 
 _XFUNCPROTOEND
 
-#define	XkbAtomGetString(d,s)	NameForAtom(s)
+#define	XkbAtomGetString(s)	NameForAtom(s)
 
 #endif /* _XKBSRV_H_ */
diff --git a/include/xkbstr.h b/include/xkbstr.h
index e519e65..f390c61 100644
--- a/include/xkbstr.h
+++ b/include/xkbstr.h
@@ -418,7 +418,6 @@ typedef	struct _XkbGeometry	*XkbGeometryPtr;
 	 * Tie it all together into one big keyboard description
 	 */
 typedef	struct _XkbDesc {
-	struct _XDisplay *	dpy;
 	unsigned short	 	flags;
 	unsigned short		device_spec;
 	KeyCode			min_key_code;
diff --git a/xkb/XKBGAlloc.c b/xkb/XKBGAlloc.c
index 94072b8..c37f49a 100644
--- a/xkb/XKBGAlloc.c
+++ b/xkb/XKBGAlloc.c
@@ -455,7 +455,7 @@ XkbFreeGeometry(XkbGeometryPtr geom,unsigned which,Bool freeMap)
 /***====================================================================***/
 
 static Status
-_XkbGeomAlloc(	XPointer *		old,
+_XkbGeomAlloc(	void **		old,
 		unsigned short *	num,
 		unsigned short *	total,
 		int			num_new,
@@ -471,8 +471,8 @@ _XkbGeomAlloc(	XPointer *		old,
 
     *total= (*num)+num_new;
     if ((*old)!=NULL)
-	 (*old)= (XPointer)_XkbRealloc((*old),(*total)*sz_elem);
-    else (*old)= (XPointer)_XkbCalloc((*total),sz_elem);
+	 (*old)= _XkbRealloc((*old),(*total)*sz_elem);
+    else (*old)= _XkbCalloc((*total),sz_elem);
     if ((*old)==NULL) {
 	*total= *num= 0;
 	return BadAlloc;
@@ -485,44 +485,44 @@ _XkbGeomAlloc(	XPointer *		old,
     return Success;
 }
 
-#define	_XkbAllocProps(g,n) _XkbGeomAlloc((XPointer *)&(g)->properties,\
+#define	_XkbAllocProps(g,n) _XkbGeomAlloc((void *)&(g)->properties,\
 				&(g)->num_properties,&(g)->sz_properties,\
 				(n),sizeof(XkbPropertyRec))
-#define	_XkbAllocColors(g,n) _XkbGeomAlloc((XPointer *)&(g)->colors,\
+#define	_XkbAllocColors(g,n) _XkbGeomAlloc((void *)&(g)->colors,\
 				&(g)->num_colors,&(g)->sz_colors,\
 				(n),sizeof(XkbColorRec))
-#define	_XkbAllocShapes(g,n) _XkbGeomAlloc((XPointer *)&(g)->shapes,\
+#define	_XkbAllocShapes(g,n) _XkbGeomAlloc((void *)&(g)->shapes,\
 				&(g)->num_shapes,&(g)->sz_shapes,\
 				(n),sizeof(XkbShapeRec))
-#define	_XkbAllocSections(g,n) _XkbGeomAlloc((XPointer *)&(g)->sections,\
+#define	_XkbAllocSections(g,n) _XkbGeomAlloc((void *)&(g)->sections,\
 				&(g)->num_sections,&(g)->sz_sections,\
 				(n),sizeof(XkbSectionRec))
-#define	_XkbAllocDoodads(g,n) _XkbGeomAlloc((XPointer *)&(g)->doodads,\
+#define	_XkbAllocDoodads(g,n) _XkbGeomAlloc((void *)&(g)->doodads,\
 				&(g)->num_doodads,&(g)->sz_doodads,\
 				(n),sizeof(XkbDoodadRec))
-#define	_XkbAllocKeyAliases(g,n) _XkbGeomAlloc((XPointer *)&(g)->key_aliases,\
+#define	_XkbAllocKeyAliases(g,n) _XkbGeomAlloc((void *)&(g)->key_aliases,\
 				&(g)->num_key_aliases,&(g)->sz_key_aliases,\
 				(n),sizeof(XkbKeyAliasRec))
 
-#define	_XkbAllocOutlines(s,n) _XkbGeomAlloc((XPointer *)&(s)->outlines,\
+#define	_XkbAllocOutlines(s,n) _XkbGeomAlloc((void *)&(s)->outlines,\
 				&(s)->num_outlines,&(s)->sz_outlines,\
 				(n),sizeof(XkbOutlineRec))
-#define	_XkbAllocRows(s,n) _XkbGeomAlloc((XPointer *)&(s)->rows,\
+#define	_XkbAllocRows(s,n) _XkbGeomAlloc((void *)&(s)->rows,\
 				&(s)->num_rows,&(s)->sz_rows,\
 				(n),sizeof(XkbRowRec))
-#define	_XkbAllocPoints(o,n) _XkbGeomAlloc((XPointer *)&(o)->points,\
+#define	_XkbAllocPoints(o,n) _XkbGeomAlloc((void *)&(o)->points,\
 				&(o)->num_points,&(o)->sz_points,\
 				(n),sizeof(XkbPointRec))
-#define	_XkbAllocKeys(r,n) _XkbGeomAlloc((XPointer *)&(r)->keys,\
+#define	_XkbAllocKeys(r,n) _XkbGeomAlloc((void *)&(r)->keys,\
 				&(r)->num_keys,&(r)->sz_keys,\
 				(n),sizeof(XkbKeyRec))
-#define	_XkbAllocOverlays(s,n) _XkbGeomAlloc((XPointer *)&(s)->overlays,\
+#define	_XkbAllocOverlays(s,n) _XkbGeomAlloc((void *)&(s)->overlays,\
 				&(s)->num_overlays,&(s)->sz_overlays,\
 				(n),sizeof(XkbOverlayRec))
-#define	_XkbAllocOverlayRows(o,n) _XkbGeomAlloc((XPointer *)&(o)->rows,\
+#define	_XkbAllocOverlayRows(o,n) _XkbGeomAlloc((void *)&(o)->rows,\
 				&(o)->num_rows,&(o)->sz_rows,\
 				(n),sizeof(XkbOverlayRowRec))
-#define	_XkbAllocOverlayKeys(r,n) _XkbGeomAlloc((XPointer *)&(r)->keys,\
+#define	_XkbAllocOverlayKeys(r,n) _XkbGeomAlloc((void *)&(r)->keys,\
 				&(r)->num_keys,&(r)->sz_keys,\
 				(n),sizeof(XkbOverlayKeyRec))
     
diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index 6312226..60a8d44 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -321,10 +321,10 @@ char tmpname[PATH_MAX];
 #ifdef DEBUG
     if (xkbDebugFlags) {
        ErrorF("XkbDDXCompileKeymapByNames compiling keymap:\n");
-       XkbWriteXKBKeymapForNames(stderr,names,NULL,xkb,want,need);
+       XkbWriteXKBKeymapForNames(stderr,names,xkb,want,need);
     }
 #endif
-	XkbWriteXKBKeymapForNames(out,names,NULL,xkb,want,need);
+	XkbWriteXKBKeymapForNames(out,names,xkb,want,need);
 #ifndef WIN32
 	if (Pclose(out)==0)
 #else
diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c
index 06d3519..4182c3a 100644
--- a/xkb/xkbfmisc.c
+++ b/xkb/xkbfmisc.c
@@ -160,7 +160,6 @@ _AddIncl(	FILE *		file,
 Bool
 XkbWriteXKBKeymapForNames(	FILE *			file,
 				XkbComponentNamesPtr	names,
-				Display *		dpy,
 				XkbDescPtr		xkb,
 				unsigned		want,
 				unsigned		need)
@@ -233,7 +232,7 @@ XkbFileInfo	finfo;
     if ((xkb!=NULL) && (old_names!=NULL)) {
 	if (wantNames&XkmTypesMask) {
 	    if (old_names->types!=None) {
-		tmp= XkbAtomGetString(dpy,old_names->types);
+		tmp= XkbAtomGetString(old_names->types);
 		names->types= _XkbDupString(tmp);
 	    }
 	    else {
@@ -243,7 +242,7 @@ XkbFileInfo	finfo;
 	}
 	if (wantNames&XkmCompatMapMask) {
 	    if (old_names->compat!=None) {
-		tmp= XkbAtomGetString(dpy,old_names->compat);
+		tmp= XkbAtomGetString(old_names->compat);
 		names->compat= _XkbDupString(tmp);
 	    }
 	    else wantDflts|= XkmCompatMapMask;
@@ -252,13 +251,13 @@ XkbFileInfo	finfo;
 	if (wantNames&XkmSymbolsMask) {
 	    if (old_names->symbols==None)
 		return False;
-	    tmp= XkbAtomGetString(dpy,old_names->symbols);
+	    tmp= XkbAtomGetString(old_names->symbols);
 	    names->symbols= _XkbDupString(tmp);
 	    complete|= XkmSymbolsMask; 
 	}
 	if (wantNames&XkmKeyNamesMask) {
 	   if (old_names->keycodes!=None) {
-		tmp= XkbAtomGetString(dpy,old_names->keycodes);
+		tmp= XkbAtomGetString(old_names->keycodes);
 		names->keycodes= _XkbDupString(tmp);
 	    }
 	    else wantDflts|= XkmKeyNamesMask;
@@ -267,7 +266,7 @@ XkbFileInfo	finfo;
 	if (wantNames&XkmGeometryMask) {
 	    if (old_names->geometry==None)
 		return False;
-	    tmp= XkbAtomGetString(dpy,old_names->geometry);
+	    tmp= XkbAtomGetString(old_names->geometry);
 	    names->geometry= _XkbDupString(tmp);
 	    complete|= XkmGeometryMask; 
 	    wantNames&= ~XkmGeometryMask;
diff --git a/xkb/xkbgeom.h b/xkb/xkbgeom.h
index a6918b4..173affe 100644
--- a/xkb/xkbgeom.h
+++ b/xkb/xkbgeom.h
@@ -599,13 +599,6 @@ XkbAllocGeometry(
 	XkbGeometrySizesPtr	/* sizes */
 );
 
-extern	Status
-XkbSetGeometry(
-	Display *		/* dpy */,
-	unsigned		/* deviceSpec */,
-	XkbGeometryPtr		/* geom */
-);
-
 extern	Bool
 XkbComputeShapeTop(
 	XkbShapePtr		/* shape */,
@@ -637,19 +630,6 @@ XkbFindOverlayForKey(
 	char *			/* under */
 );
 
-extern	Status
-XkbGetGeometry(
-    Display *			/* dpy */,
-    XkbDescPtr			/* xkb */
-);
-
-extern	Status
-XkbGetNamedGeometry(
-    Display *			/* dpy */,
-    XkbDescPtr			/* xkb */,
-    Atom			/* name */
-);
-
 _XFUNCPROTOEND
 
 #endif /* _XKBGEOM_H_ */
diff --git a/xkb/xkbout.c b/xkb/xkbout.c
index fc4e43e..b72c05c 100644
--- a/xkb/xkbout.c
+++ b/xkb/xkbout.c
@@ -52,7 +52,7 @@
 #define	VMOD_COMMENT_VALUE 2
 
 static Bool
-WriteXKBVModDecl(FILE *file,Display *dpy,XkbDescPtr xkb,int showValue)
+WriteXKBVModDecl(FILE *file,XkbDescPtr xkb,int showValue)
 {
 register int 	i,nMods;
 Atom *		vmodNames;
@@ -67,7 +67,7 @@ Atom *		vmodNames;
 	if ((vmodNames!=NULL)&&(vmodNames[i]!=None)) {
 	    if (nMods==0)	fprintf(file,"    virtual_modifiers ");
 	    else		fprintf(file,",");
-	    fprintf(file,"%s",XkbAtomText(dpy,vmodNames[i],XkbXKBFile));
+	    fprintf(file,"%s",XkbAtomText(vmodNames[i],XkbXKBFile));
 	    if ((showValue!=VMOD_HIDE_VALUE)&&
 		(xkb->server)&&(xkb->server->vmods[i]!=XkbNoModifierMask)) {
 		if (showValue==VMOD_COMMENT_VALUE) {
@@ -92,12 +92,7 @@ Atom *		vmodNames;
 static Bool
 WriteXKBAction(FILE *file,XkbFileInfo *result,XkbAnyAction *action)
 {
-XkbDescPtr	xkb;
-Display *	dpy;
-
-    xkb= result->xkb;
-    dpy= xkb->dpy;
-    fprintf(file,"%s",XkbActionText(dpy,xkb,(XkbAction *)action,XkbXKBFile));
+    fprintf(file,"%s",XkbActionText(result->xkb,(XkbAction *)action,XkbXKBFile));
     return True;
 }
 
@@ -114,11 +109,9 @@ XkbWriteXKBKeycodes(	FILE *			file,
 Atom			kcName;
 register unsigned 	i;
 XkbDescPtr		xkb;
-Display *		dpy;
 char *			alternate;
 
     xkb= result->xkb;
-    dpy= xkb->dpy;
     if ((!xkb)||(!xkb->names)||(!xkb->names->keys)) {
 	_XkbLibError(_XkbErrMissingNames,"XkbWriteXKBKeycodes",0);
 	return False;
@@ -126,7 +119,7 @@ char *			alternate;
     kcName= xkb->names->keycodes;
     if (kcName!=None)
 	 fprintf(file,"xkb_keycodes \"%s\" {\n",
-					XkbAtomText(dpy,kcName,XkbXKBFile));
+					XkbAtomText(kcName,XkbXKBFile));
     else fprintf(file,"xkb_keycodes {\n");
     fprintf(file,"    minimum = %d;\n",xkb->min_key_code);
     fprintf(file,"    maximum = %d;\n",xkb->max_key_code);
@@ -148,7 +141,7 @@ char *			alternate;
 	    else	type= "    virtual ";
 	    if (xkb->names->indicators[i]!=None) {
 		fprintf(file,"%sindicator %d = \"%s\";\n",type,i+1,
-			XkbAtomText(dpy,xkb->names->indicators[i],XkbXKBFile));
+			XkbAtomText(xkb->names->indicators[i],XkbXKBFile));
 	    }
 	}
     }
@@ -175,14 +168,12 @@ XkbWriteXKBKeyTypes(	FILE *			file,
 			XkbFileAddOnFunc	addOn,
 			void *			priv)
 {
-Display *		dpy;
 register unsigned	i,n;
 XkbKeyTypePtr		type;
 XkbKTMapEntryPtr	entry;
 XkbDescPtr		xkb;
 
     xkb= result->xkb;
-    dpy= xkb->dpy;
     if ((!xkb)||(!xkb->map)||(!xkb->map->types)) {
 	_XkbLibError(_XkbErrMissingTypes,"XkbWriteXKBKeyTypes",0);
 	return False;
@@ -194,27 +185,27 @@ XkbDescPtr		xkb;
     if ((xkb->names==NULL)||(xkb->names->types==None))
 	 fprintf(file,"xkb_types {\n\n");
     else fprintf(file,"xkb_types \"%s\" {\n\n",
-			XkbAtomText(dpy,xkb->names->types,XkbXKBFile));
-    WriteXKBVModDecl(file,dpy,xkb,
+			XkbAtomText(xkb->names->types,XkbXKBFile));
+    WriteXKBVModDecl(file,xkb,
 			(showImplicit?VMOD_COMMENT_VALUE:VMOD_HIDE_VALUE));
 
     type= xkb->map->types;
     for (i=0;i<xkb->map->num_types;i++,type++) {
 	fprintf(file,"    type \"%s\" {\n",
-		XkbAtomText(dpy,type->name,XkbXKBFile));
+		XkbAtomText(type->name,XkbXKBFile));
 	fprintf(file,"        modifiers= %s;\n",
-	       XkbVModMaskText(dpy,xkb,type->mods.real_mods,type->mods.vmods,
+	       XkbVModMaskText(xkb,type->mods.real_mods,type->mods.vmods,
 								XkbXKBFile));
 	entry= type->map;
 	for (n=0;n<type->map_count;n++,entry++) {
 	    char *str;	
-	    str=XkbVModMaskText(dpy,xkb,entry->mods.real_mods,entry->mods.vmods,
+	    str=XkbVModMaskText(xkb,entry->mods.real_mods,entry->mods.vmods,
 								XkbXKBFile);
 	    fprintf(file,"        map[%s]= Level%d;\n",str,entry->level+1);
 	    if ((type->preserve)&&((type->preserve[n].real_mods)||
 				   (type->preserve[n].vmods))) {
 		fprintf(file,"        preserve[%s]= ",str);
-		fprintf(file,"%s;\n",XkbVModMaskText(dpy,xkb,
+		fprintf(file,"%s;\n",XkbVModMaskText(xkb,
 					type->preserve[n].real_mods,
 					type->preserve[n].vmods,
 					XkbXKBFile));
@@ -226,7 +217,7 @@ XkbDescPtr		xkb;
 		if ((*name)==None)
 		    continue;
 		fprintf(file,"        level_name[Level%d]= \"%s\";\n",n+1,
-					XkbAtomText(dpy,*name,XkbXKBFile));
+					XkbAtomText(*name,XkbXKBFile));
 	    }
 	}
 	fprintf(file,"    };\n");
@@ -248,7 +239,7 @@ WriteXKBIndicatorMap(	FILE *			file,
 XkbDescPtr	xkb;
 
     xkb= result->xkb;
-    fprintf(file,"    indicator \"%s\" {\n",XkbAtomGetString(xkb->dpy,name));
+    fprintf(file,"    indicator \"%s\" {\n",XkbAtomGetString(name));
     if (led->flags&XkbIM_NoExplicit)
 	fprintf(file,"        !allowExplicit;\n");
     if (led->flags&XkbIM_LEDDrivesKB)
@@ -266,7 +257,7 @@ XkbDescPtr	xkb;
 			XkbIMWhichStateMaskText(led->which_mods,XkbXKBFile));
 	}
 	fprintf(file,"        modifiers= %s;\n",
-			XkbVModMaskText(xkb->dpy,xkb,
+			XkbVModMaskText(xkb,
 					led->mods.real_mods,led->mods.vmods,
 					XkbXKBFile));
     }
@@ -288,13 +279,11 @@ XkbWriteXKBCompatMap(	FILE *			file,
 			XkbFileAddOnFunc	addOn,
 			void *			priv)
 {
-Display *		dpy;
 register unsigned	i;
 XkbSymInterpretPtr	interp;
 XkbDescPtr		xkb;
 
     xkb= result->xkb;
-    dpy= xkb->dpy;
     if ((!xkb)||(!xkb->compat)||(!xkb->compat->sym_interpret)) {
 	_XkbLibError(_XkbErrMissingCompatMap,"XkbWriteXKBCompatMap",0);
 	return False;
@@ -302,8 +291,8 @@ XkbDescPtr		xkb;
     if ((xkb->names==NULL)||(xkb->names->compat==None))
 	 fprintf(file,"xkb_compatibility {\n\n");
     else fprintf(file,"xkb_compatibility \"%s\" {\n\n",
-			XkbAtomText(dpy,xkb->names->compat,XkbXKBFile));
-    WriteXKBVModDecl(file,dpy,xkb,
+			XkbAtomText(xkb->names->compat,XkbXKBFile));
+    WriteXKBVModDecl(file,xkb,
 			(showImplicit?VMOD_COMMENT_VALUE:VMOD_HIDE_VALUE));
 
     fprintf(file,"    interpret.useModMapMods= AnyLevel;\n");
@@ -318,7 +307,7 @@ XkbDescPtr		xkb;
 				XkbModMaskText(interp->mods,XkbXKBFile));
 	if (interp->virtual_mod!=XkbNoModifier) {
 	    fprintf(file,"        virtualModifier= %s;\n",
-		XkbVModIndexText(dpy,xkb,interp->virtual_mod,XkbXKBFile));
+		XkbVModIndexText(xkb,interp->virtual_mod,XkbXKBFile));
 	}
 	if (interp->match&XkbSI_LevelOneOnly)
 	    fprintf(file,"        useModMapMods=level1;\n");
@@ -337,7 +326,7 @@ XkbDescPtr		xkb;
 	gc= &xkb->compat->groups[i];
 	if ((gc->real_mods==0)&&(gc->vmods==0))
 	    continue;
-	fprintf(file,"    group %d = %s;\n",i+1,XkbVModMaskText(xkb->dpy,xkb,
+	fprintf(file,"    group %d = %s;\n",i+1,XkbVModMaskText(xkb,
 							gc->real_mods,gc->vmods,
 							XkbXKBFile));
     }
@@ -367,7 +356,6 @@ XkbWriteXKBSymbols(	FILE *			file,
 			XkbFileAddOnFunc	addOn,
 			void *			priv)
 {
-Display *		dpy;
 register unsigned	i,tmp;
 XkbDescPtr		xkb;
 XkbClientMapPtr		map;
@@ -377,7 +365,6 @@ Bool			showActions;
     xkb= result->xkb;
     map= xkb->map;
     srv= xkb->server;
-    dpy= xkb->dpy;
     if ((!xkb)||(!map)||(!map->syms)||(!map->key_sym_map)) {
 	_XkbLibError(_XkbErrMissingSymbols,"XkbWriteXKBSymbols",0);
 	return False;
@@ -389,11 +376,11 @@ Bool			showActions;
     if ((xkb->names==NULL)||(xkb->names->symbols==None))
 	 fprintf(file,"xkb_symbols {\n\n");
     else fprintf(file,"xkb_symbols \"%s\" {\n\n",
-			XkbAtomText(dpy,xkb->names->symbols,XkbXKBFile));
+			XkbAtomText(xkb->names->symbols,XkbXKBFile));
     for (tmp=i=0;i<XkbNumKbdGroups;i++) {
 	if (xkb->names->groups[i]!=None) {
 	    fprintf(file,"    name[group%d]=\"%s\";\n",i+1,
-			XkbAtomText(dpy,xkb->names->groups[i],XkbXKBFile));
+			XkbAtomText(xkb->names->groups[i],XkbXKBFile));
 	    tmp++;
 	}
     }
@@ -429,19 +416,19 @@ Bool			showActions;
 			if (srv->explicit[i]&(1<<g)) {
 			    fprintf(file,"\n%s      type[group%d]= \"%s\",",
 			    	comment,g+1,
-				XkbAtomText(dpy,map->types[typeNdx].name,
+				XkbAtomText(map->types[typeNdx].name,
 			    	XkbXKBFile));
 			}
 			else if (showImplicit) {
 			    fprintf(file,"\n//      type[group%d]= \"%s\",",g+1,
-				XkbAtomText(dpy,map->types[typeNdx].name,
+				XkbAtomText(map->types[typeNdx].name,
 			    	XkbXKBFile));
 			}
 		    }
 		}
 		else {
 		    fprintf(file,"\n%s      type= \"%s\",",comment,
-				XkbAtomText(dpy,map->types[typeNdx].name,
+				XkbAtomText(map->types[typeNdx].name,
 			    	XkbXKBFile));
 		}
 		simple= False;
@@ -457,13 +444,13 @@ Bool			showActions;
 					(xkb->server->vmodmap[i]!=0)) {
 		if ((srv->explicit[i]&XkbExplicitVModMapMask)!=0) {
 		    fprintf(file,"\n        virtualMods= %s,",
-				XkbVModMaskText(dpy,xkb,0,
+				XkbVModMaskText(xkb,0,
 						xkb->server->vmodmap[i],
 						XkbXKBFile));
 		}
 		else if (showImplicit) {
 		    fprintf(file,"\n//      virtualMods= %s,",
-				XkbVModMaskText(dpy,xkb,0,
+				XkbVModMaskText(xkb,0,
 						xkb->server->vmodmap[i],
 						XkbXKBFile));
 		}
@@ -603,7 +590,6 @@ char *		iStr;
 
 static Bool
 WriteXKBDoodad(	FILE *		file,
-		Display *	dpy,
 		unsigned	indent,
 		XkbGeometryPtr	geom,
 		XkbDoodadPtr	doodad)
@@ -615,7 +601,7 @@ XkbColorPtr	color;
     i_str= XkbIndentText(indent);
     fprintf(file,"%s%s \"%s\" {\n",i_str,
 				XkbDoodadTypeText(doodad->any.type,XkbMessage),
-				XkbAtomText(dpy,doodad->any.name,XkbMessage));
+				XkbAtomText(doodad->any.name,XkbMessage));
     fprintf(file,"%s    top=      %s;\n",i_str,
 				 XkbGeomFPText(doodad->any.top,XkbXKBFile));
     fprintf(file,"%s    left=     %s;\n",i_str,
@@ -634,7 +620,7 @@ XkbColorPtr	color;
 	    }
 	    shape= XkbShapeDoodadShape(geom,&doodad->shape);
 	    fprintf(file,"%s    shape= \"%s\";\n",i_str,
-			    XkbAtomText(dpy,shape->name,XkbXKBFile));
+			    XkbAtomText(shape->name,XkbXKBFile));
 	    break;
 	case XkbTextDoodad:
 	    if (doodad->text.angle!=0) {
@@ -670,7 +656,7 @@ XkbColorPtr	color;
 	    fprintf(file,"%s    offColor= \"%s\";\n",i_str,
 	    		    XkbStringText(color->spec,XkbXKBFile));
 	    fprintf(file,"%s    shape= \"%s\";\n",i_str,
-			     XkbAtomText(dpy,shape->name,XkbXKBFile));
+			     XkbAtomText(shape->name,XkbXKBFile));
 	    break;
 	case XkbLogoDoodad:
 	    fprintf(file,"%s    logoName= \"%s\";\n",i_str,
@@ -685,7 +671,7 @@ XkbColorPtr	color;
 	    }
 	    shape= XkbLogoDoodadShape(geom,&doodad->logo);
 	    fprintf(file,"%s    shape= \"%s\";\n",i_str,
-			    XkbAtomText(dpy,shape->name,XkbXKBFile));
+			    XkbAtomText(shape->name,XkbXKBFile));
 	    break;
     }
     fprintf(file,"%s};\n",i_str);
@@ -695,7 +681,6 @@ XkbColorPtr	color;
 /*ARGSUSED*/
 static Bool
 WriteXKBOverlay(	FILE *		file,
-			Display *	dpy,
 			unsigned	indent,
 			XkbGeometryPtr	geom,
 			XkbOverlayPtr	ol)
@@ -708,7 +693,7 @@ XkbOverlayKeyPtr	key;
     i_str= XkbIndentText(indent);
     if (ol->name!=None) {
 	 fprintf(file,"%soverlay \"%s\" {\n",i_str,
-    					XkbAtomText(dpy,ol->name,XkbMessage));
+    					XkbAtomText(ol->name,XkbMessage));
     }
     else fprintf(file,"%soverlay {\n",i_str);
     for (nOut=r=0,row=ol->rows;r<ol->num_rows;r++,row++) {
@@ -730,7 +715,6 @@ XkbOverlayKeyPtr	key;
 
 static Bool
 WriteXKBSection(	FILE *		file,
-			Display *	dpy,
 			XkbSectionPtr 	s,
 			XkbGeometryPtr	geom)
 {
@@ -739,7 +723,7 @@ XkbRowPtr	row;
 int		dfltKeyColor = 0;
 
     fprintf(file,"    section \"%s\" {\n",
-				XkbAtomText(dpy,s->name,XkbXKBFile));
+				XkbAtomText(s->name,XkbXKBFile));
     if (s->rows&&(s->rows->num_keys>0)) {
 	dfltKeyColor= s->rows->keys[0].color_ndx;
 	fprintf(file,"        key.color= \"%s\";\n",
@@ -788,7 +772,7 @@ int		dfltKeyColor = 0;
 		shape= XkbKeyShape(geom,key);
 		fprintf(file,"{ %6s, \"%s\", %3s",
 		      XkbKeyNameText(key->name.name,XkbXKBFile),
-		      XkbAtomText(dpy,shape->name,XkbXKBFile),
+		      XkbAtomText(shape->name,XkbXKBFile),
 		      XkbGeomFPText(key->gap,XkbXKBFile));
 		if (key->color_ndx!=dfltKeyColor) {
 		    fprintf(file,", color=\"%s\"",XkbKeyColor(geom,key)->spec);
@@ -803,17 +787,17 @@ int		dfltKeyColor = 0;
     if (s->doodads!=NULL) {
 	XkbDoodadPtr	doodad;
 	for (i=0,doodad=s->doodads;i<s->num_doodads;i++,doodad++) {
-	    WriteXKBDoodad(file,dpy,8,geom,doodad);
+	    WriteXKBDoodad(file,8,geom,doodad);
 	}
     }
     if (s->overlays!=NULL) {
 	XkbOverlayPtr	ol;
 	for (i=0,ol=s->overlays;i<s->num_overlays;i++,ol++) {
-	    WriteXKBOverlay(file,dpy,8,geom,ol);
+	    WriteXKBOverlay(file,8,geom,ol);
 	}
     }
     fprintf(file,"    }; // End of \"%s\" section\n\n",
-				XkbAtomText(dpy,s->name,XkbXKBFile));
+				XkbAtomText(s->name,XkbXKBFile));
     return True;
 }
 
@@ -825,7 +809,6 @@ XkbWriteXKBGeometry(	FILE *			file,
 			XkbFileAddOnFunc	addOn,
 			void *			priv)
 {
-Display *		dpy;
 register unsigned	i,n;
 XkbDescPtr		xkb;
 XkbGeometryPtr		geom;
@@ -835,12 +818,11 @@ XkbGeometryPtr		geom;
 	_XkbLibError(_XkbErrMissingGeometry,"XkbWriteXKBGeometry",0);
  	return False;
     }
-    dpy= xkb->dpy;
     geom= xkb->geom;
     if (geom->name==None)
 	 fprintf(file,"xkb_geometry {\n\n");
     else fprintf(file,"xkb_geometry \"%s\" {\n\n",
-				XkbAtomText(dpy,geom->name,XkbXKBFile));
+				XkbAtomText(geom->name,XkbXKBFile));
     fprintf(file,"    width=       %s;\n",
 				XkbGeomFPText(geom->width_mm,XkbXKBFile));
     fprintf(file,"    height=      %s;\n\n",
@@ -889,7 +871,7 @@ XkbGeometryPtr		geom;
 	for (shape=geom->shapes,i=0;i<geom->num_shapes;i++,shape++) {
 	    lastR=0;
 	    fprintf(file,"    shape \"%s\" {",
-				   XkbAtomText(dpy,shape->name,XkbXKBFile));
+				   XkbAtomText(shape->name,XkbXKBFile));
 	    outline= shape->outlines;
 	    if (shape->num_outlines>1) {
 		for (n=0;n<shape->num_outlines;n++,outline++) {
@@ -909,13 +891,13 @@ XkbGeometryPtr		geom;
     if (geom->num_sections>0) {
 	XkbSectionPtr	section;
 	for (section=geom->sections,i=0;i<geom->num_sections;i++,section++){
-	    WriteXKBSection(file,dpy,section,geom);
+	    WriteXKBSection(file,section,geom);
 	}
     }
     if (geom->num_doodads>0) {
 	XkbDoodadPtr	doodad;
 	for (i=0,doodad=geom->doodads;i<geom->num_doodads;i++,doodad++) {
-	    WriteXKBDoodad(file,dpy,4,geom,doodad);
+	    WriteXKBDoodad(file,4,geom,doodad);
 	}
     }
     if (addOn)
diff --git a/xkb/xkbtext.c b/xkb/xkbtext.c
index 1520a9f..d08c915 100644
--- a/xkb/xkbtext.c
+++ b/xkb/xkbtext.c
@@ -69,11 +69,11 @@ char *rtrn;
 /***====================================================================***/
 
 char *
-XkbAtomText(Display *dpy,Atom atm,unsigned format)
+XkbAtomText(Atom atm,unsigned format)
 {
 char	*rtrn,*tmp;
 
-    tmp= XkbAtomGetString(dpy,atm);
+    tmp= XkbAtomGetString(atm);
     if (tmp!=NULL) {
 	int	len;
 	len= strlen(tmp)+1;
@@ -101,7 +101,7 @@ char	*rtrn,*tmp;
 /***====================================================================***/
 
 char *
-XkbVModIndexText(Display *dpy,XkbDescPtr xkb,unsigned ndx,unsigned format)
+XkbVModIndexText(XkbDescPtr xkb,unsigned ndx,unsigned format)
 {
 register int len;
 register Atom *vmodNames;
@@ -116,7 +116,7 @@ char  numBuf[20];
     if (ndx>=XkbNumVirtualMods)
 	 tmp= "illegal";
     else if (vmodNames&&(vmodNames[ndx]!=None))
-	 tmp= XkbAtomGetString(dpy,vmodNames[ndx]);
+	 tmp= XkbAtomGetString(vmodNames[ndx]);
     if (tmp==NULL)
 	sprintf(tmp=numBuf,"%d",ndx);
 
@@ -135,8 +135,7 @@ char  numBuf[20];
 }
 
 char *
-XkbVModMaskText(	Display *	dpy,
-			XkbDescPtr	xkb,
+XkbVModMaskText(        XkbDescPtr	xkb,
 			unsigned	modMask,
 			unsigned	mask,
 			unsigned	format)
@@ -163,7 +162,7 @@ char *str,buf[BUFFER_SIZE];
 	char *tmp;
 	for (i=0,bit=1;i<XkbNumVirtualMods;i++,bit<<=1) {
 	    if (mask&bit) {
-		tmp= XkbVModIndexText(dpy,xkb,i,format);
+		tmp= XkbVModIndexText(xkb,i,format);
 		len= strlen(tmp)+1+(str==buf?0:1);
 		if (format==XkbCFile)
 		    len+= 4;
@@ -667,13 +666,13 @@ register int len;
 
 /*ARGSUSED*/
 static Bool
-CopyNoActionArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int*sz)
+CopyNoActionArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int*sz)
 {
     return True;
 }
 
 static Bool
-CopyModActionArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+CopyModActionArgs(XkbDescPtr xkb,XkbAction *action,char *buf,
 								int* sz)
 {
 XkbModAction *	act;
@@ -686,7 +685,7 @@ unsigned	tmp;
 	  TryCopyStr(buf,"modMapMods",sz);
     else if (act->real_mods || tmp) {
 	 TryCopyStr(buf,
-		     XkbVModMaskText(dpy,xkb,act->real_mods,tmp,XkbXKBFile),
+		     XkbVModMaskText(xkb,act->real_mods,tmp,XkbXKBFile),
 		     sz);
     }
     else TryCopyStr(buf,"none",sz);
@@ -701,7 +700,7 @@ unsigned	tmp;
 
 /*ARGSUSED*/
 static Bool
-CopyGroupActionArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+CopyGroupActionArgs(XkbDescPtr xkb,XkbAction *action,char *buf,
 								int *sz)
 {
 XkbGroupAction *	act;
@@ -726,7 +725,7 @@ char			tbuf[32];
 
 /*ARGSUSED*/
 static Bool
-CopyMovePtrArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int *sz)
+CopyMovePtrArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int *sz)
 {
 XkbPtrAction *	act;
 int		x,y;
@@ -751,7 +750,7 @@ char		tbuf[32];
 
 /*ARGSUSED*/
 static Bool
-CopyPtrBtnArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int *sz)
+CopyPtrBtnArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int *sz)
 {
 XkbPtrBtnAction *	act;
 char			tbuf[32];
@@ -785,7 +784,7 @@ char			tbuf[32];
 
 /*ARGSUSED*/
 static Bool
-CopySetPtrDfltArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+CopySetPtrDfltArgs(XkbDescPtr xkb,XkbAction *action,char *buf,
 								int *sz)
 {
 XkbPtrDfltAction *	act;
@@ -803,7 +802,7 @@ char			tbuf[32];
 }
 
 static Bool
-CopyISOLockArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int *sz)
+CopyISOLockArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int *sz)
 {
 XkbISOAction *	act;
 char		tbuf[64];
@@ -831,7 +830,7 @@ char		tbuf[64];
 		    TryCopyStr(buf,"+",sz);
 	    }
 	    if (tmp)
-		TryCopyStr(buf,XkbVModMaskText(dpy,xkb,0,tmp,XkbXKBFile),sz);
+		TryCopyStr(buf,XkbVModMaskText(xkb,0,tmp,XkbXKBFile),sz);
 	}
 	else TryCopyStr(buf,"none",sz);
     }
@@ -865,7 +864,7 @@ char		tbuf[64];
 
 /*ARGSUSED*/
 static Bool
-CopySwitchScreenArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+CopySwitchScreenArgs(XkbDescPtr xkb,XkbAction *action,char *buf,
 								int *sz)
 {
 XkbSwitchScreenAction *	act;
@@ -884,7 +883,7 @@ char			tbuf[32];
 
 /*ARGSUSED*/
 static Bool
-CopySetLockControlsArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,
+CopySetLockControlsArgs(XkbDescPtr xkb,XkbAction *action,
 							char *buf,int *sz)
 {
 XkbCtrlsAction *	act;
@@ -971,7 +970,7 @@ char			tbuf[32];
 
 /*ARGSUSED*/
 static Bool
-CopyActionMessageArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+CopyActionMessageArgs(XkbDescPtr xkb,XkbAction *action,char *buf,
 								int *sz)
 {
 XkbMessageAction *	act;
@@ -998,7 +997,7 @@ char			tbuf[32];
 }
 
 static Bool
-CopyRedirectKeyArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+CopyRedirectKeyArgs(XkbDescPtr xkb,XkbAction *action,char *buf,
 								int *sz)
 {
 XkbRedirectKeyAction *	act;
@@ -1022,19 +1021,19 @@ unsigned		vmods,vmods_mask;
 	return True;
     if ((act->mods_mask==XkbAllModifiersMask)&&
 	(vmods_mask==XkbAllVirtualModsMask)) {
-	tmp= XkbVModMaskText(dpy,xkb,act->mods,vmods,XkbXKBFile);
+	tmp= XkbVModMaskText(xkb,act->mods,vmods,XkbXKBFile);
 	TryCopyStr(buf,",mods=",sz);
 	TryCopyStr(buf,tmp,sz);
     }
     else {
 	if ((act->mods_mask&act->mods)||(vmods_mask&vmods)) {
-	    tmp= XkbVModMaskText(dpy,xkb,act->mods_mask&act->mods,
+	    tmp= XkbVModMaskText(xkb,act->mods_mask&act->mods,
 					 vmods_mask&vmods,XkbXKBFile);
 	    TryCopyStr(buf,",mods= ",sz);
 	    TryCopyStr(buf,tmp,sz);
 	}
 	if ((act->mods_mask&(~act->mods))||(vmods_mask&(~vmods))) {
-	    tmp= XkbVModMaskText(dpy,xkb,act->mods_mask&(~act->mods),
+	    tmp= XkbVModMaskText(xkb,act->mods_mask&(~act->mods),
 					 vmods_mask&(~vmods),XkbXKBFile);
 	    TryCopyStr(buf,",clearMods= ",sz);
 	    TryCopyStr(buf,tmp,sz);
@@ -1045,7 +1044,7 @@ unsigned		vmods,vmods_mask;
 
 /*ARGSUSED*/
 static Bool
-CopyDeviceBtnArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,
+CopyDeviceBtnArgs(XkbDescPtr xkb,XkbAction *action,char *buf,
 								int *sz)
 {
 XkbDeviceBtnAction *	act;
@@ -1078,7 +1077,7 @@ char			tbuf[32];
 
 /*ARGSUSED*/
 static Bool
-CopyOtherArgs(Display *dpy,XkbDescPtr xkb,XkbAction *action,char *buf,int *sz)
+CopyOtherArgs(XkbDescPtr xkb,XkbAction *action,char *buf,int *sz)
 {
 XkbAnyAction *	act;
 char		tbuf[32];
@@ -1096,7 +1095,6 @@ char		tbuf[32];
 }
 
 typedef	Bool	(*actionCopy)(
-	Display *	/* dpy */,
 	XkbDescPtr 	/* xkb */,
 	XkbAction *	/* action */,
 	char *		/* buf */,
@@ -1128,7 +1126,7 @@ static actionCopy	copyActionArgs[XkbSA_NumActions] = {
 #define	ACTION_SZ	256
 
 char *
-XkbActionText(Display *dpy,XkbDescPtr xkb,XkbAction *action,unsigned format)
+XkbActionText(XkbDescPtr xkb,XkbAction *action,unsigned format)
 {
 char	buf[ACTION_SZ],*tmp;
 int	sz;
@@ -1145,8 +1143,8 @@ int	sz;
 	sprintf(buf,"%s(",XkbActionTypeText(action->type,XkbXKBFile));
 	sz= ACTION_SZ-strlen(buf)+2; /* room for close paren and NULL */
 	if (action->type<(unsigned)XkbSA_NumActions)
-	     (*copyActionArgs[action->type])(dpy,xkb,action,buf,&sz);
-	else CopyOtherArgs(dpy,xkb,action,buf,&sz);
+	     (*copyActionArgs[action->type])(xkb,action,buf,&sz);
+	else CopyOtherArgs(xkb,action,buf,&sz);
 	TryCopyStr(buf,")",&sz);
     }
     tmp= tbGetBuffer(strlen(buf)+1);
diff --git a/xkb/xkmread.c b/xkb/xkmread.c
index 2bb0289..1e5b2cb 100644
--- a/xkb/xkmread.c
+++ b/xkb/xkmread.c
@@ -44,7 +44,7 @@
 #include "xkbgeom.h"
 
 Atom
-XkbInternAtom(Display *dpy,char *str,Bool only_if_exists)
+XkbInternAtom(char *str,Bool only_if_exists)
 {
     if (str==NULL)
 	return None;
@@ -66,18 +66,18 @@ char *new;
 
 /***====================================================================***/
 
-static XPointer
-XkmInsureSize(XPointer oldPtr,int oldCount,int *newCountRtrn,int elemSize)
+static void *
+XkmInsureSize(void *oldPtr,int oldCount,int *newCountRtrn,int elemSize)
 {
 int	newCount= *newCountRtrn;
 
     if (oldPtr==NULL) {
 	if (newCount==0)
 	    return NULL;
-	oldPtr= (XPointer)_XkbCalloc(newCount,elemSize);
+	oldPtr= _XkbCalloc(newCount,elemSize);
     }
     else if (oldCount<newCount) {
-	oldPtr= (XPointer)_XkbRealloc(oldPtr,newCount*elemSize);
+	oldPtr= _XkbRealloc(oldPtr,newCount*elemSize);
 	if (oldPtr!=NULL) {
 	    char *tmp= (char *)oldPtr;
 	    bzero(&tmp[oldCount*elemSize],(newCount-oldCount)*elemSize);
@@ -197,7 +197,7 @@ XkbDescPtr	xkb;
 	char name[100];
 	if (named&bit) {
 	    if (nRead+=XkmGetCountedString(file,name,100)) {
-		xkb->names->vmods[i]= XkbInternAtom(xkb->dpy,name,False);
+		xkb->names->vmods[i]= XkbInternAtom(name,False);
 		if (changes)
 		    changes->names.changed_vmods|= bit;
 	    }
@@ -244,7 +244,7 @@ XkbDescPtr	xkb;
 	return -1;
     }
     if (name[0]!='\0') {
-	xkb->names->keycodes= XkbInternAtom(xkb->dpy,name,False);
+	xkb->names->keycodes= XkbInternAtom(name,False);
     }
 
     for (pN=&xkb->names->keys[minKC],i=minKC;i<=(int)maxKC;i++,pN++) {
@@ -300,7 +300,7 @@ XkbDescPtr		xkb;
 	    _XkbLibError(_XkbErrBadAlloc,"ReadXkmKeyTypes",0);
 	    return -1;
         }
-	xkb->names->types= XkbInternAtom(xkb->dpy,buf,False);
+	xkb->names->types= XkbInternAtom(buf,False);
     }
     num_types= XkmGetCARD16(file,&nRead);
     nRead+= XkmSkipPadding(file,2);
@@ -355,7 +355,7 @@ XkbDescPtr		xkb;
 	   return -1;
 	}
 	if (buf[0]!='\0') {
-	     type->name= XkbInternAtom(xkb->dpy,buf,False);
+	     type->name= XkbInternAtom(buf,False);
 	}
 	else type->name= None;
 
@@ -393,7 +393,7 @@ XkbDescPtr		xkb;
 		    nRead+= tmp;
 		    if (strlen(buf)==0)
 			 type->level_names[n]= None;
-		    else type->level_names[n]= XkbInternAtom(xkb->dpy,buf,0);
+		    else type->level_names[n]= XkbInternAtom(buf,0);
 		}
 	    }
 	}
@@ -437,7 +437,7 @@ XkbCompatMapPtr		compat;
 	    _XkbLibError(_XkbErrBadAlloc,"ReadXkmCompatMap",0);
 	    return -1;
 	}
-	xkb->names->compat= XkbInternAtom(xkb->dpy,name,False);
+	xkb->names->compat= XkbInternAtom(name,False);
     }
     num_si= XkmGetCARD16(file,&nRead);
     groups= XkmGetCARD8(file,&nRead);
@@ -523,7 +523,7 @@ XkbDescPtr		xkb;
 	}
 	nRead+= tmp;
 	if (buf[0]!='\0')
-	     name= XkbInternAtom(xkb->dpy,buf,False);
+	     name= XkbInternAtom(buf,False);
 	else name= None;
 	if ((tmp=fread(&wire,SIZEOF(xkmIndicatorMapDesc),1,file))<1) {
 	    _XkbLibError(_XkbErrBadLength,"ReadXkmIndicators",0);
@@ -600,7 +600,7 @@ XkbDescPtr		xkb;
     }
     if ((buf[0]!='\0')&&(xkb->names)) {
 	Atom name;
-	name= XkbInternAtom(xkb->dpy,buf,0);
+	name= XkbInternAtom(buf,0);
 	xkb->names->symbols= name;
 	xkb->names->phys_symbols= name;
     }
@@ -611,7 +611,7 @@ XkbDescPtr		xkb;
 	    nRead+= tmp;
 	    if ((buf[0]!='\0')&&(xkb->names)) {
 		Atom name;
-		name= XkbInternAtom(xkb->dpy,buf,0);
+		name= XkbInternAtom(buf,0);
 		xkb->names->groups[i]= name;
 	    }	
 	    else xkb->names->groups[i]= None;
@@ -654,7 +654,7 @@ XkbDescPtr		xkb;
 	    for (g=0;g<XkbNumKbdGroups;g++) {
 		if ((wireMap.flags&(1<<g))&&
 			((tmp=XkmGetCountedString(file,buf,100))>0)) {
-		    typeName[g]= XkbInternAtom(xkb->dpy,buf,1);
+		    typeName[g]= XkbInternAtom(buf,1);
 		    nRead+= tmp;
 		}
 		type[g]=FindTypeForKey(xkb,typeName[g],wireMap.width,NULL);
@@ -732,7 +732,6 @@ XkbDescPtr		xkb;
 static int
 ReadXkmGeomDoodad(
     FILE *		file,
-    Display *		dpy,
     XkbGeometryPtr	geom,
     XkbSectionPtr	section)
 {
@@ -745,7 +744,7 @@ int		nRead=0;
     nRead+= XkmGetCountedString(file,buf,100);
     tmp= fread(&doodadWire,SIZEOF(xkmDoodadDesc),1,file);
     nRead+= SIZEOF(xkmDoodadDesc)*tmp;
-    doodad= XkbAddGeomDoodad(geom,section,XkbInternAtom(dpy,buf,False));
+    doodad= XkbAddGeomDoodad(geom,section,XkbInternAtom(buf,False));
     if (!doodad)
 	return nRead;
     doodad->any.type= doodadWire.any.type;
@@ -790,7 +789,6 @@ int		nRead=0;
 
 static int
 ReadXkmGeomOverlay(	FILE *		file,
-			Display *	dpy,
 			XkbGeometryPtr	geom,
 			XkbSectionPtr	section)
 {
@@ -806,7 +804,7 @@ register int		r;
     nRead+= XkmGetCountedString(file,buf,100);
     tmp= fread(&olWire,SIZEOF(xkmOverlayDesc),1,file);
     nRead+= tmp*SIZEOF(xkmOverlayDesc);
-    ol= XkbAddGeomOverlay(section,XkbInternAtom(dpy,buf,False),
+    ol= XkbAddGeomOverlay(section,XkbInternAtom(buf,False),
     							olWire.num_rows);
     if (!ol)
 	return nRead;
@@ -833,7 +831,6 @@ register int		r;
 
 static int
 ReadXkmGeomSection(	FILE *		file,
-			Display *	dpy,
 			XkbGeometryPtr	geom)
 {
 register int	i;
@@ -845,7 +842,7 @@ char		buf[100];
 Atom		nameAtom;
 
     nRead+= XkmGetCountedString(file,buf,100);
-    nameAtom= XkbInternAtom(dpy,buf,False);
+    nameAtom= XkbInternAtom(buf,False);
     tmp= fread(&sectionWire,SIZEOF(xkmSectionDesc),1,file);
     nRead+= SIZEOF(xkmSectionDesc)*tmp;
     section= XkbAddGeomSection(geom,nameAtom,sectionWire.num_rows,
@@ -896,7 +893,7 @@ Atom		nameAtom;
     }
     if (sectionWire.num_doodads>0) {
 	for (i=0;i<sectionWire.num_doodads;i++) {
-	    tmp= ReadXkmGeomDoodad(file,dpy,geom,section);
+	    tmp= ReadXkmGeomDoodad(file,geom,section);
 	    nRead+= tmp;
 	    if (tmp<1)
 		return nRead;
@@ -904,7 +901,7 @@ Atom		nameAtom;
     }
     if (sectionWire.num_overlays>0) {
 	for (i=0;i<sectionWire.num_overlays;i++) {
-	    tmp= ReadXkmGeomOverlay(file,dpy,geom,section);
+	    tmp= ReadXkmGeomOverlay(file,geom,section);
 	    nRead+= tmp;
 	    if (tmp<1)
 		return nRead;
@@ -939,7 +936,7 @@ XkbGeometrySizesRec	sizes;
 	return nRead;
     }
     geom= result->xkb->geom;
-    geom->name= XkbInternAtom(result->xkb->dpy,buf,False);
+    geom->name= XkbInternAtom(buf,False);
     geom->width_mm= wireGeom.width_mm;
     geom->height_mm= wireGeom.height_mm;
     nRead+= XkmGetCountedString(file,buf,100);
@@ -975,7 +972,7 @@ XkbGeometrySizesRec	sizes;
 	    XkbOutlinePtr	ol;
 	    xkmOutlineDesc	olWire;
 	    nRead+= XkmGetCountedString(file,buf,100);
-	    nameAtom= XkbInternAtom(result->xkb->dpy,buf,False);
+	    nameAtom= XkbInternAtom(buf,False);
 	    tmp= fread(&shapeWire,SIZEOF(xkmShapeDesc),1,file);
 	    nRead+= tmp*SIZEOF(xkmShapeDesc);
 	    shape= XkbAddGeomShape(geom,nameAtom,shapeWire.num_outlines);
@@ -1014,7 +1011,7 @@ XkbGeometrySizesRec	sizes;
     }
     if (wireGeom.num_sections>0) {
 	for (i=0;i<wireGeom.num_sections;i++) {
-	    tmp= ReadXkmGeomSection(file,result->xkb->dpy,geom);
+	    tmp= ReadXkmGeomSection(file,geom);
 	    nRead+= tmp;
 	    if (tmp==0)
 		return nRead;
@@ -1022,7 +1019,7 @@ XkbGeometrySizesRec	sizes;
     }
     if (wireGeom.num_doodads>0) {
 	for (i=0;i<wireGeom.num_doodads;i++) {
-	    tmp= ReadXkmGeomDoodad(file,result->xkb->dpy,geom,NULL);
+	    tmp= ReadXkmGeomDoodad(file,geom,NULL);
 	    nRead+= tmp;
 	    if (tmp==0)
 		return nRead;
commit 534fc5140b039a8c98ab715d0a6740d513b41209
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Sun Feb 3 23:30:22 2008 +1100

    XKB: Remove a bunch of mad ifdefs
    
    We have SEEK_SET and size_t, seriously.  Also use DebugF instead of
    ifdef DEBUG, and ditch a couple of random bits that were never used.

diff --git a/xkb/XKBGAlloc.c b/xkb/XKBGAlloc.c
index 7a75d20..94072b8 100644
--- a/xkb/XKBGAlloc.c
+++ b/xkb/XKBGAlloc.c
@@ -39,12 +39,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include <xkbsrv.h>
 #include "xkbgeom.h"
 
-#ifdef X_NOT_POSIX
-#define Size_t unsigned int
-#else
-#define Size_t size_t
-#endif
-
 /***====================================================================***/
 
 static void 
@@ -465,7 +459,7 @@ _XkbGeomAlloc(	XPointer *		old,
 		unsigned short *	num,
 		unsigned short *	total,
 		int			num_new,
-		Size_t			sz_elem)
+		size_t			sz_elem)
 {
     if (num_new<1)
 	return Success;
diff --git a/xkb/XKBMAlloc.c b/xkb/XKBMAlloc.c
index 9feaf8e..178b5b8 100644
--- a/xkb/XKBMAlloc.c
+++ b/xkb/XKBMAlloc.c
@@ -55,10 +55,8 @@ XkbClientMapPtr map;
 	((!XkbIsLegalKeycode(xkb->min_key_code))||
 	 (!XkbIsLegalKeycode(xkb->max_key_code))||
 	 (xkb->max_key_code<xkb->min_key_code))) {
-#ifdef DEBUG
-fprintf(stderr,"bad keycode (%d,%d) in XkbAllocClientMap\n",
+        DebugF("bad keycode (%d,%d) in XkbAllocClientMap\n",
 				xkb->min_key_code,xkb->max_key_code);
-#endif
 	return BadValue;
     }
 
diff --git a/xkb/XKBMisc.c b/xkb/XKBMisc.c
index 0404108..85415a4 100644
--- a/xkb/XKBMisc.c
+++ b/xkb/XKBMisc.c
@@ -416,10 +416,7 @@ unsigned		changed,tmp;
 	if (((explicit&XkbExplicitAutoRepeatMask)==0)&&(xkb->ctrls)) {
 	    CARD8 old;
 	    old= xkb->ctrls->per_key_repeat[key/8];
-#ifdef RETURN_SHOULD_REPEAT
-	    if (*XkbKeySymsPtr(xkb,key) != XK_Return)
-#endif
-		xkb->ctrls->per_key_repeat[key/8]|= (1<<(key%8));
+            xkb->ctrls->per_key_repeat[key/8]|= (1<<(key%8));
 	    if (changes && (old!=xkb->ctrls->per_key_repeat[key/8]))
 		changes->ctrls.changed_ctrls|= XkbPerKeyRepeatMask;
 	}
diff --git a/xkb/ddxBeep.c b/xkb/ddxBeep.c
index 331357d..2faed58 100644
--- a/xkb/ddxBeep.c
+++ b/xkb/ddxBeep.c
@@ -139,10 +139,6 @@ Atom		name;
     next= 0;
     pitch= oldPitch= ctrl->bell_pitch;
     duration= oldDuration= ctrl->bell_duration;
-#ifdef DEBUG
-    if (xkbDebugFlags>1)
-	ErrorF("beep: %d (count= %d)\n",xkbInfo->beepType,xkbInfo->beepCount);
-#endif
     name= None;
     switch (xkbInfo->beepType) {
 	default:
diff --git a/xkb/ddxCtrls.c b/xkb/ddxCtrls.c
index 0f7f918..34ea0bd 100644
--- a/xkb/ddxCtrls.c
+++ b/xkb/ddxCtrls.c
@@ -47,12 +47,6 @@ int realRepeat;
     realRepeat= ctrl->autoRepeat;
     if ((dev->kbdfeed)&&(XkbDDXUsesSoftRepeat(dev)))
 	ctrl->autoRepeat= 0;
-#ifdef DEBUG
-if (xkbDebugFlags&0x4) {
-    ErrorF("XkbDDXKeybdCtrlProc: setting repeat to %d (real repeat is %d)\n",
-					ctrl->autoRepeat,realRepeat);
-}
-#endif
     if (dev->key && dev->key->xkbInfo && dev->key->xkbInfo->kbdProc)
 	(*dev->key->xkbInfo->kbdProc)(dev,ctrl);
     ctrl->autoRepeat= realRepeat;
@@ -93,23 +87,6 @@ unsigned	changed, i;
 unsigned 	char *rep_old, *rep_new, *rep_fb;
 
     changed= new->enabled_ctrls^old->enabled_ctrls;
-#ifdef NOTDEF
-    if (changed&XkbRepeatKeysMask) {
-	if (dev->kbdfeed) {
-	    int realRepeat;
-
-	    if (new->enabled_ctrls&XkbRepeatKeysMask)
-		 dev->kbdfeed->ctrl.autoRepeat= realRepeat= 1;
-	    else dev->kbdfeed->ctrl.autoRepeat= realRepeat= 0;
-
-	    if (XkbDDXUsesSoftRepeat(dev))
-		dev->kbdfeed->ctrl.autoRepeat= FALSE;
-	    if (dev->kbdfeed->CtrlProc)
-		(*dev->kbdfeed->CtrlProc)(dev,&dev->kbdfeed->ctrl);
-	    dev->kbdfeed->ctrl.autoRepeat= realRepeat;
-	}
-    }
-#endif
     for (rep_old = old->per_key_repeat,
          rep_new = new->per_key_repeat,
 	 rep_fb  = dev->kbdfeed->ctrl.autoRepeats,
diff --git a/xkb/ddxKeyClick.c b/xkb/ddxKeyClick.c
index f48296d..51d78f5 100644
--- a/xkb/ddxKeyClick.c
+++ b/xkb/ddxKeyClick.c
@@ -42,9 +42,5 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 void
 XkbDDXKeyClick(DeviceIntPtr pXDev,int keycode,int synthetic)
 {
-#ifdef DEBUG
-    if (xkbDebugFlags)
-	ErrorF("Click.\n");
-#endif
     return;
 }
diff --git a/xkb/ddxList.c b/xkb/ddxList.c
index a91a9ba..80e0505 100644
--- a/xkb/ddxList.c
+++ b/xkb/ddxList.c
@@ -43,14 +43,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include <xkbsrv.h>
 #include <X11/extensions/XI.h>
 
-#ifndef PATH_MAX
-#ifdef MAXPATHLEN
-#define	PATH_MAX MAXPATHLEN
-#else
-#define	PATH_MAX 1024
-#endif
-#endif
-
 #ifdef WIN32
 /* from ddxLoad.c */
 extern const char* Win32TempDir();
@@ -199,9 +191,8 @@ char	tmpname[PATH_MAX];
 #ifndef WIN32
 	in= Popen(buf,"r");
 #else
-#ifdef DEBUG_CMD
-	ErrorF("xkb executes: %s\n",buf);
-#endif
+        if (xkbDebugFlags)
+            DebugF("xkbList executes: %s\n",buf);
 	if (System(buf) < 0)
 	    ErrorF("Could not invoke keymap compiler\n");
 	else
diff --git a/xkb/ddxLoad.c b/xkb/ddxLoad.c
index d79ae7a..6312226 100644
--- a/xkb/ddxLoad.c
+++ b/xkb/ddxLoad.c
@@ -52,14 +52,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include <paths.h>
 #endif
 
-#ifndef PATH_MAX
-#ifdef MAXPATHLEN
-#define	PATH_MAX MAXPATHLEN
-#else
-#define	PATH_MAX 1024
-#endif
-#endif
-
 	/*
 	 * If XKM_OUTPUT_DIR specifies a path without a leading slash, it is
 	 * relative to the top-level XKB configuration directory.
@@ -161,44 +153,19 @@ Win32System(const char *cmdline)
 #define System(x) Win32System(x)
 #endif
 
-#ifdef MAKE_XKM_OUTPUT_DIR
-/* Borrow trans_mkdir from Xtransutil.c to more safely make directories */
-# undef X11_t
-# define TRANS_SERVER
-# define PRMSG(lvl,x,a,b,c) \
-	if (lvl <= 1) { LogMessage(X_ERROR,x,a,b,c); } else ((void)0)
-# include <X11/Xtrans/Xtransutil.c>
-# ifndef XKM_OUTPUT_DIR_MODE
-#  define XKM_OUTPUT_DIR_MODE 0755
-# endif
-#endif
-
 static void
 OutputDirectory(
     char* outdir,
     size_t size)
 {
 #ifndef WIN32
-    if (getuid() == 0 && (strlen(XKM_OUTPUT_DIR) < size)
-#ifdef MAKE_XKM_OUTPUT_DIR    
-	&& (trans_mkdir(XKM_OUTPUT_DIR, XKM_OUTPUT_DIR_MODE) == 0)
-#endif
-	)
+    if (getuid() == 0 && (strlen(XKM_OUTPUT_DIR) < size))
     {
 	/* if server running as root it *may* be able to write */
 	/* FIXME: check whether directory is writable at all */
 	(void) strcpy (outdir, XKM_OUTPUT_DIR);
     } else
-#endif
-#ifdef _PATH_VARTMP
-    if ((strlen(_PATH_VARTMP) + 1) < size) 
-    {
-	(void) strcpy (outdir, _PATH_VARTMP);
-	if (outdir[strlen(outdir) - 1] != '/')	/* Hi IBM, Digital */
-	    (void) strcat (outdir, "/");
-    } else
-#endif
-#ifdef WIN32
+#else
     if (strlen(Win32TempDir()) + 1 < size)
     {
 	(void) strcpy(outdir, Win32TempDir());
@@ -256,15 +223,10 @@ char 	*cmd = NULL,file[PATH_MAX],xkm_output_dir[PATH_MAX],*map,*outFile;
 		PRE_ERROR_MSG,ERROR_PREFIX,POST_ERROR_MSG1,file,
 		xkm_output_dir,outFile);
     }
-#ifdef DEBUG
     if (xkbDebugFlags) {
-	ErrorF("XkbDDXCompileNamedKeymap compiling keymap using:\n");
-	ErrorF("    \"cmd\"\n");
+	DebugF("XkbDDXCompileNamedKeymap compiling keymap using:\n");
+	DebugF("    \"cmd\"\n");
     }
-#endif
-#ifdef DEBUG_CMD
-    ErrorF("xkb executes: %s\n",cmd);
-#endif
     if (System(cmd)==0) {
 	if (nameRtrn) {
 	    strncpy(nameRtrn,outFile,nameRtrnLen);
@@ -276,9 +238,7 @@ char 	*cmd = NULL,file[PATH_MAX],xkm_output_dir[PATH_MAX],*map,*outFile;
             xfree(cmd);
 	return True;
     } 
-#ifdef DEBUG
-    ErrorF("Error compiling keymap (%s)\n",names->keymap);
-#endif
+    DebugF("Error compiling keymap (%s)\n",names->keymap);
     if (outFile!=NULL)
 	_XkbFree(outFile);
     if (cmd!=NULL)
@@ -371,12 +331,8 @@ char tmpname[PATH_MAX];
 	if (fclose(out)==0 && System(buf) >= 0)
 #endif
 	{
-#ifdef DEBUG_CMD
-	    ErrorF("xkb executes: %s\n",buf);
-	    ErrorF("xkbcomp input:\n");
-	    XkbWriteXKBKeymapForNames(stderr,names,NULL,xkb,want,need);
-	    ErrorF("end xkbcomp input\n");
-#endif
+            if (xkbDebugFlags)
+                DebugF("xkb executes: %s\n",buf);
 	    if (nameRtrn) {
 		strncpy(nameRtrn,keymap,nameRtrnLen);
 		nameRtrn[nameRtrnLen-1]= '\0';
@@ -385,24 +341,20 @@ char tmpname[PATH_MAX];
                 xfree (buf);
 	    return True;
 	}
-#ifdef DEBUG
 	else
-	    ErrorF("Error compiling keymap (%s)\n",keymap);
-#endif
+	    DebugF("Error compiling keymap (%s)\n",keymap);
 #ifdef WIN32
         /* remove the temporary file */
         unlink(tmpname);
 #endif
     }
-#ifdef DEBUG
     else {
 #ifndef WIN32
-	ErrorF("Could not invoke keymap compiler\n");
+	DebugF("Could not invoke keymap compiler\n");
 #else
-	ErrorF("Could not open file %s\n", tmpname);
+	DebugF("Could not open file %s\n", tmpname);
 #endif
     }
-#endif
     if (nameRtrn)
 	nameRtrn[0]= '\0';
     if (buf != NULL)
@@ -477,17 +429,13 @@ unsigned	missing;
 	    return 0;
 	}
 	else if (!XkbDDXCompileNamedKeymap(xkb,names,nameRtrn,nameRtrnLen)) {
-#ifdef NOISY
-	    ErrorF("Couldn't compile keymap file\n");
-#endif
+	    DebugF("Couldn't compile keymap file\n");
 	    return 0;
 	}
     }
     else if (!XkbDDXCompileKeymapByNames(xkb,names,want,need,
 						nameRtrn,nameRtrnLen)){
-#ifdef NOISY
-	ErrorF("Couldn't compile keymap file\n");
-#endif
+	DebugF("Couldn't compile keymap file\n");
 	return 0;
     }
     file= XkbDDXOpenConfigFile(nameRtrn,fileName,PATH_MAX);
@@ -502,11 +450,9 @@ unsigned	missing;
 	(void) unlink (fileName);
 	return 0;
     }
-#ifdef DEBUG
     else if (xkbDebugFlags) {
-	ErrorF("Loaded %s, defined=0x%x\n",fileName,finfoRtrn->defined);
+	DebugF("Loaded XKB keymap %s, defined=0x%x\n",fileName,finfoRtrn->defined);
     }
-#endif
     fclose(file);
     (void) unlink (fileName);
     return (need|want)&(~missing);
diff --git a/xkb/maprules.c b/xkb/maprules.c
index 52a1cdc..72e642f 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -50,16 +50,6 @@
 #define XKBSRV_NEED_FILE_FUNCS
 #include <xkbsrv.h>
 
-#ifdef DEBUG
-#define PR_DEBUG(s)		fprintf(stderr,s)
-#define PR_DEBUG1(s,a)		fprintf(stderr,s,a)
-#define PR_DEBUG2(s,a,b)	fprintf(stderr,s,a,b)
-#else
-#define PR_DEBUG(s)
-#define PR_DEBUG1(s,a)
-#define PR_DEBUG2(s,a,b)
-#endif
-
 /***====================================================================***/
 
 #define DFLT_LINE_SIZE	128
@@ -171,8 +161,8 @@ Bool	endOfFile,spacePending,slashPending,inComment;
 		}
 		if (checkbang && ch=='!') {
 		    if (line->num_line!=0) {
-			PR_DEBUG("The '!' legal only at start of line\n");
-			PR_DEBUG("Line containing '!' ignored\n");
+			DebugF("The '!' legal only at start of line\n");
+			DebugF("Line containing '!' ignored\n");
 			line->num_line= 0;
 			inComment= 0;
 			break;
@@ -273,9 +263,7 @@ unsigned	present, l_ndx_present, v_ndx_present;
 register int	i;
 int		len, ndx;
 _Xstrtokparams	strtok_buf;
-#ifdef DEBUG
 Bool		found;
-#endif
 
 
    l_ndx_present = v_ndx_present = present= 0;
@@ -284,9 +272,7 @@ Bool		found;
    bzero((char *)remap,sizeof(RemapSpec));
    remap->number = len;
    while ((tok=_XStrtok(str," ",strtok_buf))!=NULL) {
-#ifdef DEBUG
 	found= False;
-#endif
 	str= NULL;
 	if (strcmp(tok,"=")==0)
 	    continue;
@@ -299,22 +285,20 @@ Bool		found;
 			*end != '\0' || ndx == -1)
 		        break;
 		     if (ndx < 1 || ndx > XkbNumKbdGroups) {
-		        PR_DEBUG2("Illegal %s index: %d\n", cname[i], ndx);
-		        PR_DEBUG1("Index must be in range 1..%d\n",
+		        DebugF("Illegal %s index: %d\n", cname[i], ndx);
+		        DebugF("Index must be in range 1..%d\n",
 				   XkbNumKbdGroups);
 			break;
 		     }
                 } else {
 		    ndx = 0;
                 }
-#ifdef DEBUG
 		found= True;
-#endif
 		if (present&(1<<i)) {
 		    if ((i == LAYOUT && l_ndx_present&(1<<ndx)) ||
 			(i == VARIANT && v_ndx_present&(1<<ndx)) ) {
-		        PR_DEBUG1("Component \"%s\" listed twice\n",tok);
-		        PR_DEBUG("Second definition ignored\n");
+		        DebugF("Component \"%s\" listed twice\n",tok);
+		        DebugF("Second definition ignored\n");
 		        break;
 		    }
 		}
@@ -328,38 +312,34 @@ Bool		found;
 		break;
 	    }
 	}
-#ifdef DEBUG
 	if (!found) {
 	    fprintf(stderr,"Unknown component \"%s\" ignored\n",tok);
 	}
-#endif
    }
    if ((present&PART_MASK)==0) {
-#ifdef DEBUG
 	unsigned mask= PART_MASK;
-	fprintf(stderr,"Mapping needs at least one of ");
+	ErrorF("Mapping needs at least one of ");
 	for (i=0; (i<MAX_WORDS); i++) {
 	    if ((1L<<i)&mask) {
 		mask&= ~(1L<<i);
-		if (mask)	fprintf(stderr,"\"%s,\" ",cname[i]);
-		else		fprintf(stderr,"or \"%s\"\n",cname[i]);
+		if (mask)	DebugF("\"%s,\" ",cname[i]);
+		else		DebugF("or \"%s\"\n",cname[i]);
 	    }
 	}
-	fprintf(stderr,"Illegal mapping ignored\n");
-#endif
+	DebugF("Illegal mapping ignored\n");
 	remap->num_remap= 0;
 	return;
    }
    if ((present&COMPONENT_MASK)==0) {
-	PR_DEBUG("Mapping needs at least one component\n");
-	PR_DEBUG("Illegal mapping ignored\n");
+	DebugF("Mapping needs at least one component\n");
+	DebugF("Illegal mapping ignored\n");
 	remap->num_remap= 0;
 	return;
    }
    if (((present&COMPONENT_MASK)&(1<<KEYMAP))&&
 				((present&COMPONENT_MASK)!=(1<<KEYMAP))) {
-	PR_DEBUG("Keymap cannot appear with other components\n");
-	PR_DEBUG("Illegal mapping ignored\n");
+	DebugF("Keymap cannot appear with other components\n");
+	DebugF("Illegal mapping ignored\n");
 	remap->num_remap= 0;
 	return;
    }
@@ -434,8 +414,8 @@ Bool 		append = False;
     }
 
     if (remap->num_remap==0) {
-	PR_DEBUG("Must have a mapping before first line of data\n");
-	PR_DEBUG("Illegal line of data ignored\n");
+	DebugF("Must have a mapping before first line of data\n");
+	DebugF("Illegal line of data ignored\n");
 	return False;
     }
     bzero((char *)&tmp,sizeof(FileSpec));
@@ -447,8 +427,8 @@ Bool 		append = False;
 	    continue;
 	}
 	if (nread>remap->num_remap) {
-	    PR_DEBUG("Too many words on a line\n");
-	    PR_DEBUG1("Extra word \"%s\" ignored\n",tok);
+	    DebugF("Too many words on a line\n");
+	    DebugF("Extra word \"%s\" ignored\n",tok);
 	    continue;
 	}
 	tmp.name[remap->remap[nread].word]= tok;
@@ -456,8 +436,8 @@ Bool 		append = False;
 	    append = True;
     }
     if (nread<remap->num_remap) {
-	PR_DEBUG1("Too few words on a line: %s\n", line->line);
-	PR_DEBUG("line ignored\n");
+	DebugF("Too few words on a line: %s\n", line->line);
+	DebugF("line ignored\n");
 	return False;
     }
 
@@ -903,9 +883,7 @@ XkbRF_AddRule(XkbRF_RulesPtr	rules)
     }
     if (!rules->rules) {
 	rules->sz_rules= rules->num_rules= 0;
-#ifdef DEBUG
-	fprintf(stderr,"Allocation failure in XkbRF_AddRule\n");
-#endif
+	DebugF("Allocation failure in XkbRF_AddRule\n");
 	return NULL;
     }
     bzero((char *)&rules->rules[rules->num_rules],sizeof(XkbRF_RuleRec));
@@ -1022,7 +1000,7 @@ XkbRF_AddVarDesc(XkbRF_DescribeVarsPtr	vars)
     }
     if (!vars->desc) {
 	vars->sz_desc= vars->num_desc= 0;
-	PR_DEBUG("Allocation failure in XkbRF_AddVarDesc\n");
+	DebugF("Allocation failure in XkbRF_AddVarDesc\n");
 	return NULL;
     }
     vars->desc[vars->num_desc].name= NULL;
@@ -1059,7 +1037,7 @@ XkbRF_AddVarToDescribe(XkbRF_RulesPtr rules,char *name)
 							XkbRF_DescribeVarsRec);
     }
     if ((!rules->extra_names)||(!rules->extra)) {
-	PR_DEBUG("allocation error in extra parts\n");
+	DebugF("allocation error in extra parts\n");
 	rules->sz_extra= rules->num_extra= 0;
 	rules->extra_names= NULL;
 	rules->extra= NULL;
@@ -1102,7 +1080,7 @@ int			len,headingtype,extra_ndx = 0;
 		}
 		if (extra_ndx<0) {
 		    XkbRF_DescribeVarsPtr	var;
-		    PR_DEBUG1("Extra heading \"%s\" encountered\n",tok);
+		    DebugF("Extra heading \"%s\" encountered\n",tok);
 		    var= XkbRF_AddVarToDescribe(rules,tok);
 		    if (var)
 			 extra_ndx= var-rules->extra;
@@ -1113,20 +1091,20 @@ int			len,headingtype,extra_ndx = 0;
 	}
 
 	if (headingtype == HEAD_NONE) {
-	    PR_DEBUG("Must have a heading before first line of data\n");
-	    PR_DEBUG("Illegal line of data ignored\n");
+	    DebugF("Must have a heading before first line of data\n");
+	    DebugF("Illegal line of data ignored\n");
 	    continue;
 	}
 
 	len = strlen(line.line);
 	if ((tmp.name= strtok(line.line, " \t")) == NULL) {
-	    PR_DEBUG("Huh? No token on line\n");
-	    PR_DEBUG("Illegal line of data ignored\n");
+	    DebugF("Huh? No token on line\n");
+	    DebugF("Illegal line of data ignored\n");
 	    continue;
 	}
 	if (strlen(tmp.name) == len) {
-	    PR_DEBUG("No description found\n");
-	    PR_DEBUG("Illegal line of data ignored\n");
+	    DebugF("No description found\n");
+	    DebugF("Illegal line of data ignored\n");
 	    continue;
 	}
 
@@ -1134,8 +1112,8 @@ int			len,headingtype,extra_ndx = 0;
 	while ((*tok!='\n')&&isspace(*tok))
 		tok++;
 	if (*tok == '\0') {
-	    PR_DEBUG("No description found\n");
-	    PR_DEBUG("Illegal line of data ignored\n");
+	    DebugF("No description found\n");
+	    DebugF("Illegal line of data ignored\n");
 	    continue;
 	}
 	tmp.desc= tok;
diff --git a/xkb/xkb.c b/xkb/xkb.c
index 66edcc1..bd9a87c 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -5784,10 +5784,8 @@ char *			str;
 	    return status;
     }
     else if (length!=0)  {
-#ifdef DEBUG
 	ErrorF("Internal Error!  BadLength in ProcXkbGetDeviceInfo\n");
 	ErrorF("                 Wrote %d fewer bytes than expected\n",length);
-#endif
 	return BadLength;
     }
     if (stuff->wanted&(~supported)) {
diff --git a/xkb/xkbAccessX.c b/xkb/xkbAccessX.c
index d95fbcd..75b8c5a 100644
--- a/xkb/xkbAccessX.c
+++ b/xkb/xkbAccessX.c
@@ -130,11 +130,9 @@ xEvent		xE;
     xE.u.u.type = type;
     xE.u.u.detail = keyCode;
     xE.u.keyButtonPointer.time = GetTimeInMillis();	    
-#ifdef DEBUG
     if (xkbDebugFlags&0x8) {
-	ErrorF("AXKE: Key %d %s\n",keyCode,(xE.u.u.type==KeyPress?"down":"up"));
+	DebugF("AXKE: Key %d %s\n",keyCode,(xE.u.u.type==KeyPress?"down":"up"));
     }
-#endif
 
     if (_XkbIsPressEvent(type))
 	XkbDDXKeyClick(keybd,keyCode,TRUE);
@@ -533,10 +531,8 @@ KeySym *	sym = XkbKeySymsPtr(xkbi->desc,key);
 		((ctrls->enabled_ctrls&(XkbSlowKeysMask|XkbRepeatKeysMask))==
 							XkbRepeatKeysMask)) {
 	    if (BitIsOn(keybd->kbdfeed->ctrl.autoRepeats,key)) {
-#ifdef DEBUG
 		if (xkbDebugFlags&0x10)
-		    ErrorF("Starting software autorepeat...\n");
-#endif	    
+		    DebugF("Starting software autorepeat...\n");
 		xkbi->repeatKey = key;
 		xkbi->repeatKeyTimer= TimerSet(xkbi->repeatKeyTimer,
 					0, ctrls->repeat_delay,
diff --git a/xkb/xkbEvents.c b/xkb/xkbEvents.c
index 7643703..49725d0 100644
--- a/xkb/xkbEvents.c
+++ b/xkb/xkbEvents.c
@@ -813,23 +813,21 @@ XkbSrvInfoPtr	xkbi;
 
     xkbi= pXDev->key->xkbInfo;
     if ( pClient->xkbClientFlags & _XkbClientInitialized ) {
-#ifdef DEBUG
 	if ((xkbDebugFlags&0x10)&&
 		((xE[0].u.u.type==KeyPress)||(xE[0].u.u.type==KeyRelease)||
                  (xE[0].u.u.type==DeviceKeyPress)||
                  (xE[0].u.u.type == DeviceKeyRelease))) {
-	    ErrorF("XKbFilterWriteEvents:\n");
-	    ErrorF("   Event state= 0x%04x\n",xE[0].u.keyButtonPointer.state);
-	    ErrorF("   XkbLastRepeatEvent!=xE (0x%p!=0x%p) %s\n",
+	    DebugF("XKbFilterWriteEvents:\n");
+	    DebugF("   Event state= 0x%04x\n",xE[0].u.keyButtonPointer.state);
+	    DebugF("   XkbLastRepeatEvent!=xE (0x%p!=0x%p) %s\n",
 			XkbLastRepeatEvent,xE,
 			((XkbLastRepeatEvent!=(pointer)xE)?"True":"False"));
-	    ErrorF("   (xkbClientEventsFlags&XWDA)==0 (0x%x) %s\n",
+	    DebugF("   (xkbClientEventsFlags&XWDA)==0 (0x%x) %s\n",
 		pClient->xkbClientFlags,
 		(_XkbWantsDetectableAutoRepeat(pClient)?"True":"False"));
-	    ErrorF("   !IsRelease(%d) %s\n",xE[0].u.u.type,
+	    DebugF("   !IsRelease(%d) %s\n",xE[0].u.u.type,
 			(!_XkbIsReleaseEvent(xE[0].u.u.type))?"True":"False");
 	}
-#endif /* DEBUG */
 	if (	(XkbLastRepeatEvent==(pointer)xE) &&
 	     	(_XkbWantsDetectableAutoRepeat(pClient)) &&
 	     	(_XkbIsReleaseEvent(xE[0].u.u.type)) ) {
@@ -866,13 +864,11 @@ XkbSrvInfoPtr	xkbi;
 	if (xE[0].u.u.type == ButtonPress &&
 	    ((xE[0].u.keyButtonPointer.state >> 7) & button_mask) == button_mask &&
 	    (xkbi->lockedPtrButtons & button_mask) == button_mask) {
-#ifdef DEBUG
 	    /* If the MouseKeys is pressed, and the "real" mouse is also pressed
 	     * when the mouse is released, the server does not behave properly.
 	     * Faking a release of the button here solves the problem.
 	     */
-	    ErrorF("Faking release of button %d\n", xE[0].u.u.detail);
-#endif
+	    DebugF("Faking release of button %d\n", xE[0].u.u.detail);
 	    XkbDDXFakePointerButton(ButtonRelease, xE[0].u.u.detail);
         }
     }
@@ -881,21 +877,19 @@ XkbSrvInfoPtr	xkbi;
 
 	for (i=0;i<nEvents;i++) {
 	    type= xE[i].u.u.type;
-#ifdef DEBUG
 	    if ((xkbDebugFlags&0x4)&&
 		((xE[i].u.u.type==KeyPress)||(xE[i].u.u.type==KeyRelease)||
                  (xE[i].u.u.type==DeviceKeyPress)||
                  (xE[i].u.u.type == DeviceKeyRelease))) {
 		XkbStatePtr s= &xkbi->state;
-		ErrorF("XKbFilterWriteEvents (non-XKB):\n");
-		ErrorF("event= 0x%04x\n",xE[i].u.keyButtonPointer.state);
-		ErrorF("lookup= 0x%02x, grab= 0x%02x\n",s->lookup_mods,
+		DebugF("XKbFilterWriteEvents (non-XKB):\n");
+		DebugF("event= 0x%04x\n",xE[i].u.keyButtonPointer.state);
+		DebugF("lookup= 0x%02x, grab= 0x%02x\n",s->lookup_mods,
 							s->grab_mods);
-		ErrorF("compat lookup= 0x%02x, grab= 0x%02x\n",
+		DebugF("compat lookup= 0x%02x, grab= 0x%02x\n",
 							s->compat_lookup_mods,
 							s->compat_grab_mods);
 	    }
-#endif
 	    if ( (type>=KeyPress)&&(type<=MotionNotify) ) {
 		CARD16	old,new;
 
@@ -924,16 +918,12 @@ XkbSrvInfoPtr	xkbi;
 	    if (type == ButtonPress &&
 		((xE[i].u.keyButtonPointer.state >> 7) & button_mask) == button_mask &&
 		(xkbi->lockedPtrButtons & button_mask) == button_mask) {
-#ifdef DEBUG
-		ErrorF("Faking release of button %d\n", xE[i].u.u.detail);
-#endif
+		DebugF("Faking release of button %d\n", xE[i].u.u.detail);
 		XkbDDXFakePointerButton(ButtonRelease, xE[i].u.u.detail);
 	    } else if (type == DeviceButtonPress &&
                     ((((deviceKeyButtonPointer*)&xE[i])->state >> 7) & button_mask) == button_mask &&
                     (xkbi->lockedPtrButtons & button_mask) == button_mask) {
-#ifdef DEBUG
-		ErrorF("Faking release of button %d\n", ((deviceKeyButtonPointer*)&xE[i])->state);
-#endif
+		DebugF("Faking release of button %d\n", ((deviceKeyButtonPointer*)&xE[i])->state);
 		XkbDDXFakePointerButton(DeviceButtonRelease, ((deviceKeyButtonPointer*)&xE[i])->state);
             }
 	}
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
index bb1de9d..2ac51f2 100644
--- a/xkb/xkbInit.c
+++ b/xkb/xkbInit.c
@@ -280,10 +280,6 @@ XkbSetRulesDflts(char *rulesFile,char *model,char *layout,
 
 /***====================================================================***/
 
-#if defined(luna)
-#define	XKB_DDX_PERMANENT_LOCK	1
-#endif
-
 #include "xkbDflts.h"
 
 static Bool
@@ -390,15 +386,6 @@ Atom		unknown;
 	    names->indicators[LED_COMPOSE-1] = CREATE_ATOM("Compose");
 #endif
     }
-#ifdef DEBUG_RADIO_GROUPS
-    if (names->num_rg<1) {
-	names->radio_groups= (Atom *)_XkbCalloc(RG_COUNT, sizeof(Atom));
-	if (names->radio_groups) {
-	    names->num_rg = RG_COUNT;
-	    names->radio_groups[RG_BOGUS_FUNCTION_GROUP]= CREATE_ATOM("BOGUS");
-	}
-    }
-#endif
     if (xkb->geom!=NULL)
 	 names->geometry= xkb->geom->name;
     else names->geometry= unknown;
@@ -771,9 +758,7 @@ XkbSrvLedInfoPtr	sli;
     sli= XkbFindSrvLedInfo(pXDev,XkbDfltXIClass,XkbDfltXIId,0);
     if (sli && xkbi)
 	XkbCheckIndicatorMaps(xkbi->device,sli,XkbAllIndicatorsMask);
-#ifdef DEBUG
-    else ErrorF("No indicator feedback in XkbFinishInit (shouldn't happen)!\n");
-#endif
+    else DebugF("No indicator feedback in XkbFinishInit (shouldn't happen)!\n");
     return softRepeat;
 }
 
diff --git a/xkb/xkbPrKeyEv.c b/xkb/xkbPrKeyEv.c
index 3fec4f5..69c218c 100644
--- a/xkb/xkbPrKeyEv.c
+++ b/xkb/xkbPrKeyEv.c
@@ -56,11 +56,9 @@ int             xiEvent;
     xkbi= keyc->xkbInfo;
     key= xE->u.u.detail;
     xiEvent= (xE->u.u.type & EXTENSION_EVENT_BASE);
-#ifdef DEBUG
     if (xkbDebugFlags&0x8) {
-	ErrorF("XkbPKE: Key %d %s\n",key,(xE->u.u.type==KeyPress?"down":"up"));
+	DebugF("XkbPKE: Key %d %s\n",key,(xE->u.u.type==KeyPress?"down":"up"));
     }
-#endif
 
     if ( (xkbi->repeatKey==key) && (xE->u.u.type==KeyRelease) &&
 	 ((xkbi->desc->ctrls->enabled_ctrls&XkbRepeatKeysMask)==0) ) {
diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index 67843e9..28d66b3 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -211,16 +211,6 @@ KeySym			tsyms[XkbMaxSymsPerKey],*syms;
 XkbMapChangesPtr	mc;
 
     xkb= pXDev->key->xkbInfo->desc;
-#ifdef NOTYET
-    if (first<xkb->min_key_code) {
-	if (first>=XkbMinLegalKeyCode) {
-	    xkb->min_key_code= first;
-	    /* 1/12/95 (ef) -- XXX! should zero out the new maps */
-	    changes->map.changed|= XkbKeycodesMask;
-/* generate a NewKeyboard notify here? */
-	}
-    }
-#endif
     if (first+num-1>xkb->max_key_code) {
 	/* 1/12/95 (ef) -- XXX! should allow XKB structures to grow */
 	num= xkb->max_key_code-first+1;
diff --git a/xkb/xkmread.c b/xkb/xkmread.c
index 8829618..2bb0289 100644
--- a/xkb/xkmread.c
+++ b/xkb/xkmread.c
@@ -40,8 +40,7 @@
 #include "misc.h"
 #include "inputstr.h"
 #include "xkbstr.h"
-#define	 XKBSRV_NEED_FILE_FUNCS
-#include <xkbsrv.h>
+#include "xkbsrv.h"
 #include "xkbgeom.h"
 
 Atom
@@ -52,10 +51,6 @@ XkbInternAtom(Display *dpy,char *str,Bool only_if_exists)
     return MakeAtom(str,strlen(str),!only_if_exists);
 }
 
-#ifndef SEEK_SET
-#define	SEEK_SET 0
-#endif
-
 char *
 _XkbDupString(char *str)
 {
@@ -562,10 +557,8 @@ FindTypeForKey(XkbDescPtr xkb,Atom name,unsigned width,KeySym *syms)
 	register unsigned i;
 	for (i=0;i<xkb->map->num_types;i++) {
 	    if (xkb->map->types[i].name==name) {
-#ifdef DEBUG
 		if (xkb->map->types[i].num_levels!=width)
-		    fprintf(stderr,"Group width mismatch between key and type\n");
-#endif
+		    DebugF("Group width mismatch between key and type\n");
 		return &xkb->map->types[i];
 	    }
 	}
@@ -1086,10 +1079,8 @@ unsigned i,size_toc;
     fread(file_info,SIZEOF(xkmFileInfo),1,file);
     size_toc= file_info->num_toc;
     if (size_toc>max_toc) {
-#ifdef DEBUG
-	fprintf(stderr,"Warning! Too many TOC entries; last %d ignored\n",
+	DebugF("Warning! Too many TOC entries; last %d ignored\n",
 							size_toc-max_toc);
-#endif
 	size_toc= max_toc;
     }
     for (i=0;i<size_toc;i++) {
@@ -1227,11 +1218,7 @@ unsigned		which= need|want;
     if (result->xkb==NULL)
 	result->xkb= XkbAllocKeyboard();
     for (i=0;i<fileInfo.num_toc;i++) {
-#ifdef SEEK_SET
 	fseek(file,toc[i].offset,SEEK_SET);
-#else
-	fseek(file,toc[i].offset,0);
-#endif
 	tmp= fread(&tmpTOC,SIZEOF(xkmSectionInfo),1,file);
 	nRead= tmp*SIZEOF(xkmSectionInfo);
 	if ((tmpTOC.type!=toc[i].type)||(tmpTOC.format!=toc[i].format)||
commit 0f12a448dcbbbf1f40aa98d09c9d25ee511c5bbf
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Sun Feb 3 23:15:39 2008 +1100

    XKB: Deprecate XKBSRV_NEED_FILE_FUNCS
    
    There's no point in having the function definitions be conditional, so
    whatever.

diff --git a/include/xkbfile.h b/include/xkbfile.h
new file mode 100644
index 0000000..d58bec6
--- /dev/null
+++ b/include/xkbfile.h
@@ -0,0 +1,480 @@
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be 
+ used in advertising or publicity pertaining to distribution 
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability 
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+ 
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL 
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#ifndef _XKBFILE_H_
+#define	_XKBFILE_H_ 1
+
+/***====================================================================***/
+
+#define	XkbXKMFile	0
+#define	XkbCFile	1
+#define	XkbXKBFile	2
+#define	XkbMessage	3
+
+#define	XkbMapDefined		(1<<0)
+#define	XkbStateDefined		(1<<1)
+
+typedef struct _XkbFileInfo {
+    unsigned		type;
+    unsigned		defined;
+    XkbDescPtr	 	xkb;
+} XkbFileInfo,*XkbFileInfoPtr;
+
+typedef void	(*XkbFileAddOnFunc)(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    int			/* fileSection */,
+    void *		/* priv */
+);
+
+/***====================================================================***/
+
+#define	_XkbSuccess			0
+#define	_XkbErrMissingNames		1
+#define	_XkbErrMissingTypes		2
+#define	_XkbErrMissingReqTypes		3
+#define	_XkbErrMissingSymbols		4
+#define	_XkbErrMissingVMods		5
+#define	_XkbErrMissingIndicators	6
+#define	_XkbErrMissingCompatMap		7
+#define	_XkbErrMissingSymInterps	8
+#define	_XkbErrMissingGeometry		9
+#define	_XkbErrIllegalDoodad		10
+#define	_XkbErrIllegalTOCType		11
+#define	_XkbErrIllegalContents		12
+#define	_XkbErrEmptyFile		13
+#define	_XkbErrFileNotFound		14
+#define	_XkbErrFileCannotOpen		15
+#define	_XkbErrBadValue			16
+#define	_XkbErrBadMatch			17
+#define	_XkbErrBadTypeName		18
+#define	_XkbErrBadTypeWidth		19
+#define	_XkbErrBadFileType		20
+#define	_XkbErrBadFileVersion		21
+#define	_XkbErrBadFileFormat		22
+#define	_XkbErrBadAlloc			23
+#define	_XkbErrBadLength		24
+#define	_XkbErrXReqFailure		25
+#define	_XkbErrBadImplementation	26
+
+extern char *		_XkbErrMessages[];
+extern unsigned		_XkbErrCode;
+extern char *		_XkbErrLocation;
+extern unsigned		_XkbErrData;
+
+/***====================================================================***/
+
+_XFUNCPROTOBEGIN
+
+extern	char *	XkbIndentText(
+    unsigned	/* size */
+);
+
+extern	char *	XkbAtomText(
+    Display *	/* dpy */,
+    Atom 	/* atm */,
+    unsigned	/* format */
+);
+
+extern char *	XkbKeysymText(
+    KeySym	/* sym */,
+    unsigned	/* format */
+);
+
+extern char *	XkbStringText(
+    char *	/* str */,
+    unsigned	/* format */
+);
+
+extern char *	XkbKeyNameText(
+    char *	/* name */,
+    unsigned	/* format */
+);
+
+extern char *
+XkbModIndexText(
+    unsigned	/* ndx */,
+    unsigned	/* format */
+);
+
+extern char *
+XkbModMaskText(
+    unsigned	/* mask */,
+    unsigned	/* format */
+);
+
+extern char *	XkbVModIndexText(
+    Display *	/* dpy */,
+    XkbDescPtr	/* xkb */,
+    unsigned	/* ndx */,
+    unsigned	/* format */
+);
+
+extern	char *	XkbVModMaskText(
+    Display *	/* dpy */,
+    XkbDescPtr	/* xkb */,
+    unsigned	/* modMask */,
+    unsigned	/* mask */,
+    unsigned	/* format */
+);
+
+extern char *	XkbConfigText(
+    unsigned 	/* config */,
+    unsigned 	/* format */
+);
+
+extern char *	XkbSIMatchText(
+    unsigned	/* type */,
+    unsigned	/* format */
+);
+
+extern char *	XkbIMWhichStateMaskText(
+    unsigned	/* use_which */,
+    unsigned	/* format */
+);
+
+extern char *	XkbAccessXDetailText(
+    unsigned	/* state */,
+    unsigned	/* format */
+);
+
+extern char *	XkbNKNDetailMaskText(
+    unsigned	/* detail */,
+    unsigned	/* format */
+);
+
+extern char *	XkbControlsMaskText(
+    unsigned	/* ctrls */,
+    unsigned	/* format */
+);
+
+extern char *	XkbGeomFPText(
+    int		/* val */,
+    unsigned 	/* format */
+);
+
+extern char *	XkbDoodadTypeText(
+    unsigned	/* type */,
+    unsigned	/* format */
+);
+
+extern char *	XkbActionTypeText(
+    unsigned	/* type */,
+    unsigned	/* format */
+);
+
+extern char *	XkbActionText(
+    Display *	/* dpy */,
+    XkbDescPtr	/* xkb */,
+    XkbAction *	/* action */,
+    unsigned	/* format */
+);
+
+extern char *	XkbBehaviorText(
+    XkbDescPtr 		/* xkb */,
+    XkbBehavior *	/* behavior */,
+    unsigned		/* format */
+);
+
+/***====================================================================***/
+
+#define	_XkbKSLower	(1<<0)
+#define	_XkbKSUpper	(1<<1)
+
+#define	XkbKSIsLower(k)		(_XkbKSCheckCase(k)&_XkbKSLower)
+#define	XkbKSIsUpper(k)		(_XkbKSCheckCase(k)&_XkbKSUpper)
+#define XkbKSIsKeypad(k)	(((k)>=XK_KP_Space)&&((k)<=XK_KP_Equal))
+#define	XkbKSIsDeadKey(k)	\
+		(((k)>=XK_dead_grave)&&((k)<=XK_dead_semivoiced_sound))
+
+extern	unsigned _XkbKSCheckCase(
+   KeySym	/* sym */
+);
+
+extern	int	 XkbFindKeycodeByName(
+    XkbDescPtr	/* xkb */,
+    char *	/* name */,
+    Bool	/* use_aliases */
+);
+
+extern	Bool	XkbLookupGroupAndLevel(
+    XkbDescPtr	/* xkb */,
+    int		/* key */,
+    int	*	/* mods_inout */,
+    int *	/* grp_inout */,
+    int	*	/* lvl_rtrn */
+);
+
+/***====================================================================***/
+
+extern	char *	XkbAtomGetString(
+    Display *	/* dpy */,
+    Atom 	/* atm */
+);
+
+extern	Atom	XkbInternAtom(
+    Display *	/* dpy */,
+    char *	/* name */,
+    Bool	/* onlyIfExists */
+);
+
+extern	Status	XkbChangeKbdDisplay(
+    Display *		/* newDpy */,
+    XkbFileInfo *	/* result */
+);
+
+extern	Atom	XkbChangeAtomDisplay(
+    Display *	/* oldDpy */,
+    Display *	/* newDpy */,
+    Atom	/* atm */
+);
+
+extern	void	XkbInitAtoms(
+    Display *	/* dpy */
+);
+
+/***====================================================================***/
+
+#ifdef _XKBGEOM_H_
+
+#define	XkbDW_Unknown	0
+#define	XkbDW_Doodad	1
+#define	XkbDW_Section	2
+typedef struct _XkbDrawable {
+	int		type;
+	int		priority;
+	union {
+	    XkbDoodadPtr	doodad;
+	    XkbSectionPtr	section;
+	} u;
+	struct _XkbDrawable *	next;
+} XkbDrawableRec,*XkbDrawablePtr; 
+
+extern	XkbDrawablePtr
+XkbGetOrderedDrawables(
+    XkbGeometryPtr	/* geom */,
+    XkbSectionPtr	/* section */
+);
+
+extern	void
+XkbFreeOrderedDrawables(
+    XkbDrawablePtr	/* draw */
+);
+
+#endif
+
+/***====================================================================***/
+
+extern	unsigned	XkbConvertGetByNameComponents(
+    Bool		/* toXkm */,
+    unsigned 		/* orig */
+);
+
+extern	unsigned	XkbConvertXkbComponents(
+    Bool		/* toXkm */,
+    unsigned 		/* orig */
+);
+
+extern	Bool	XkbDetermineFileType(
+    XkbFileInfo *	/* xkb */,
+    int			/* format */,
+    int *		/* opts_missing */
+);
+
+extern	Bool	XkbNameMatchesPattern(
+    char *		/* name */,
+    char *		/* pattern */
+);
+
+/***====================================================================***/
+
+extern	Bool	XkbWriteXKBKeycodes(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBKeyTypes(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBCompatMap(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBSymbols(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBGeometry(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBSemantics(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBLayout(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBKeymap(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBFile(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteCFile(
+    FILE *		/* file */,
+    char *		/* name */,
+    XkbFileInfo *	/* info */
+);
+
+extern	Bool	XkbWriteXKMFile(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */
+);
+
+extern	Bool	XkbWriteToServer(
+    XkbFileInfo *	/* result */
+);
+
+extern	void	XkbEnsureSafeMapName(
+    char *		/* name */
+);
+
+extern	Bool	XkbWriteXKBKeymapForNames(
+    FILE *			/* file */,
+    XkbComponentNamesPtr	/* names */,
+    Display *			/* dpy */,
+    XkbDescPtr			/* xkb */,
+    unsigned			/* want */,
+    unsigned			/* need */
+);
+
+extern	Status	XkbMergeFile(
+    XkbDescPtr			/* xkb */,
+    XkbFileInfo			/* finfo */
+);
+
+/***====================================================================***/
+
+extern Bool	XkmProbe(
+    FILE *		/* file */
+);
+
+extern unsigned XkbReadFromServer(
+    Display *		/* dpy */,
+    unsigned		/* need */,
+    unsigned		/* want */,
+    XkbFileInfo *	/* result */
+);
+
+extern unsigned	XkmReadFile(
+    FILE *		/* file */,
+    unsigned		/* need */,
+    unsigned		/* want */,
+    XkbFileInfo *	/* result */
+);
+
+#ifdef _XKMFORMAT_H_
+
+extern Bool	XkmReadTOC(
+    FILE *              /* file */,
+    xkmFileInfo *       /* file_info */,
+    int                 /* max_toc */,
+    xkmSectionInfo *    /* toc */
+);
+
+extern xkmSectionInfo *XkmFindTOCEntry(
+    xkmFileInfo *       /* finfo */,
+    xkmSectionInfo *    /* toc */,
+    unsigned            /* type */
+);
+
+extern Bool	XkmReadFileSection(
+    FILE *              /* file */,
+    xkmSectionInfo *    /* toc */,
+    XkbFileInfo *       /* result */,
+    unsigned *          /* loaded_rtrn */
+);
+
+extern char *	XkmReadFileSectionName(
+    FILE *		/* file */,
+    xkmSectionInfo *	/* toc */
+);
+
+#endif /* _XKMFORMAT_H  */
+
+_XFUNCPROTOEND
+
+#endif /* _XKBFILE_H_ */
diff --git a/include/xkbsrv.h b/include/xkbsrv.h
index e825f33..df9aefc 100644
--- a/include/xkbsrv.h
+++ b/include/xkbsrv.h
@@ -124,8 +124,6 @@ typedef struct	_XkbEventCause {
 #define	_BEEP_LED_CHANGE	14
 #define	_BEEP_BOUNCE_REJECT	15
 
-struct _XkbSrvInfo; /* definition see below */
-
 typedef struct _XkbFilter {
 	CARD16			  keycode;
 	CARD8			  what;
@@ -317,13 +315,8 @@ extern	int	DeviceKeyPress,DeviceKeyRelease,DeviceMotionNotify;
 extern	int	DeviceButtonPress,DeviceButtonRelease;
 extern	int	DeviceEnterNotify,DeviceLeaveNotify;
 
-#ifdef XINPUT
 #define	_XkbIsPressEvent(t)	(((t)==KeyPress)||((t)==DeviceKeyPress))
 #define	_XkbIsReleaseEvent(t)	(((t)==KeyRelease)||((t)==DeviceKeyRelease))
-#else
-#define	_XkbIsPressEvent(t)	((t)==KeyPress)
-#define	_XkbIsReleaseEvent(t)	((t)==KeyRelease)
-#endif
 
 #define	_XkbCoreKeycodeInRange(c,k)	(((k)>=(c)->curKeySyms.minKeyCode)&&\
 					 ((k)<=(c)->curKeySyms.maxKeyCode))
@@ -343,14 +336,6 @@ extern	int	DeviceEnterNotify,DeviceLeaveNotify;
 #define	False	0
 #endif
 
-#ifndef PATH_MAX
-#ifdef MAXPATHLEN
-#define	PATH_MAX MAXPATHLEN
-#else
-#define	PATH_MAX 1024
-#endif
-#endif
-
 _XFUNCPROTOBEGIN
 
 extern void XkbUseMsg(
@@ -987,10 +972,8 @@ extern void XkbSendNewKeyboardNotify(
 	xkbNewKeyboardNotify *	/* pNKN */
 );
 
-#ifdef XKBSRV_NEED_FILE_FUNCS
-
+#include "xkbfile.h"
 #include <X11/extensions/XKMformat.h>
-#include <X11/extensions/XKBfile.h>
 #include <X11/extensions/XKBrules.h>
 
 #define	_XkbListKeymaps		0
@@ -1053,8 +1036,6 @@ extern	int _XkbStrCaseCmp(
 	char *			/* str2 */
 );
 
-#endif /* XKBSRV_NEED_FILE_FUNCS */
-
 _XFUNCPROTOEND
 
 #define	XkbAtomGetString(d,s)	NameForAtom(s)
diff --git a/xkb/xkbfile.h b/xkb/xkbfile.h
deleted file mode 100644
index d58bec6..0000000
--- a/xkb/xkbfile.h
+++ /dev/null
@@ -1,480 +0,0 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be 
- used in advertising or publicity pertaining to distribution 
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability 
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
- 
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL 
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#ifndef _XKBFILE_H_
-#define	_XKBFILE_H_ 1
-
-/***====================================================================***/
-
-#define	XkbXKMFile	0
-#define	XkbCFile	1
-#define	XkbXKBFile	2
-#define	XkbMessage	3
-
-#define	XkbMapDefined		(1<<0)
-#define	XkbStateDefined		(1<<1)
-
-typedef struct _XkbFileInfo {
-    unsigned		type;
-    unsigned		defined;
-    XkbDescPtr	 	xkb;
-} XkbFileInfo,*XkbFileInfoPtr;
-
-typedef void	(*XkbFileAddOnFunc)(
-    FILE *		/* file */,
-    XkbFileInfo *	/* result */,
-    Bool		/* topLevel */,
-    Bool		/* showImplicit */,
-    int			/* fileSection */,
-    void *		/* priv */
-);
-
-/***====================================================================***/
-
-#define	_XkbSuccess			0
-#define	_XkbErrMissingNames		1
-#define	_XkbErrMissingTypes		2
-#define	_XkbErrMissingReqTypes		3
-#define	_XkbErrMissingSymbols		4
-#define	_XkbErrMissingVMods		5
-#define	_XkbErrMissingIndicators	6
-#define	_XkbErrMissingCompatMap		7
-#define	_XkbErrMissingSymInterps	8
-#define	_XkbErrMissingGeometry		9
-#define	_XkbErrIllegalDoodad		10
-#define	_XkbErrIllegalTOCType		11
-#define	_XkbErrIllegalContents		12
-#define	_XkbErrEmptyFile		13
-#define	_XkbErrFileNotFound		14
-#define	_XkbErrFileCannotOpen		15
-#define	_XkbErrBadValue			16
-#define	_XkbErrBadMatch			17
-#define	_XkbErrBadTypeName		18
-#define	_XkbErrBadTypeWidth		19
-#define	_XkbErrBadFileType		20
-#define	_XkbErrBadFileVersion		21
-#define	_XkbErrBadFileFormat		22
-#define	_XkbErrBadAlloc			23
-#define	_XkbErrBadLength		24
-#define	_XkbErrXReqFailure		25
-#define	_XkbErrBadImplementation	26
-
-extern char *		_XkbErrMessages[];
-extern unsigned		_XkbErrCode;
-extern char *		_XkbErrLocation;
-extern unsigned		_XkbErrData;
-
-/***====================================================================***/
-
-_XFUNCPROTOBEGIN
-
-extern	char *	XkbIndentText(
-    unsigned	/* size */
-);
-
-extern	char *	XkbAtomText(
-    Display *	/* dpy */,
-    Atom 	/* atm */,
-    unsigned	/* format */
-);
-
-extern char *	XkbKeysymText(
-    KeySym	/* sym */,
-    unsigned	/* format */
-);
-
-extern char *	XkbStringText(
-    char *	/* str */,
-    unsigned	/* format */
-);
-
-extern char *	XkbKeyNameText(
-    char *	/* name */,
-    unsigned	/* format */
-);
-
-extern char *
-XkbModIndexText(
-    unsigned	/* ndx */,
-    unsigned	/* format */
-);
-
-extern char *
-XkbModMaskText(
-    unsigned	/* mask */,
-    unsigned	/* format */
-);
-
-extern char *	XkbVModIndexText(
-    Display *	/* dpy */,
-    XkbDescPtr	/* xkb */,
-    unsigned	/* ndx */,
-    unsigned	/* format */
-);
-
-extern	char *	XkbVModMaskText(
-    Display *	/* dpy */,
-    XkbDescPtr	/* xkb */,
-    unsigned	/* modMask */,
-    unsigned	/* mask */,
-    unsigned	/* format */
-);
-
-extern char *	XkbConfigText(
-    unsigned 	/* config */,
-    unsigned 	/* format */
-);
-
-extern char *	XkbSIMatchText(
-    unsigned	/* type */,
-    unsigned	/* format */
-);
-
-extern char *	XkbIMWhichStateMaskText(
-    unsigned	/* use_which */,
-    unsigned	/* format */
-);
-
-extern char *	XkbAccessXDetailText(
-    unsigned	/* state */,
-    unsigned	/* format */
-);
-
-extern char *	XkbNKNDetailMaskText(
-    unsigned	/* detail */,
-    unsigned	/* format */
-);
-
-extern char *	XkbControlsMaskText(
-    unsigned	/* ctrls */,
-    unsigned	/* format */
-);
-
-extern char *	XkbGeomFPText(
-    int		/* val */,
-    unsigned 	/* format */
-);
-
-extern char *	XkbDoodadTypeText(
-    unsigned	/* type */,
-    unsigned	/* format */
-);
-
-extern char *	XkbActionTypeText(
-    unsigned	/* type */,
-    unsigned	/* format */
-);
-
-extern char *	XkbActionText(
-    Display *	/* dpy */,
-    XkbDescPtr	/* xkb */,
-    XkbAction *	/* action */,
-    unsigned	/* format */
-);
-
-extern char *	XkbBehaviorText(
-    XkbDescPtr 		/* xkb */,
-    XkbBehavior *	/* behavior */,
-    unsigned		/* format */
-);
-
-/***====================================================================***/
-
-#define	_XkbKSLower	(1<<0)
-#define	_XkbKSUpper	(1<<1)
-
-#define	XkbKSIsLower(k)		(_XkbKSCheckCase(k)&_XkbKSLower)
-#define	XkbKSIsUpper(k)		(_XkbKSCheckCase(k)&_XkbKSUpper)
-#define XkbKSIsKeypad(k)	(((k)>=XK_KP_Space)&&((k)<=XK_KP_Equal))
-#define	XkbKSIsDeadKey(k)	\
-		(((k)>=XK_dead_grave)&&((k)<=XK_dead_semivoiced_sound))
-
-extern	unsigned _XkbKSCheckCase(
-   KeySym	/* sym */
-);
-
-extern	int	 XkbFindKeycodeByName(
-    XkbDescPtr	/* xkb */,
-    char *	/* name */,
-    Bool	/* use_aliases */
-);
-
-extern	Bool	XkbLookupGroupAndLevel(
-    XkbDescPtr	/* xkb */,
-    int		/* key */,
-    int	*	/* mods_inout */,
-    int *	/* grp_inout */,
-    int	*	/* lvl_rtrn */
-);
-
-/***====================================================================***/
-
-extern	char *	XkbAtomGetString(
-    Display *	/* dpy */,
-    Atom 	/* atm */
-);
-
-extern	Atom	XkbInternAtom(
-    Display *	/* dpy */,
-    char *	/* name */,
-    Bool	/* onlyIfExists */
-);
-
-extern	Status	XkbChangeKbdDisplay(
-    Display *		/* newDpy */,
-    XkbFileInfo *	/* result */
-);
-
-extern	Atom	XkbChangeAtomDisplay(
-    Display *	/* oldDpy */,
-    Display *	/* newDpy */,
-    Atom	/* atm */
-);
-
-extern	void	XkbInitAtoms(
-    Display *	/* dpy */
-);
-
-/***====================================================================***/
-
-#ifdef _XKBGEOM_H_
-
-#define	XkbDW_Unknown	0
-#define	XkbDW_Doodad	1
-#define	XkbDW_Section	2
-typedef struct _XkbDrawable {
-	int		type;
-	int		priority;
-	union {
-	    XkbDoodadPtr	doodad;
-	    XkbSectionPtr	section;
-	} u;
-	struct _XkbDrawable *	next;
-} XkbDrawableRec,*XkbDrawablePtr; 
-
-extern	XkbDrawablePtr
-XkbGetOrderedDrawables(
-    XkbGeometryPtr	/* geom */,
-    XkbSectionPtr	/* section */
-);
-
-extern	void
-XkbFreeOrderedDrawables(
-    XkbDrawablePtr	/* draw */
-);
-
-#endif
-
-/***====================================================================***/
-
-extern	unsigned	XkbConvertGetByNameComponents(
-    Bool		/* toXkm */,
-    unsigned 		/* orig */
-);
-
-extern	unsigned	XkbConvertXkbComponents(
-    Bool		/* toXkm */,
-    unsigned 		/* orig */
-);
-
-extern	Bool	XkbDetermineFileType(
-    XkbFileInfo *	/* xkb */,
-    int			/* format */,
-    int *		/* opts_missing */
-);
-
-extern	Bool	XkbNameMatchesPattern(
-    char *		/* name */,
-    char *		/* pattern */
-);
-
-/***====================================================================***/
-
-extern	Bool	XkbWriteXKBKeycodes(
-    FILE *		/* file */,
-    XkbFileInfo *	/* result */,
-    Bool		/* topLevel */,
-    Bool		/* showImplicit */,
-    XkbFileAddOnFunc	/* addOn */,
-    void *		/* priv */
-);
-
-extern	Bool	XkbWriteXKBKeyTypes(
-    FILE *		/* file */,
-    XkbFileInfo *	/* result */,
-    Bool		/* topLevel */,
-    Bool		/* showImplicit */,
-    XkbFileAddOnFunc	/* addOn */,
-    void *		/* priv */
-);
-
-extern	Bool	XkbWriteXKBCompatMap(
-    FILE *		/* file */,
-    XkbFileInfo *	/* result */,
-    Bool		/* topLevel */,
-    Bool		/* showImplicit */,
-    XkbFileAddOnFunc	/* addOn */,
-    void *		/* priv */
-);
-
-extern	Bool	XkbWriteXKBSymbols(
-    FILE *		/* file */,
-    XkbFileInfo *	/* result */,
-    Bool		/* topLevel */,
-    Bool		/* showImplicit */,
-    XkbFileAddOnFunc	/* addOn */,
-    void *		/* priv */
-);
-
-extern	Bool	XkbWriteXKBGeometry(
-    FILE *		/* file */,
-    XkbFileInfo *	/* result */,
-    Bool		/* topLevel */,
-    Bool		/* showImplicit */,
-    XkbFileAddOnFunc	/* addOn */,
-    void *		/* priv */
-);
-
-extern	Bool	XkbWriteXKBSemantics(
-    FILE *		/* file */,
-    XkbFileInfo *	/* result */,
-    Bool		/* topLevel */,
-    Bool		/* showImplicit */,
-    XkbFileAddOnFunc	/* addOn */,
-    void *		/* priv */
-);
-
-extern	Bool	XkbWriteXKBLayout(
-    FILE *		/* file */,
-    XkbFileInfo *	/* result */,
-    Bool		/* topLevel */,
-    Bool		/* showImplicit */,
-    XkbFileAddOnFunc	/* addOn */,
-    void *		/* priv */
-);
-
-extern	Bool	XkbWriteXKBKeymap(
-    FILE *		/* file */,
-    XkbFileInfo *	/* result */,
-    Bool		/* topLevel */,
-    Bool		/* showImplicit */,
-    XkbFileAddOnFunc	/* addOn */,
-    void *		/* priv */
-);
-
-extern	Bool	XkbWriteXKBFile(
-    FILE *		/* file */,
-    XkbFileInfo *	/* result */,
-    Bool		/* showImplicit */,
-    XkbFileAddOnFunc	/* addOn */,
-    void *		/* priv */
-);
-
-extern	Bool	XkbWriteCFile(
-    FILE *		/* file */,
-    char *		/* name */,
-    XkbFileInfo *	/* info */
-);
-
-extern	Bool	XkbWriteXKMFile(
-    FILE *		/* file */,
-    XkbFileInfo *	/* result */
-);
-
-extern	Bool	XkbWriteToServer(
-    XkbFileInfo *	/* result */
-);
-
-extern	void	XkbEnsureSafeMapName(
-    char *		/* name */
-);
-
-extern	Bool	XkbWriteXKBKeymapForNames(
-    FILE *			/* file */,
-    XkbComponentNamesPtr	/* names */,
-    Display *			/* dpy */,
-    XkbDescPtr			/* xkb */,
-    unsigned			/* want */,
-    unsigned			/* need */
-);
-
-extern	Status	XkbMergeFile(
-    XkbDescPtr			/* xkb */,
-    XkbFileInfo			/* finfo */
-);
-
-/***====================================================================***/
-
-extern Bool	XkmProbe(
-    FILE *		/* file */
-);
-
-extern unsigned XkbReadFromServer(
-    Display *		/* dpy */,
-    unsigned		/* need */,
-    unsigned		/* want */,
-    XkbFileInfo *	/* result */
-);
-
-extern unsigned	XkmReadFile(
-    FILE *		/* file */,
-    unsigned		/* need */,
-    unsigned		/* want */,
-    XkbFileInfo *	/* result */
-);
-
-#ifdef _XKMFORMAT_H_
-
-extern Bool	XkmReadTOC(
-    FILE *              /* file */,
-    xkmFileInfo *       /* file_info */,
-    int                 /* max_toc */,
-    xkmSectionInfo *    /* toc */
-);
-
-extern xkmSectionInfo *XkmFindTOCEntry(
-    xkmFileInfo *       /* finfo */,
-    xkmSectionInfo *    /* toc */,
-    unsigned            /* type */
-);
-
-extern Bool	XkmReadFileSection(
-    FILE *              /* file */,
-    xkmSectionInfo *    /* toc */,
-    XkbFileInfo *       /* result */,
-    unsigned *          /* loaded_rtrn */
-);
-
-extern char *	XkmReadFileSectionName(
-    FILE *		/* file */,
-    xkmSectionInfo *	/* toc */
-);
-
-#endif /* _XKMFORMAT_H  */
-
-_XFUNCPROTOEND
-
-#endif /* _XKBFILE_H_ */
commit 68bd7ac1930b5cffb6657b8d5f5bf8ae58eae8d9
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Sun Feb 3 23:12:15 2008 +1100

    XKB: Move headers into the server tree
    
    We need to start breaking the XKB API to enforce sanity, so drag whichever
    headers we need to do so into the server tree, as the client API is set in
    stone, being part of Xlib.

diff --git a/hw/dmx/examples/xinput.c b/hw/dmx/examples/xinput.c
index 74353a9..b6753e4 100644
--- a/hw/dmx/examples/xinput.c
+++ b/hw/dmx/examples/xinput.c
@@ -38,7 +38,7 @@
 #include <X11/XKBlib.h>
 #include <X11/extensions/XInput.h>
 #include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
+#include "xkbstr.h"
 #include <X11/extensions/dmxext.h>
 #include <sys/time.h>
 
diff --git a/hw/dmx/examples/xled.c b/hw/dmx/examples/xled.c
index 270f805..322dda2 100644
--- a/hw/dmx/examples/xled.c
+++ b/hw/dmx/examples/xled.c
@@ -37,7 +37,7 @@
 #include <X11/Xlib.h>
 #include <X11/XKBlib.h>
 #include <X11/extensions/XKB.h>
-#include <X11/extensions/XKBstr.h>
+#include "xkbstr.h"
 #include <sys/time.h>
 
 int main(int argc, char **argv)
diff --git a/hw/xfree86/utils/xorgcfg/text-mode.c b/hw/xfree86/utils/xorgcfg/text-mode.c
index 0b6e654..c1fa67e 100644
--- a/hw/xfree86/utils/xorgcfg/text-mode.c
+++ b/hw/xfree86/utils/xorgcfg/text-mode.c
@@ -39,7 +39,7 @@
 #endif
 #include <ctype.h>
 #include <X11/Xlib.h>
-#include <X11/extensions/XKBstr.h>
+#include "xkbstr.h"
 #include <X11/extensions/XKBrules.h>
 #include "cards.h"
 #include "config.h"
diff --git a/hw/xfree86/utils/xorgconfig/xorgconfig.c b/hw/xfree86/utils/xorgconfig/xorgconfig.c
index 30eb831..d537aba 100644
--- a/hw/xfree86/utils/xorgconfig/xorgconfig.c
+++ b/hw/xfree86/utils/xorgconfig/xorgconfig.c
@@ -106,7 +106,7 @@
 #include <sys/stat.h>
 
 #include <X11/Xlib.h>
-#include <X11/extensions/XKBstr.h>
+#include "xkbstr.h"
 #include <X11/extensions/XKBrules.h>
 #define MAX_XKBOPTIONS	5
 
diff --git a/include/xkbsrv.h b/include/xkbsrv.h
index c7709f7..e825f33 100644
--- a/include/xkbsrv.h
+++ b/include/xkbsrv.h
@@ -27,7 +27,6 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #ifndef _XKBSRV_H_
 #define	_XKBSRV_H_
 
-#ifdef XKB_IN_SERVER
 #define XkbAllocClientMap		SrvXkbAllocClientMap
 #define XkbAllocServerMap		SrvXkbAllocServerMap
 #define XkbChangeTypesOfKey		SrvXkbChangeTypesOfKey
@@ -52,10 +51,9 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #define XkbVirtualModsToReal		SrvXkbVirtualModsToReal
 #define	XkbChangeKeycodeRange		SrvXkbChangeKeycodeRange
 #define	XkbApplyVirtualModChanges	SrvXkbApplyVirtualModChanges
-#endif
 
-#include <X11/extensions/XKBstr.h>
 #include <X11/extensions/XKBproto.h>
+#include "xkbstr.h"
 #include "inputstr.h"
 
 typedef struct _XkbInterest {
diff --git a/include/xkbstr.h b/include/xkbstr.h
new file mode 100644
index 0000000..e519e65
--- /dev/null
+++ b/include/xkbstr.h
@@ -0,0 +1,613 @@
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be 
+used in advertising or publicity pertaining to distribution 
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability 
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL 
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifndef _XKBSTR_H_
+#define	_XKBSTR_H_
+
+#include <X11/extensions/XKB.h>
+
+#define	XkbCharToInt(v)		((v)&0x80?(int)((v)|(~0xff)):(int)((v)&0x7f))
+#define	XkbIntTo2Chars(i,h,l)	(((h)=((i>>8)&0xff)),((l)=((i)&0xff)))
+
+#if defined(WORD64) && defined(UNSIGNEDBITFIELDS)
+#define	Xkb2CharsToInt(h,l)	((h)&0x80?(int)(((h)<<8)|(l)|(~0xffff)):\
+					  (int)(((h)<<8)|(l)&0x7fff))
+#else
+#define	Xkb2CharsToInt(h,l)	((short)(((h)<<8)|(l)))
+#endif
+
+	/*
+	 * Common data structures and access macros
+	 */
+
+typedef struct _XkbStateRec {
+	unsigned char	group;
+	unsigned char   locked_group;
+	unsigned short	base_group;
+	unsigned short	latched_group;
+	unsigned char	mods;
+	unsigned char	base_mods;
+	unsigned char	latched_mods;
+	unsigned char	locked_mods;
+	unsigned char	compat_state;
+	unsigned char	grab_mods;
+	unsigned char	compat_grab_mods;
+	unsigned char	lookup_mods;
+	unsigned char	compat_lookup_mods;
+	unsigned short	ptr_buttons;
+} XkbStateRec,*XkbStatePtr;
+#define	XkbModLocks(s)	 ((s)->locked_mods)
+#define	XkbStateMods(s)	 ((s)->base_mods|(s)->latched_mods|XkbModLocks(s))
+#define	XkbGroupLock(s)	 ((s)->locked_group)
+#define	XkbStateGroup(s) ((s)->base_group+(s)->latched_group+XkbGroupLock(s))
+#define	XkbStateFieldFromRec(s)	XkbBuildCoreState((s)->lookup_mods,(s)->group)
+#define	XkbGrabStateFromRec(s)	XkbBuildCoreState((s)->grab_mods,(s)->group)
+
+typedef struct _XkbMods {
+	unsigned char	mask;	/* effective mods */
+	unsigned char	real_mods;
+	unsigned short	vmods;
+} XkbModsRec,*XkbModsPtr;
+
+typedef struct _XkbKTMapEntry {
+	Bool		active;
+	unsigned char	level;
+	XkbModsRec	mods;
+} XkbKTMapEntryRec,*XkbKTMapEntryPtr;
+
+typedef struct _XkbKeyType {
+	XkbModsRec		mods;
+	unsigned char	  	num_levels;
+	unsigned char	  	map_count;
+	XkbKTMapEntryPtr  	map;
+	XkbModsPtr  		preserve;
+	Atom		  	name;
+	Atom *			level_names;
+} XkbKeyTypeRec, *XkbKeyTypePtr;
+
+#define	XkbNumGroups(g)			((g)&0x0f)
+#define	XkbOutOfRangeGroupInfo(g)	((g)&0xf0)
+#define	XkbOutOfRangeGroupAction(g)	((g)&0xc0)
+#define	XkbOutOfRangeGroupNumber(g)	(((g)&0x30)>>4)
+#define	XkbSetGroupInfo(g,w,n)	(((w)&0xc0)|(((n)&3)<<4)|((g)&0x0f))
+#define	XkbSetNumGroups(g,n)	(((g)&0xf0)|((n)&0x0f))
+
+	/*
+	 * Structures and access macros used primarily by the server
+	 */
+
+typedef struct _XkbBehavior {
+	unsigned char	type;
+	unsigned char	data;
+} XkbBehavior;
+
+#define	XkbAnyActionDataSize 7
+typedef	struct _XkbAnyAction {
+	unsigned char	type;
+	unsigned char	data[XkbAnyActionDataSize];
+} XkbAnyAction;
+
+typedef struct _XkbModAction {
+	unsigned char	type;
+	unsigned char	flags;
+	unsigned char	mask;
+	unsigned char	real_mods;
+	unsigned char	vmods1;
+	unsigned char	vmods2;
+} XkbModAction;
+#define	XkbModActionVMods(a)      \
+	((short)(((a)->vmods1<<8)|((a)->vmods2)))
+#define	XkbSetModActionVMods(a,v) \
+	(((a)->vmods1=(((v)>>8)&0xff)),(a)->vmods2=((v)&0xff))
+
+typedef struct _XkbGroupAction {
+	unsigned char	type;
+	unsigned char	flags;
+	char		group_XXX;
+} XkbGroupAction;
+#define	XkbSAGroup(a)		(XkbCharToInt((a)->group_XXX))
+#define	XkbSASetGroup(a,g)	((a)->group_XXX=(g))
+
+typedef struct _XkbISOAction {
+	unsigned char	type;
+	unsigned char	flags;
+	unsigned char	mask;
+	unsigned char	real_mods;
+	char		group_XXX;
+	unsigned char	affect;
+	unsigned char	vmods1;
+	unsigned char	vmods2;
+} XkbISOAction;
+
+typedef struct _XkbPtrAction {
+	unsigned char	type;
+	unsigned char	flags;
+	unsigned char	high_XXX;
+	unsigned char	low_XXX;
+	unsigned char	high_YYY;
+	unsigned char	low_YYY;
+} XkbPtrAction;
+#define	XkbPtrActionX(a)      (Xkb2CharsToInt((a)->high_XXX,(a)->low_XXX))
+#define	XkbPtrActionY(a)      (Xkb2CharsToInt((a)->high_YYY,(a)->low_YYY))
+#define	XkbSetPtrActionX(a,x) (XkbIntTo2Chars(x,(a)->high_XXX,(a)->low_XXX))
+#define	XkbSetPtrActionY(a,y) (XkbIntTo2Chars(y,(a)->high_YYY,(a)->low_YYY))
+
+typedef struct _XkbPtrBtnAction {
+	unsigned char	type;
+	unsigned char	flags;
+	unsigned char	count;
+	unsigned char	button;
+} XkbPtrBtnAction;
+
+typedef struct _XkbPtrDfltAction {
+	unsigned char	type;
+	unsigned char	flags;
+	unsigned char	affect;
+	char		valueXXX;
+} XkbPtrDfltAction;
+#define	XkbSAPtrDfltValue(a)		(XkbCharToInt((a)->valueXXX))
+#define	XkbSASetPtrDfltValue(a,c)	((a)->valueXXX= ((c)&0xff))
+
+typedef struct _XkbSwitchScreenAction {
+	unsigned char	type;
+	unsigned char	flags;
+	char		screenXXX;
+} XkbSwitchScreenAction;
+#define	XkbSAScreen(a)			(XkbCharToInt((a)->screenXXX))
+#define	XkbSASetScreen(a,s)		((a)->screenXXX= ((s)&0xff))
+
+typedef struct _XkbCtrlsAction {
+	unsigned char	type;
+	unsigned char	flags;
+	unsigned char	ctrls3;
+	unsigned char	ctrls2;
+	unsigned char	ctrls1;
+	unsigned char	ctrls0;
+} XkbCtrlsAction;
+#define	XkbActionSetCtrls(a,c)	(((a)->ctrls3=(((c)>>24)&0xff)),\
+					((a)->ctrls2=(((c)>>16)&0xff)),\
+					((a)->ctrls1=(((c)>>8)&0xff)),\
+					((a)->ctrls0=((c)&0xff)))
+#define	XkbActionCtrls(a) ((((unsigned int)(a)->ctrls3)<<24)|\
+			   (((unsigned int)(a)->ctrls2)<<16)|\
+			   (((unsigned int)(a)->ctrls1)<<8)|\
+			   ((unsigned int)((a)->ctrls0)))
+
+typedef struct _XkbMessageAction {
+	unsigned char	type;
+	unsigned char	flags;
+	unsigned char	message[6];
+} XkbMessageAction;
+
+typedef struct	_XkbRedirectKeyAction {
+	unsigned char	type;
+	unsigned char	new_key;
+	unsigned char	mods_mask;
+	unsigned char	mods;
+	unsigned char	vmods_mask0;
+	unsigned char	vmods_mask1;
+	unsigned char	vmods0;
+	unsigned char	vmods1;
+} XkbRedirectKeyAction;
+
+#define	XkbSARedirectVMods(a)		((((unsigned int)(a)->vmods1)<<8)|\
+					((unsigned int)(a)->vmods0))
+#define	XkbSARedirectSetVMods(a,m)	(((a)->vmods_mask1=(((m)>>8)&0xff)),\
+					 ((a)->vmods_mask0=((m)&0xff)))
+#define	XkbSARedirectVModsMask(a)	((((unsigned int)(a)->vmods_mask1)<<8)|\
+					((unsigned int)(a)->vmods_mask0))
+#define	XkbSARedirectSetVModsMask(a,m)	(((a)->vmods_mask1=(((m)>>8)&0xff)),\
+					 ((a)->vmods_mask0=((m)&0xff)))
+
+typedef struct _XkbDeviceBtnAction {
+	unsigned char	type;
+	unsigned char	flags;
+	unsigned char	count;
+	unsigned char	button;
+	unsigned char	device;
+} XkbDeviceBtnAction;
+
+typedef struct _XkbDeviceValuatorAction {
+	unsigned char	type;
+	unsigned char	device;
+	unsigned char	v1_what;
+	unsigned char	v1_ndx;
+	unsigned char	v1_value;
+	unsigned char	v2_what;
+	unsigned char	v2_ndx;
+	unsigned char	v2_value;
+} XkbDeviceValuatorAction;
+
+typedef	union _XkbAction {
+	XkbAnyAction		any;
+	XkbModAction		mods;
+	XkbGroupAction		group;
+	XkbISOAction		iso;
+	XkbPtrAction		ptr;
+	XkbPtrBtnAction		btn;
+	XkbPtrDfltAction	dflt;
+	XkbSwitchScreenAction	screen;
+	XkbCtrlsAction		ctrls;
+	XkbMessageAction	msg;
+	XkbRedirectKeyAction	redirect;
+	XkbDeviceBtnAction	devbtn;
+	XkbDeviceValuatorAction	devval;
+	unsigned char 		type;
+} XkbAction;
+
+typedef	struct _XkbControls {
+	unsigned char	mk_dflt_btn;
+	unsigned char	num_groups;
+	unsigned char	groups_wrap;
+	XkbModsRec	internal;
+	XkbModsRec	ignore_lock;
+	unsigned int	enabled_ctrls;
+	unsigned short	repeat_delay;
+	unsigned short	repeat_interval;
+	unsigned short	slow_keys_delay;
+	unsigned short	debounce_delay;
+	unsigned short	mk_delay;
+	unsigned short	mk_interval;
+	unsigned short	mk_time_to_max;
+	unsigned short	mk_max_speed;
+		 short	mk_curve;
+	unsigned short	ax_options;
+	unsigned short	ax_timeout;
+	unsigned short	axt_opts_mask;
+	unsigned short	axt_opts_values;
+	unsigned int	axt_ctrls_mask;
+	unsigned int	axt_ctrls_values;
+	unsigned char	per_key_repeat[XkbPerKeyBitArraySize];
+} XkbControlsRec, *XkbControlsPtr;
+
+#define	XkbAX_AnyFeedback(c)	((c)->enabled_ctrls&XkbAccessXFeedbackMask)
+#define	XkbAX_NeedOption(c,w)	((c)->ax_options&(w))
+#define	XkbAX_NeedFeedback(c,w)	(XkbAX_AnyFeedback(c)&&XkbAX_NeedOption(c,w))
+
+typedef struct _XkbServerMapRec {
+	unsigned short		 num_acts;
+	unsigned short		 size_acts;
+	XkbAction		*acts;
+
+	XkbBehavior		*behaviors;
+	unsigned short		*key_acts;
+#if defined(__cplusplus) || defined(c_plusplus)
+	/* explicit is a C++ reserved word */
+	unsigned char		*c_explicit;
+#else
+	unsigned char		*explicit;
+#endif
+	unsigned char		 vmods[XkbNumVirtualMods];
+	unsigned short		*vmodmap;
+} XkbServerMapRec, *XkbServerMapPtr;
+
+#define	XkbSMKeyActionsPtr(m,k) (&(m)->acts[(m)->key_acts[k]])
+
+	/*
+	 * Structures and access macros used primarily by clients
+	 */
+
+typedef	struct _XkbSymMapRec {
+	unsigned char	 kt_index[XkbNumKbdGroups];
+	unsigned char	 group_info;
+	unsigned char	 width;
+	unsigned short	 offset;
+} XkbSymMapRec, *XkbSymMapPtr;
+
+typedef struct _XkbClientMapRec {
+	unsigned char		 size_types;
+	unsigned char		 num_types;
+	XkbKeyTypePtr		 types;
+
+	unsigned short		 size_syms;
+	unsigned short		 num_syms;
+	KeySym			*syms;
+	XkbSymMapPtr		 key_sym_map;
+
+	unsigned char		*modmap;
+} XkbClientMapRec, *XkbClientMapPtr;
+
+#define	XkbCMKeyGroupInfo(m,k)  ((m)->key_sym_map[k].group_info)
+#define	XkbCMKeyNumGroups(m,k)	 (XkbNumGroups((m)->key_sym_map[k].group_info))
+#define	XkbCMKeyGroupWidth(m,k,g) (XkbCMKeyType(m,k,g)->num_levels)
+#define	XkbCMKeyGroupsWidth(m,k) ((m)->key_sym_map[k].width)
+#define	XkbCMKeyTypeIndex(m,k,g) ((m)->key_sym_map[k].kt_index[g&0x3])
+#define	XkbCMKeyType(m,k,g)	 (&(m)->types[XkbCMKeyTypeIndex(m,k,g)])
+#define	XkbCMKeyNumSyms(m,k) (XkbCMKeyGroupsWidth(m,k)*XkbCMKeyNumGroups(m,k))
+#define	XkbCMKeySymsOffset(m,k)	((m)->key_sym_map[k].offset)
+#define	XkbCMKeySymsPtr(m,k)	(&(m)->syms[XkbCMKeySymsOffset(m,k)])
+
+	/*
+	 * Compatibility structures and access macros
+	 */
+
+typedef struct _XkbSymInterpretRec {
+	KeySym		sym;
+	unsigned char	flags;
+	unsigned char	match;
+	unsigned char	mods;
+	unsigned char	virtual_mod;
+	XkbAnyAction	act;
+} XkbSymInterpretRec,*XkbSymInterpretPtr;
+
+typedef struct _XkbCompatMapRec {
+	XkbSymInterpretPtr	 sym_interpret;
+	XkbModsRec		 groups[XkbNumKbdGroups];
+	unsigned short		 num_si;
+	unsigned short		 size_si;
+} XkbCompatMapRec, *XkbCompatMapPtr;
+
+typedef struct _XkbIndicatorMapRec {
+	unsigned char	flags;
+	unsigned char	which_groups;
+	unsigned char	groups;
+	unsigned char	which_mods;
+	XkbModsRec	mods;
+	unsigned int	ctrls;
+} XkbIndicatorMapRec, *XkbIndicatorMapPtr;
+
+#define	XkbIM_IsAuto(i)	((((i)->flags&XkbIM_NoAutomatic)==0)&&\
+			    (((i)->which_groups&&(i)->groups)||\
+			     ((i)->which_mods&&(i)->mods.mask)||\
+			     ((i)->ctrls)))
+#define	XkbIM_InUse(i)	(((i)->flags)||((i)->which_groups)||\
+					((i)->which_mods)||((i)->ctrls))
+	
+
+typedef struct _XkbIndicatorRec {
+	unsigned long	  	phys_indicators;
+	XkbIndicatorMapRec	maps[XkbNumIndicators];
+} XkbIndicatorRec,*XkbIndicatorPtr;
+
+typedef	struct _XkbKeyNameRec {
+	char	name[XkbKeyNameLength];
+} XkbKeyNameRec,*XkbKeyNamePtr;
+
+typedef struct _XkbKeyAliasRec {
+	char	real[XkbKeyNameLength];
+	char	alias[XkbKeyNameLength];
+} XkbKeyAliasRec,*XkbKeyAliasPtr;
+
+	/*
+	 * Names for everything 
+	 */
+typedef struct _XkbNamesRec {
+	Atom		  keycodes;
+	Atom		  geometry;
+	Atom		  symbols;
+	Atom              types;
+	Atom		  compat;
+	Atom		  vmods[XkbNumVirtualMods];
+	Atom		  indicators[XkbNumIndicators];
+	Atom		  groups[XkbNumKbdGroups];
+	XkbKeyNamePtr	  keys;
+	XkbKeyAliasPtr	  key_aliases;
+	Atom		 *radio_groups;
+	Atom		  phys_symbols;
+
+	unsigned char	  num_keys;
+	unsigned char	  num_key_aliases;
+	unsigned short	  num_rg;
+} XkbNamesRec,*XkbNamesPtr;
+
+typedef	struct _XkbGeometry	*XkbGeometryPtr;
+	/*
+	 * Tie it all together into one big keyboard description
+	 */
+typedef	struct _XkbDesc {
+	struct _XDisplay *	dpy;
+	unsigned short	 	flags;
+	unsigned short		device_spec;
+	KeyCode			min_key_code;
+	KeyCode			max_key_code;
+
+	XkbControlsPtr		ctrls;
+	XkbServerMapPtr		server;
+	XkbClientMapPtr		map;
+	XkbIndicatorPtr		indicators;
+	XkbNamesPtr		names;
+	XkbCompatMapPtr		compat;
+	XkbGeometryPtr		geom;
+} XkbDescRec, *XkbDescPtr;
+#define	XkbKeyKeyTypeIndex(d,k,g)	(XkbCMKeyTypeIndex((d)->map,k,g))
+#define	XkbKeyKeyType(d,k,g)		(XkbCMKeyType((d)->map,k,g))
+#define	XkbKeyGroupWidth(d,k,g)		(XkbCMKeyGroupWidth((d)->map,k,g))
+#define	XkbKeyGroupsWidth(d,k)		(XkbCMKeyGroupsWidth((d)->map,k))
+#define	XkbKeyGroupInfo(d,k)		(XkbCMKeyGroupInfo((d)->map,(k)))
+#define	XkbKeyNumGroups(d,k)		(XkbCMKeyNumGroups((d)->map,(k)))
+#define	XkbKeyNumSyms(d,k)		(XkbCMKeyNumSyms((d)->map,(k)))
+#define	XkbKeySymsPtr(d,k)		(XkbCMKeySymsPtr((d)->map,(k)))
+#define	XkbKeySym(d,k,n)		(XkbKeySymsPtr(d,k)[n])
+#define	XkbKeySymEntry(d,k,sl,g) \
+	(XkbKeySym(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))))
+#define	XkbKeyAction(d,k,n) \
+	(XkbKeyHasActions(d,k)?&XkbKeyActionsPtr(d,k)[n]:NULL)
+#define	XkbKeyActionEntry(d,k,sl,g) \
+	(XkbKeyHasActions(d,k)?\
+		XkbKeyAction(d,k,((XkbKeyGroupsWidth(d,k)*(g))+(sl))):NULL)
+
+#define	XkbKeyHasActions(d,k)	((d)->server->key_acts[k]!=0)
+#define	XkbKeyNumActions(d,k)	(XkbKeyHasActions(d,k)?XkbKeyNumSyms(d,k):1)
+#define	XkbKeyActionsPtr(d,k)	(XkbSMKeyActionsPtr((d)->server,k))
+#define	XkbKeycodeInRange(d,k)	(((k)>=(d)->min_key_code)&&\
+				 ((k)<=(d)->max_key_code))
+#define	XkbNumKeys(d)		((d)->max_key_code-(d)->min_key_code+1)
+
+
+	/*
+	 * The following structures can be used to track changes
+	 * to a keyboard device
+	 */
+typedef struct _XkbMapChanges {
+	unsigned short		 changed;
+	KeyCode			 min_key_code;
+	KeyCode			 max_key_code;
+	unsigned char		 first_type;
+	unsigned char		 num_types;
+	KeyCode			 first_key_sym;
+	unsigned char		 num_key_syms;
+	KeyCode			 first_key_act;
+	unsigned char		 num_key_acts;
+	KeyCode			 first_key_behavior;
+	unsigned char		 num_key_behaviors;
+	KeyCode 		 first_key_explicit;
+	unsigned char		 num_key_explicit;
+	KeyCode			 first_modmap_key;
+	unsigned char		 num_modmap_keys;
+	KeyCode			 first_vmodmap_key;
+	unsigned char		 num_vmodmap_keys;
+	unsigned char		 pad;
+	unsigned short		 vmods;
+} XkbMapChangesRec,*XkbMapChangesPtr;
+
+typedef struct _XkbControlsChanges {
+	unsigned int 		 changed_ctrls;
+	unsigned int		 enabled_ctrls_changes;
+	Bool			 num_groups_changed;
+} XkbControlsChangesRec,*XkbControlsChangesPtr;
+
+typedef struct _XkbIndicatorChanges {
+	unsigned int		 state_changes;
+	unsigned int		 map_changes;
+} XkbIndicatorChangesRec,*XkbIndicatorChangesPtr;
+
+typedef struct _XkbNameChanges {
+	unsigned int 		changed;
+	unsigned char		first_type;
+	unsigned char		num_types;
+	unsigned char		first_lvl;
+	unsigned char		num_lvls;
+	unsigned char		num_aliases;
+	unsigned char		num_rg;
+	unsigned char		first_key;
+	unsigned char		num_keys;
+	unsigned short		changed_vmods;
+	unsigned long		changed_indicators;
+	unsigned char		changed_groups;
+} XkbNameChangesRec,*XkbNameChangesPtr;
+
+typedef struct _XkbCompatChanges {
+	unsigned char		changed_groups;
+	unsigned short		first_si;
+	unsigned short		num_si;
+} XkbCompatChangesRec,*XkbCompatChangesPtr;
+
+typedef struct _XkbChanges {
+	unsigned short		 device_spec;
+	unsigned short		 state_changes;
+	XkbMapChangesRec	 map;
+	XkbControlsChangesRec	 ctrls;
+	XkbIndicatorChangesRec	 indicators;
+	XkbNameChangesRec	 names;
+	XkbCompatChangesRec	 compat;
+} XkbChangesRec, *XkbChangesPtr;
+
+	/*
+	 * These data structures are used to construct a keymap from 
+	 * a set of components or to list components in the server
+	 * database.
+	 */
+typedef struct _XkbComponentNames {
+	char *			 keymap;
+	char *			 keycodes;
+	char *			 types;
+	char *			 compat;
+	char *			 symbols;
+	char *			 geometry;
+} XkbComponentNamesRec, *XkbComponentNamesPtr;
+
+typedef struct _XkbComponentName {
+	unsigned short		flags;
+	char *			name;
+} XkbComponentNameRec,*XkbComponentNamePtr;
+
+typedef struct _XkbComponentList {
+	int			num_keymaps;
+	int			num_keycodes;
+	int			num_types;
+	int			num_compat;
+	int			num_symbols;
+	int			num_geometry;
+	XkbComponentNamePtr	keymaps;
+	XkbComponentNamePtr 	keycodes;
+	XkbComponentNamePtr	types;
+	XkbComponentNamePtr	compat;
+	XkbComponentNamePtr	symbols;
+	XkbComponentNamePtr	geometry;
+} XkbComponentListRec, *XkbComponentListPtr;
+
+	/*
+	 * The following data structures describe and track changes to a 
+	 * non-keyboard extension device 
+	 */
+typedef struct _XkbDeviceLedInfo {
+	unsigned short			led_class;
+	unsigned short			led_id;
+	unsigned int			phys_indicators;
+	unsigned int			maps_present;
+	unsigned int			names_present;
+	unsigned int			state;
+	Atom 				names[XkbNumIndicators];
+	XkbIndicatorMapRec		maps[XkbNumIndicators];
+} XkbDeviceLedInfoRec,*XkbDeviceLedInfoPtr;
+
+typedef struct _XkbDeviceInfo {
+	char *			name;
+	Atom			type;
+	unsigned short		device_spec;
+	Bool			has_own_state;
+	unsigned short		supported;
+	unsigned short		unsupported;
+
+	unsigned short		num_btns;
+	XkbAction *		btn_acts;
+
+	unsigned short		sz_leds;
+	unsigned short		num_leds;
+	unsigned short		dflt_kbd_fb;
+	unsigned short		dflt_led_fb;
+	XkbDeviceLedInfoPtr	leds;
+} XkbDeviceInfoRec,*XkbDeviceInfoPtr;
+
+#define	XkbXI_DevHasBtnActs(d)	(((d)->num_btns>0)&&((d)->btn_acts!=NULL))
+#define	XkbXI_LegalDevBtn(d,b)	(XkbXI_DevHasBtnActs(d)&&((b)<(d)->num_btns))
+#define	XkbXI_DevHasLeds(d)	(((d)->num_leds>0)&&((d)->leds!=NULL))
+
+typedef struct _XkbDeviceLedChanges {
+	unsigned short		led_class;
+	unsigned short		led_id;
+	unsigned int		defined; /* names or maps changed */
+	struct _XkbDeviceLedChanges *next;
+} XkbDeviceLedChangesRec,*XkbDeviceLedChangesPtr;
+
+typedef struct _XkbDeviceChanges {
+	unsigned int		changed;
+	unsigned short		first_btn;
+	unsigned short		num_btns;
+	XkbDeviceLedChangesRec 	leds;
+} XkbDeviceChangesRec,*XkbDeviceChangesPtr;
+
+#endif /* _XKBSTR_H_ */
diff --git a/xkb/XKBAlloc.c b/xkb/XKBAlloc.c
index f0a1f89..790aede 100644
--- a/xkb/XKBAlloc.c
+++ b/xkb/XKBAlloc.c
@@ -36,7 +36,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "misc.h"
 #include "inputstr.h"
 #include <xkbsrv.h>
-#include <X11/extensions/XKBgeom.h>
+#include "xkbgeom.h"
 
 /***===================================================================***/
 
diff --git a/xkb/XKBGAlloc.c b/xkb/XKBGAlloc.c
index 815cc95..7a75d20 100644
--- a/xkb/XKBGAlloc.c
+++ b/xkb/XKBGAlloc.c
@@ -37,7 +37,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "misc.h"
 #include "inputstr.h"
 #include <xkbsrv.h>
-#include <X11/extensions/XKBgeom.h>
+#include "xkbgeom.h"
 
 #ifdef X_NOT_POSIX
 #define Size_t unsigned int
diff --git a/xkb/maprules.c b/xkb/maprules.c
index 0fa356e..52a1cdc 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -46,7 +46,7 @@
 #include "misc.h"
 #include "inputstr.h"
 #include "dix.h"
-#include <X11/extensions/XKBstr.h>
+#include "xkbstr.h"
 #define XKBSRV_NEED_FILE_FUNCS
 #include <xkbsrv.h>
 
diff --git a/xkb/xkb.c b/xkb/xkb.c
index 26f2812..66edcc1 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -3870,7 +3870,7 @@ ProcXkbSetNames(ClientPtr client)
 
 /***====================================================================***/
 
-#include <X11/extensions/XKBgeom.h>
+#include "xkbgeom.h"
 
 #define	XkbSizeCountedString(s)  ((s)?((((2+strlen(s))+3)/4)*4):4)
 
diff --git a/xkb/xkb.h b/xkb/xkb.h
index 99b60bf..bc6c6c9 100644
--- a/xkb/xkb.h
+++ b/xkb/xkb.h
@@ -1,4 +1,5 @@
-/* #include "XKBfile.h" */
+#ifndef _XKB_H
+#define _XKB_H
 
 extern int ProcXkbUseExtension(ClientPtr client);
 extern int ProcXkbSelectEvents(ClientPtr client);
@@ -35,3 +36,5 @@ extern Bool XkbCopyKeymap(
     XkbDescPtr              src,
     XkbDescPtr              dst,
     Bool                    sendNotifies);
+
+#endif
diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
index 6301a32..bb1de9d 100644
--- a/xkb/xkbInit.c
+++ b/xkb/xkbInit.c
@@ -48,9 +48,9 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "property.h"
 #define	XKBSRV_NEED_FILE_FUNCS
 #include <xkbsrv.h>
-#include <X11/extensions/XKBgeom.h>
+#include "xkbgeom.h"
 #include <X11/extensions/XKMformat.h>
-#include <X11/extensions/XKBfile.h>
+#include "xkbfile.h"
 #include "xkb.h"
 
 #define	CREATE_ATOM(s)	MakeAtom(s,sizeof(s)-1,1)
diff --git a/xkb/xkbSwap.c b/xkb/xkbSwap.c
index da4c905..50b08f4 100644
--- a/xkb/xkbSwap.c
+++ b/xkb/xkbSwap.c
@@ -36,7 +36,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "misc.h"
 #include "inputstr.h"
 #include <xkbsrv.h>
-#include <X11/extensions/XKBstr.h>
+#include "xkbstr.h"
 #include "extnsionst.h"
 #include "xkb.h"
 
diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index 3cedf82..67843e9 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -42,7 +42,7 @@ THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 #define	XKBSRV_NEED_FILE_FUNCS
 #include <xkbsrv.h>
-#include <X11/extensions/XKBgeom.h>
+#include "xkbgeom.h"
 #include "xkb.h"
 
 int	XkbDisableLockActions = 0;
diff --git a/xkb/xkbfile.h b/xkb/xkbfile.h
new file mode 100644
index 0000000..d58bec6
--- /dev/null
+++ b/xkb/xkbfile.h
@@ -0,0 +1,480 @@
+/************************************************************
+ Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be 
+ used in advertising or publicity pertaining to distribution 
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability 
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+ 
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL 
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+
+#ifndef _XKBFILE_H_
+#define	_XKBFILE_H_ 1
+
+/***====================================================================***/
+
+#define	XkbXKMFile	0
+#define	XkbCFile	1
+#define	XkbXKBFile	2
+#define	XkbMessage	3
+
+#define	XkbMapDefined		(1<<0)
+#define	XkbStateDefined		(1<<1)
+
+typedef struct _XkbFileInfo {
+    unsigned		type;
+    unsigned		defined;
+    XkbDescPtr	 	xkb;
+} XkbFileInfo,*XkbFileInfoPtr;
+
+typedef void	(*XkbFileAddOnFunc)(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    int			/* fileSection */,
+    void *		/* priv */
+);
+
+/***====================================================================***/
+
+#define	_XkbSuccess			0
+#define	_XkbErrMissingNames		1
+#define	_XkbErrMissingTypes		2
+#define	_XkbErrMissingReqTypes		3
+#define	_XkbErrMissingSymbols		4
+#define	_XkbErrMissingVMods		5
+#define	_XkbErrMissingIndicators	6
+#define	_XkbErrMissingCompatMap		7
+#define	_XkbErrMissingSymInterps	8
+#define	_XkbErrMissingGeometry		9
+#define	_XkbErrIllegalDoodad		10
+#define	_XkbErrIllegalTOCType		11
+#define	_XkbErrIllegalContents		12
+#define	_XkbErrEmptyFile		13
+#define	_XkbErrFileNotFound		14
+#define	_XkbErrFileCannotOpen		15
+#define	_XkbErrBadValue			16
+#define	_XkbErrBadMatch			17
+#define	_XkbErrBadTypeName		18
+#define	_XkbErrBadTypeWidth		19
+#define	_XkbErrBadFileType		20
+#define	_XkbErrBadFileVersion		21
+#define	_XkbErrBadFileFormat		22
+#define	_XkbErrBadAlloc			23
+#define	_XkbErrBadLength		24
+#define	_XkbErrXReqFailure		25
+#define	_XkbErrBadImplementation	26
+
+extern char *		_XkbErrMessages[];
+extern unsigned		_XkbErrCode;
+extern char *		_XkbErrLocation;
+extern unsigned		_XkbErrData;
+
+/***====================================================================***/
+
+_XFUNCPROTOBEGIN
+
+extern	char *	XkbIndentText(
+    unsigned	/* size */
+);
+
+extern	char *	XkbAtomText(
+    Display *	/* dpy */,
+    Atom 	/* atm */,
+    unsigned	/* format */
+);
+
+extern char *	XkbKeysymText(
+    KeySym	/* sym */,
+    unsigned	/* format */
+);
+
+extern char *	XkbStringText(
+    char *	/* str */,
+    unsigned	/* format */
+);
+
+extern char *	XkbKeyNameText(
+    char *	/* name */,
+    unsigned	/* format */
+);
+
+extern char *
+XkbModIndexText(
+    unsigned	/* ndx */,
+    unsigned	/* format */
+);
+
+extern char *
+XkbModMaskText(
+    unsigned	/* mask */,
+    unsigned	/* format */
+);
+
+extern char *	XkbVModIndexText(
+    Display *	/* dpy */,
+    XkbDescPtr	/* xkb */,
+    unsigned	/* ndx */,
+    unsigned	/* format */
+);
+
+extern	char *	XkbVModMaskText(
+    Display *	/* dpy */,
+    XkbDescPtr	/* xkb */,
+    unsigned	/* modMask */,
+    unsigned	/* mask */,
+    unsigned	/* format */
+);
+
+extern char *	XkbConfigText(
+    unsigned 	/* config */,
+    unsigned 	/* format */
+);
+
+extern char *	XkbSIMatchText(
+    unsigned	/* type */,
+    unsigned	/* format */
+);
+
+extern char *	XkbIMWhichStateMaskText(
+    unsigned	/* use_which */,
+    unsigned	/* format */
+);
+
+extern char *	XkbAccessXDetailText(
+    unsigned	/* state */,
+    unsigned	/* format */
+);
+
+extern char *	XkbNKNDetailMaskText(
+    unsigned	/* detail */,
+    unsigned	/* format */
+);
+
+extern char *	XkbControlsMaskText(
+    unsigned	/* ctrls */,
+    unsigned	/* format */
+);
+
+extern char *	XkbGeomFPText(
+    int		/* val */,
+    unsigned 	/* format */
+);
+
+extern char *	XkbDoodadTypeText(
+    unsigned	/* type */,
+    unsigned	/* format */
+);
+
+extern char *	XkbActionTypeText(
+    unsigned	/* type */,
+    unsigned	/* format */
+);
+
+extern char *	XkbActionText(
+    Display *	/* dpy */,
+    XkbDescPtr	/* xkb */,
+    XkbAction *	/* action */,
+    unsigned	/* format */
+);
+
+extern char *	XkbBehaviorText(
+    XkbDescPtr 		/* xkb */,
+    XkbBehavior *	/* behavior */,
+    unsigned		/* format */
+);
+
+/***====================================================================***/
+
+#define	_XkbKSLower	(1<<0)
+#define	_XkbKSUpper	(1<<1)
+
+#define	XkbKSIsLower(k)		(_XkbKSCheckCase(k)&_XkbKSLower)
+#define	XkbKSIsUpper(k)		(_XkbKSCheckCase(k)&_XkbKSUpper)
+#define XkbKSIsKeypad(k)	(((k)>=XK_KP_Space)&&((k)<=XK_KP_Equal))
+#define	XkbKSIsDeadKey(k)	\
+		(((k)>=XK_dead_grave)&&((k)<=XK_dead_semivoiced_sound))
+
+extern	unsigned _XkbKSCheckCase(
+   KeySym	/* sym */
+);
+
+extern	int	 XkbFindKeycodeByName(
+    XkbDescPtr	/* xkb */,
+    char *	/* name */,
+    Bool	/* use_aliases */
+);
+
+extern	Bool	XkbLookupGroupAndLevel(
+    XkbDescPtr	/* xkb */,
+    int		/* key */,
+    int	*	/* mods_inout */,
+    int *	/* grp_inout */,
+    int	*	/* lvl_rtrn */
+);
+
+/***====================================================================***/
+
+extern	char *	XkbAtomGetString(
+    Display *	/* dpy */,
+    Atom 	/* atm */
+);
+
+extern	Atom	XkbInternAtom(
+    Display *	/* dpy */,
+    char *	/* name */,
+    Bool	/* onlyIfExists */
+);
+
+extern	Status	XkbChangeKbdDisplay(
+    Display *		/* newDpy */,
+    XkbFileInfo *	/* result */
+);
+
+extern	Atom	XkbChangeAtomDisplay(
+    Display *	/* oldDpy */,
+    Display *	/* newDpy */,
+    Atom	/* atm */
+);
+
+extern	void	XkbInitAtoms(
+    Display *	/* dpy */
+);
+
+/***====================================================================***/
+
+#ifdef _XKBGEOM_H_
+
+#define	XkbDW_Unknown	0
+#define	XkbDW_Doodad	1
+#define	XkbDW_Section	2
+typedef struct _XkbDrawable {
+	int		type;
+	int		priority;
+	union {
+	    XkbDoodadPtr	doodad;
+	    XkbSectionPtr	section;
+	} u;
+	struct _XkbDrawable *	next;
+} XkbDrawableRec,*XkbDrawablePtr; 
+
+extern	XkbDrawablePtr
+XkbGetOrderedDrawables(
+    XkbGeometryPtr	/* geom */,
+    XkbSectionPtr	/* section */
+);
+
+extern	void
+XkbFreeOrderedDrawables(
+    XkbDrawablePtr	/* draw */
+);
+
+#endif
+
+/***====================================================================***/
+
+extern	unsigned	XkbConvertGetByNameComponents(
+    Bool		/* toXkm */,
+    unsigned 		/* orig */
+);
+
+extern	unsigned	XkbConvertXkbComponents(
+    Bool		/* toXkm */,
+    unsigned 		/* orig */
+);
+
+extern	Bool	XkbDetermineFileType(
+    XkbFileInfo *	/* xkb */,
+    int			/* format */,
+    int *		/* opts_missing */
+);
+
+extern	Bool	XkbNameMatchesPattern(
+    char *		/* name */,
+    char *		/* pattern */
+);
+
+/***====================================================================***/
+
+extern	Bool	XkbWriteXKBKeycodes(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBKeyTypes(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBCompatMap(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBSymbols(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBGeometry(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBSemantics(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBLayout(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBKeymap(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* topLevel */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteXKBFile(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */,
+    Bool		/* showImplicit */,
+    XkbFileAddOnFunc	/* addOn */,
+    void *		/* priv */
+);
+
+extern	Bool	XkbWriteCFile(
+    FILE *		/* file */,
+    char *		/* name */,
+    XkbFileInfo *	/* info */
+);
+
+extern	Bool	XkbWriteXKMFile(
+    FILE *		/* file */,
+    XkbFileInfo *	/* result */
+);
+
+extern	Bool	XkbWriteToServer(
+    XkbFileInfo *	/* result */
+);
+
+extern	void	XkbEnsureSafeMapName(
+    char *		/* name */
+);
+
+extern	Bool	XkbWriteXKBKeymapForNames(
+    FILE *			/* file */,
+    XkbComponentNamesPtr	/* names */,
+    Display *			/* dpy */,
+    XkbDescPtr			/* xkb */,
+    unsigned			/* want */,
+    unsigned			/* need */
+);
+
+extern	Status	XkbMergeFile(
+    XkbDescPtr			/* xkb */,
+    XkbFileInfo			/* finfo */
+);
+
+/***====================================================================***/
+
+extern Bool	XkmProbe(
+    FILE *		/* file */
+);
+
+extern unsigned XkbReadFromServer(
+    Display *		/* dpy */,
+    unsigned		/* need */,
+    unsigned		/* want */,
+    XkbFileInfo *	/* result */
+);
+
+extern unsigned	XkmReadFile(
+    FILE *		/* file */,
+    unsigned		/* need */,
+    unsigned		/* want */,
+    XkbFileInfo *	/* result */
+);
+
+#ifdef _XKMFORMAT_H_
+
+extern Bool	XkmReadTOC(
+    FILE *              /* file */,
+    xkmFileInfo *       /* file_info */,
+    int                 /* max_toc */,
+    xkmSectionInfo *    /* toc */
+);
+
+extern xkmSectionInfo *XkmFindTOCEntry(
+    xkmFileInfo *       /* finfo */,
+    xkmSectionInfo *    /* toc */,
+    unsigned            /* type */
+);
+
+extern Bool	XkmReadFileSection(
+    FILE *              /* file */,
+    xkmSectionInfo *    /* toc */,
+    XkbFileInfo *       /* result */,
+    unsigned *          /* loaded_rtrn */
+);
+
+extern char *	XkmReadFileSectionName(
+    FILE *		/* file */,
+    xkmSectionInfo *	/* toc */
+);
+
+#endif /* _XKMFORMAT_H  */
+
+_XFUNCPROTOEND
+
+#endif /* _XKBFILE_H_ */
diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c
index 05344b4..06d3519 100644
--- a/xkb/xkbfmisc.c
+++ b/xkb/xkbfmisc.c
@@ -42,10 +42,10 @@
 #include "misc.h"
 #include "inputstr.h"
 #include "dix.h"
-#include <X11/extensions/XKBstr.h>
+#include "xkbstr.h"
 #define XKBSRV_NEED_FILE_FUNCS	1
 #include <xkbsrv.h>
-#include <X11/extensions/XKBgeom.h>
+#include "xkbgeom.h"
 #include "xkb.h"
 
 unsigned
diff --git a/xkb/xkbgeom.h b/xkb/xkbgeom.h
new file mode 100644
index 0000000..a6918b4
--- /dev/null
+++ b/xkb/xkbgeom.h
@@ -0,0 +1,655 @@
+/************************************************************
+Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be 
+used in advertising or publicity pertaining to distribution 
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability 
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS 
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL 
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************/
+
+#ifndef _XKBGEOM_H_
+#define	_XKBGEOM_H_
+
+#include "xkbstr.h"
+
+#define XkbAddGeomKeyAlias 		SrvXkbAddGeomKeyAlias
+#define XkbAddGeomColor 		SrvXkbAddGeomColor
+#define XkbAddGeomDoodad		SrvXkbAddGeomDoodad
+#define XkbAddGeomKey			SrvXkbAddGeomKey
+#define XkbAddGeomOutline		SrvXkbAddGeomOutline
+#define XkbAddGeomOverlay		SrvXkbAddGeomOverlay
+#define XkbAddGeomOverlayRow		SrvXkbAddGeomOverlayRow
+#define	XkbAddGeomOverlayKey		SrvXkbAddGeomOverlayKey
+#define XkbAddGeomProperty		SrvXkbAddGeomProperty
+#define XkbAddGeomRow			SrvXkbAddGeomRow
+#define XkbAddGeomSection		SrvXkbAddGeomSection
+#define XkbAddGeomShape			SrvXkbAddGeomShape
+#define XkbAllocGeomKeyAliases		SrvXkbAllocGeomKeyAliases
+#define XkbAllocGeomColors		SrvXkbAllocGeomColors
+#define XkbAllocGeomDoodads		SrvXkbAllocGeomDoodads
+#define XkbAllocGeomKeys		SrvXkbAllocGeomKeys
+#define XkbAllocGeomOutlines		SrvXkbAllocGeomOutlines
+#define XkbAllocGeomPoints		SrvXkbAllocGeomPoints
+#define XkbAllocGeomProps		SrvXkbAllocGeomProps
+#define XkbAllocGeomRows		SrvXkbAllocGeomRows
+#define XkbAllocGeomSectionDoodads	SrvXkbAllocGeomSectionDoodads
+#define XkbAllocGeomSections		SrvXkbAllocGeomSections
+#define	XkbAllocGeomOverlays		SrvXkbAllocGeomOverlays
+#define	XkbAllocGeomOverlayRows		SrvXkbAllocGeomOverlayRows
+#define	XkbAllocGeomOverlayKeys		SrvXkbAllocGeomOverlayKeys
+#define XkbAllocGeomShapes		SrvXkbAllocGeomShapes
+#define XkbAllocGeometry		SrvXkbAllocGeometry
+#define XkbFreeGeomKeyAliases		SrvXkbFreeGeomKeyAliases
+#define XkbFreeGeomColors		SrvXkbFreeGeomColors
+#define XkbFreeGeomDoodads		SrvXkbFreeGeomDoodads
+#define XkbFreeGeomProperties		SrvXkbFreeGeomProperties
+#define	XkbFreeGeomOverlayKeys		SrvXkbFreeGeomOverlayKeys
+#define	XkbFreeGeomOverlayRows		SrvXkbFreeGeomOverlayRows
+#define	XkbFreeGeomOverlays		SrvXkbFreeGeomOverlays
+#define	XkbFreeGeomKeys			SrvXkbFreeGeomKeys
+#define	XkbFreeGeomRows			SrvXkbFreeGeomRows
+#define XkbFreeGeomSections		SrvXkbFreeGeomSections
+#define	XkbFreeGeomPoints		SrvXkbFreeGeomPoints
+#define	XkbFreeGeomOutlines		SrvXkbFreeGeomOutlines
+#define XkbFreeGeomShapes		SrvXkbFreeGeomShapes
+#define XkbFreeGeometry			SrvXkbFreeGeometry
+
+typedef	struct _XkbProperty {
+	char	*name;
+	char	*value;
+} XkbPropertyRec,*XkbPropertyPtr;
+
+typedef struct _XkbColor {
+	unsigned int 	pixel;
+	char *		spec;
+} XkbColorRec,*XkbColorPtr;
+
+typedef	struct _XkbPoint {
+	short	x;
+	short	y;
+} XkbPointRec, *XkbPointPtr;
+
+typedef struct	_XkbBounds {
+	short	x1,y1;
+	short	x2,y2;
+} XkbBoundsRec, *XkbBoundsPtr;
+#define	XkbBoundsWidth(b)	(((b)->x2)-((b)->x1))
+#define	XkbBoundsHeight(b)	(((b)->y2)-((b)->y1))
+
+typedef struct _XkbOutline {
+	unsigned short	num_points;
+	unsigned short	sz_points;
+	unsigned short	corner_radius;
+	XkbPointPtr	points;
+} XkbOutlineRec, *XkbOutlinePtr;
+
+typedef struct _XkbShape {
+	Atom	 	 name;
+	unsigned short	 num_outlines;
+	unsigned short	 sz_outlines;
+	XkbOutlinePtr	 outlines;
+	XkbOutlinePtr	 approx;
+	XkbOutlinePtr	 primary;
+	XkbBoundsRec	 bounds;
+} XkbShapeRec, *XkbShapePtr;
+#define	XkbOutlineIndex(s,o)	((int)((o)-&(s)->outlines[0]))
+
+typedef struct _XkbShapeDoodad {
+	Atom		 name;
+	unsigned char	 type;
+	unsigned char	 priority;
+	short		 top;
+	short		 left;
+	short	 	 angle;
+	unsigned short	 color_ndx;
+	unsigned short	 shape_ndx;
+} XkbShapeDoodadRec, *XkbShapeDoodadPtr;
+#define	XkbShapeDoodadColor(g,d)	(&(g)->colors[(d)->color_ndx])
+#define	XkbShapeDoodadShape(g,d)	(&(g)->shapes[(d)->shape_ndx])
+#define	XkbSetShapeDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
+#define	XkbSetShapeDoodadShape(g,d,s)	((d)->shape_ndx= (s)-&(g)->shapes[0])
+
+typedef struct _XkbTextDoodad {
+	Atom		 name;
+	unsigned char	 type;
+	unsigned char	 priority;
+	short	 	 top;
+	short	 	 left;
+	short	 	 angle;
+	short	 	 width;
+	short		 height;
+	unsigned short	 color_ndx;
+	char *		 text;
+	char *		 font;
+} XkbTextDoodadRec, *XkbTextDoodadPtr;
+#define	XkbTextDoodadColor(g,d)	(&(g)->colors[(d)->color_ndx])
+#define	XkbSetTextDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
+
+typedef struct _XkbIndicatorDoodad {
+	Atom		 name;
+	unsigned char	 type;
+	unsigned char	 priority;
+	short	 	 top;
+	short	 	 left;
+	short		 angle;
+	unsigned short	 shape_ndx;
+	unsigned short	 on_color_ndx;
+	unsigned short	 off_color_ndx;
+} XkbIndicatorDoodadRec, *XkbIndicatorDoodadPtr;
+#define	XkbIndicatorDoodadShape(g,d)	(&(g)->shapes[(d)->shape_ndx])
+#define	XkbIndicatorDoodadOnColor(g,d)	(&(g)->colors[(d)->on_color_ndx])
+#define	XkbIndicatorDoodadOffColor(g,d)	(&(g)->colors[(d)->off_color_ndx])
+#define	XkbSetIndicatorDoodadOnColor(g,d,c) \
+				((d)->on_color_ndx= (c)-&(g)->colors[0])
+#define	XkbSetIndicatorDoodadOffColor(g,d,c) \
+				((d)->off_color_ndx= (c)-&(g)->colors[0])
+#define	XkbSetIndicatorDoodadShape(g,d,s) \
+				((d)->shape_ndx= (s)-&(g)->shapes[0])
+
+typedef struct _XkbLogoDoodad {
+	Atom		 name;
+	unsigned char	 type;
+	unsigned char	 priority;
+	short		 top;
+	short		 left;
+	short	 	 angle;
+	unsigned short	 color_ndx;
+	unsigned short	 shape_ndx;
+	char *		 logo_name;
+} XkbLogoDoodadRec, *XkbLogoDoodadPtr;
+#define	XkbLogoDoodadColor(g,d)		(&(g)->colors[(d)->color_ndx])
+#define	XkbLogoDoodadShape(g,d)		(&(g)->shapes[(d)->shape_ndx])
+#define	XkbSetLogoDoodadColor(g,d,c)	((d)->color_ndx= (c)-&(g)->colors[0])
+#define	XkbSetLogoDoodadShape(g,d,s)	((d)->shape_ndx= (s)-&(g)->shapes[0])
+
+typedef struct _XkbAnyDoodad {
+	Atom		 name;
+	unsigned char	 type;
+	unsigned char	 priority;
+	short	 	 top;
+	short	 	 left;
+	short		 angle;
+} XkbAnyDoodadRec, *XkbAnyDoodadPtr;
+
+typedef union _XkbDoodad {
+	XkbAnyDoodadRec		any;
+	XkbShapeDoodadRec	shape;
+	XkbTextDoodadRec	text;
+	XkbIndicatorDoodadRec	indicator;
+	XkbLogoDoodadRec	logo;
+} XkbDoodadRec, *XkbDoodadPtr;
+
+#define	XkbUnknownDoodad	0
+#define	XkbOutlineDoodad	1
+#define	XkbSolidDoodad		2
+#define	XkbTextDoodad		3
+#define	XkbIndicatorDoodad	4
+#define	XkbLogoDoodad		5
+
+typedef struct _XkbKey {
+	XkbKeyNameRec	 name;
+	short		 gap;
+	unsigned char	 shape_ndx;
+	unsigned char	 color_ndx;
+} XkbKeyRec, *XkbKeyPtr;
+#define	XkbKeyShape(g,k)	(&(g)->shapes[(k)->shape_ndx])
+#define	XkbKeyColor(g,k)	(&(g)->colors[(k)->color_ndx])
+#define	XkbSetKeyShape(g,k,s)	((k)->shape_ndx= (s)-&(g)->shapes[0])
+#define	XkbSetKeyColor(g,k,c)	((k)->color_ndx= (c)-&(g)->colors[0])
+
+typedef struct _XkbRow {
+	short	 	top;
+	short	 	left;
+	unsigned short	num_keys;
+	unsigned short	sz_keys;
+	int		vertical;
+	XkbKeyPtr	keys;
+	XkbBoundsRec	bounds;
+} XkbRowRec, *XkbRowPtr;
+
+typedef struct _XkbSection {
+	Atom		 name;
+	unsigned char	 priority;
+	short	 	 top;
+	short	 	 left;
+	unsigned short	 width;
+	unsigned short	 height;
+	short	 	 angle;
+	unsigned short	 num_rows;
+	unsigned short	 num_doodads;
+	unsigned short	 num_overlays;
+	unsigned short	 sz_rows;
+	unsigned short	 sz_doodads;
+	unsigned short	 sz_overlays;
+	XkbRowPtr	 rows;
+	XkbDoodadPtr	 doodads;
+	XkbBoundsRec	 bounds;
+	struct _XkbOverlay *overlays;
+} XkbSectionRec, *XkbSectionPtr;
+
+typedef	struct _XkbOverlayKey {
+	XkbKeyNameRec	over;
+	XkbKeyNameRec	under;
+} XkbOverlayKeyRec,*XkbOverlayKeyPtr;
+
+typedef struct _XkbOverlayRow {
+	unsigned short		row_under;
+	unsigned short		num_keys;
+	unsigned short		sz_keys;
+	XkbOverlayKeyPtr	keys;
+} XkbOverlayRowRec,*XkbOverlayRowPtr;
+
+typedef struct _XkbOverlay {
+	Atom			name;
+	XkbSectionPtr		section_under;
+	unsigned short		num_rows;
+	unsigned short		sz_rows;
+	XkbOverlayRowPtr	rows;
+	XkbBoundsPtr		bounds;
+} XkbOverlayRec,*XkbOverlayPtr;
+
+typedef struct _XkbGeometry {
+	Atom		 name;
+	unsigned short	 width_mm;
+	unsigned short	 height_mm;
+	char *		 label_font;
+	XkbColorPtr	 label_color;
+	XkbColorPtr	 base_color;
+	unsigned short	 sz_properties;
+	unsigned short	 sz_colors;
+	unsigned short	 sz_shapes;
+	unsigned short   sz_sections;
+	unsigned short	 sz_doodads;
+	unsigned short	 sz_key_aliases;
+	unsigned short	 num_properties;
+	unsigned short	 num_colors;
+	unsigned short	 num_shapes;
+	unsigned short	 num_sections;
+	unsigned short	 num_doodads;
+	unsigned short	 num_key_aliases;
+	XkbPropertyPtr	 properties;
+	XkbColorPtr	 colors;
+	XkbShapePtr	 shapes;
+	XkbSectionPtr	 sections;
+	XkbDoodadPtr	 doodads;
+	XkbKeyAliasPtr	 key_aliases;
+} XkbGeometryRec;
+#define	XkbGeomColorIndex(g,c)	((int)((c)-&(g)->colors[0]))
+
+#define	XkbGeomPropertiesMask	(1<<0)
+#define	XkbGeomColorsMask	(1<<1)
+#define	XkbGeomShapesMask	(1<<2)
+#define	XkbGeomSectionsMask	(1<<3)
+#define	XkbGeomDoodadsMask	(1<<4)
+#define	XkbGeomKeyAliasesMask	(1<<5)
+#define	XkbGeomAllMask		(0x3f)
+
+typedef struct _XkbGeometrySizes {
+	unsigned int	which;
+	unsigned short	num_properties;
+	unsigned short	num_colors;
+	unsigned short	num_shapes;
+	unsigned short	num_sections;
+	unsigned short	num_doodads;
+	unsigned short	num_key_aliases;
+} XkbGeometrySizesRec,*XkbGeometrySizesPtr;
+
+_XFUNCPROTOBEGIN
+
+extern	XkbPropertyPtr
+XkbAddGeomProperty(
+    XkbGeometryPtr	/* geom */,
+    char *		/* name */,
+    char *		/* value */
+);
+
+extern	XkbKeyAliasPtr
+XkbAddGeomKeyAlias(
+    XkbGeometryPtr	/* geom */,
+    char *		/* alias */,
+    char *		/* real */
+);
+
+extern	XkbColorPtr
+XkbAddGeomColor(
+    XkbGeometryPtr	/* geom */,
+    char *		/* spec */,
+    unsigned int	/* pixel */
+);
+
+extern	XkbOutlinePtr
+XkbAddGeomOutline(
+    XkbShapePtr		/* shape */,
+    int			/* sz_points */
+);
+
+extern XkbShapePtr
+XkbAddGeomShape(
+    XkbGeometryPtr	/* geom */,
+    Atom		/* name */,
+    int			/* sz_outlines */
+);
+
+extern XkbKeyPtr
+XkbAddGeomKey(
+    XkbRowPtr		/* row */
+);
+
+extern XkbRowPtr
+XkbAddGeomRow(
+    XkbSectionPtr	/* section */,
+    int			/* sz_keys */
+);
+
+extern XkbSectionPtr
+XkbAddGeomSection(
+    XkbGeometryPtr	/* geom */,
+    Atom		/* name */,
+    int			/* sz_rows */,
+    int			/* sz_doodads */,
+    int			/* sz_overlays */
+);
+
+extern XkbOverlayPtr
+XkbAddGeomOverlay(
+    XkbSectionPtr	/* section */,
+    Atom		/* name */,
+    int			/* sz_rows */
+);
+
+extern XkbOverlayRowPtr
+XkbAddGeomOverlayRow(
+    XkbOverlayPtr	/* overlay */,
+    int			/* row_under */,
+    int			/* sz_keys */
+);
+
+extern XkbOverlayKeyPtr
+XkbAddGeomOverlayKey(
+    XkbOverlayPtr	/* overlay */,
+    XkbOverlayRowPtr	/* row */,
+    char *		/* over */,
+    char *		/* under */
+);
+
+extern XkbDoodadPtr
+XkbAddGeomDoodad(
+    XkbGeometryPtr	/* geom */,
+    XkbSectionPtr	/* section */,
+    Atom		/* name */
+);
+
+
+extern void
+XkbFreeGeomKeyAliases(
+    XkbGeometryPtr	/* geom */,
+    int			/* first */,
+    int			/* count */,
+    Bool		/* freeAll */
+);
+
+extern void
+XkbFreeGeomColors(
+    XkbGeometryPtr	/* geom */,
+    int			/* first */,
+    int			/* count */,
+    Bool		/* freeAll */
+);
+
+extern void
+XkbFreeGeomDoodads(
+    XkbDoodadPtr	/* doodads */,
+    int			/* nDoodads */,
+    Bool		/* freeAll */
+);
+
+
+extern void
+XkbFreeGeomProperties(
+    XkbGeometryPtr	/* geom */,
+    int			/* first */,
+    int			/* count */,
+    Bool		/* freeAll */
+);
+
+extern void
+XkbFreeGeomOverlayKeys(
+    XkbOverlayRowPtr	/* row */,
+    int			/* first */,
+    int			/* count */,
+    Bool		/* freeAll */
+);
+
+extern void
+XkbFreeGeomOverlayRows(
+    XkbOverlayPtr	/* overlay */,
+    int			/* first */,
+    int			/* count */,
+    Bool		/* freeAll */
+);
+
+extern void
+XkbFreeGeomOverlays(
+    XkbSectionPtr	/* section */,
+    int			/* first */,
+    int			/* count */,
+    Bool		/* freeAll */
+);
+
+extern void
+XkbFreeGeomKeys(
+    XkbRowPtr		/* row */,
+    int			/* first */,
+    int			/* count */,
+    Bool		/* freeAll */
+);
+
+extern void
+XkbFreeGeomRows(
+    XkbSectionPtr	/* section */,
+    int			/* first */,
+    int			/* count */,
+    Bool		/* freeAll */
+);
+
+extern void
+XkbFreeGeomSections(
+    XkbGeometryPtr	/* geom */,
+    int			/* first */,
+    int			/* count */,
+    Bool		/* freeAll */
+);
+
+
+extern void
+XkbFreeGeomPoints(
+    XkbOutlinePtr	/* outline */,
+    int			/* first */,
+    int			/* count */,
+    Bool		/* freeAll */
+);
+
+extern void
+XkbFreeGeomOutlines(
+    XkbShapePtr		/* shape */,
+    int			/* first */,
+    int			/* count */,
+    Bool		/* freeAll */
+);
+
+extern void
+XkbFreeGeomShapes(
+    XkbGeometryPtr	/* geom */,
+    int			/* first */,
+    int			/* count */,
+    Bool		/* freeAll */
+);
+
+extern void
+XkbFreeGeometry(
+    XkbGeometryPtr	/* geom */,
+    unsigned int	/* which */,
+    Bool		/* freeMap */
+);
+
+extern Status
+XkbAllocGeomProps(
+    XkbGeometryPtr	/* geom */,
+    int			/* nProps */
+);
+
+extern Status
+XkbAllocGeomKeyAliases(
+    XkbGeometryPtr	/* geom */,
+    int			/* nAliases */
+);
+
+extern Status
+XkbAllocGeomColors(
+    XkbGeometryPtr	/* geom */,
+    int			/* nColors */
+);
+
+extern Status
+XkbAllocGeomShapes(
+    XkbGeometryPtr	/* geom */,
+    int			/* nShapes */
+);
+
+extern Status
+XkbAllocGeomSections(
+    XkbGeometryPtr	/* geom */,
+    int			/* nSections */
+);
+
+extern Status
+XkbAllocGeomOverlays(
+    XkbSectionPtr	/* section */,
+    int			/* num_needed */
+);
+
+extern Status
+XkbAllocGeomOverlayRows(
+    XkbOverlayPtr	/* overlay */,
+    int			/* num_needed */
+);
+
+extern Status
+XkbAllocGeomOverlayKeys(
+    XkbOverlayRowPtr	/* row */,
+    int			/* num_needed */
+);
+
+extern Status
+XkbAllocGeomDoodads(
+    XkbGeometryPtr	/* geom */,
+    int			/* nDoodads */
+);
+
+extern Status
+XkbAllocGeomSectionDoodads(
+    XkbSectionPtr	/* section */,
+    int			/* nDoodads */
+);
+
+extern Status
+XkbAllocGeomOutlines(
+    XkbShapePtr		/* shape */,
+    int			/* nOL */
+);
+
+extern Status
+XkbAllocGeomRows(
+    XkbSectionPtr	/* section */,
+    int			/* nRows */
+);
+
+extern Status
+XkbAllocGeomPoints(
+    XkbOutlinePtr	/* ol */,
+    int			/* nPts */
+);
+
+extern Status
+XkbAllocGeomKeys(
+    XkbRowPtr		/* row */,
+    int			/* nKeys */
+);
+
+extern	Status
+XkbAllocGeometry(
+	XkbDescPtr		/* xkb */,
+	XkbGeometrySizesPtr	/* sizes */
+);
+
+extern	Status
+XkbSetGeometry(
+	Display *		/* dpy */,
+	unsigned		/* deviceSpec */,
+	XkbGeometryPtr		/* geom */
+);
+
+extern	Bool
+XkbComputeShapeTop(
+	XkbShapePtr		/* shape */,
+	XkbBoundsPtr		/* bounds */
+);
+
+extern	Bool
+XkbComputeShapeBounds(
+	XkbShapePtr		/* shape */
+);
+
+extern	Bool
+XkbComputeRowBounds(
+	XkbGeometryPtr		/* geom */,
+	XkbSectionPtr		/* section */,
+	XkbRowPtr		/* row */
+);
+
+extern	Bool
+XkbComputeSectionBounds(
+	XkbGeometryPtr		/* geom */,
+	XkbSectionPtr		/* section */
+);
+
+extern	char *
+XkbFindOverlayForKey(
+	XkbGeometryPtr		/* geom */,
+	XkbSectionPtr		/* wanted */,
+	char *			/* under */
+);
+
+extern	Status
+XkbGetGeometry(
+    Display *			/* dpy */,
+    XkbDescPtr			/* xkb */
+);
+
+extern	Status
+XkbGetNamedGeometry(
+    Display *			/* dpy */,
+    XkbDescPtr			/* xkb */,
+    Atom			/* name */
+);
+
+_XFUNCPROTOEND
+
+#endif /* _XKBGEOM_H_ */
diff --git a/xkb/xkbout.c b/xkb/xkbout.c
index 8905ef4..fc4e43e 100644
--- a/xkb/xkbout.c
+++ b/xkb/xkbout.c
@@ -40,12 +40,12 @@
 #include "misc.h"
 #include "inputstr.h"
 #include "dix.h"
-#include <X11/extensions/XKBstr.h>
+#include "xkbstr.h"
 #define XKBSRV_NEED_FILE_FUNCS	1
 #include <xkbsrv.h>
 
-#include <X11/extensions/XKBgeom.h>
-#include <X11/extensions/XKBfile.h>
+#include "xkbgeom.h"
+#include "xkbfile.h"
 
 #define	VMOD_HIDE_VALUE	0
 #define	VMOD_SHOW_VALUE	1
diff --git a/xkb/xkbtext.c b/xkb/xkbtext.c
index 4983e2b..1520a9f 100644
--- a/xkb/xkbtext.c
+++ b/xkb/xkbtext.c
@@ -40,10 +40,10 @@
 #include "misc.h"
 #include "inputstr.h"
 #include "dix.h"
-#include <X11/extensions/XKBstr.h>
+#include "xkbstr.h"
 #define XKBSRV_NEED_FILE_FUNCS	1
 #include <xkbsrv.h>
-#include <X11/extensions/XKBgeom.h>
+#include "xkbgeom.h"
 
 /***====================================================================***/
 
diff --git a/xkb/xkmread.c b/xkb/xkmread.c
index c6c1842..8829618 100644
--- a/xkb/xkmread.c
+++ b/xkb/xkmread.c
@@ -39,10 +39,10 @@
 #include <X11/keysym.h>
 #include "misc.h"
 #include "inputstr.h"
-#include <X11/extensions/XKBstr.h>
+#include "xkbstr.h"
 #define	 XKBSRV_NEED_FILE_FUNCS
 #include <xkbsrv.h>
-#include <X11/extensions/XKBgeom.h>
+#include "xkbgeom.h"
 
 Atom
 XkbInternAtom(Display *dpy,char *str,Bool only_if_exists)
commit 37867626e314e74031378a8a4ff06f69b899a3b2
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Fri Feb 1 14:41:04 2008 +1100

    main(): Remove uncredible failure
    
    NO, NO, NO.
    
    NO.
    
    The only way this could possibly be worse is if you were viewing it in
    Comic Sans.

diff --git a/dix/main.c b/dix/main.c
index 9114f00..068dae9 100644
--- a/dix/main.c
+++ b/dix/main.c
@@ -137,8 +137,6 @@ _X_EXPORT PaddingInfo PixmapWidthPaddingInfo[33];
 
 int connBlockScreenStart;
 
-static int restart = 0;
-
 _X_EXPORT void
 NotImplemented(xEvent *from, xEvent *to)
 {
@@ -264,13 +262,6 @@ main(int argc, char *argv[], char *envp[])
     DarwinHandleGUI(argc, argv, envp);
 #endif
 
-    /* Notice if we're restarted.  Probably this is because we jumped through
-     * an uninitialized pointer */
-    if (restart)
-	FatalError("server restarted. Jumped through uninitialized pointer?\n");
-    else
-	restart = 1;
-
     CheckUserParameters(argc, argv, envp);
 
     CheckUserAuthorization();
commit e4eb7e5842f0f56f07e9cf3b16249c172d0a975d
Author: Daniel Stone <daniel at fooishbar.org>
Date:   Wed Jan 30 23:24:14 2008 +1100

    XKB: Delete xkberrs.c
    
    Get rid of the XKB errors code to save a bunch of space.

diff --git a/include/xkbsrv.h b/include/xkbsrv.h
index bf386e7..c7709f7 100644
--- a/include/xkbsrv.h
+++ b/include/xkbsrv.h
@@ -310,8 +310,7 @@ extern CARD32	xkbDebugFlags;
 #define	_XkbClearElems(a,f,l,t)	bzero(&(a)[f],((l)-(f)+1)*sizeof(t))
 #define	_XkbFree(p)		Xfree(p)
 
-#define	_XkbLibError(c,l,d) \
-	{ _XkbErrCode= (c); _XkbErrLocation= (l); _XkbErrData= (d); }
+#define	_XkbLibError(c,l,d) /* Epoch fail */
 #define	_XkbErrCode2(a,b) ((XID)((((unsigned int)(a))<<24)|((b)&0xffffff)))
 #define	_XkbErrCode3(a,b,c)	_XkbErrCode2(a,(((unsigned int)(b))<<16)|(c))
 #define	_XkbErrCode4(a,b,c,d) _XkbErrCode3(a,b,((((unsigned int)(c))<<8)|(d)))
diff --git a/xkb/Makefile.am b/xkb/Makefile.am
index 78cdf71..e750d60 100644
--- a/xkb/Makefile.am
+++ b/xkb/Makefile.am
@@ -32,7 +32,6 @@ XKBFILE_SRCS = \
         xkmread.c \
         xkbtext.c \
         xkbfmisc.c \
-        xkberrs.c \
         xkbout.c
 
 X11_SRCS = \
diff --git a/xkb/xkberrs.c b/xkb/xkberrs.c
deleted file mode 100644
index 3534356..0000000
--- a/xkb/xkberrs.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/************************************************************
- Copyright (c) 1994 by Silicon Graphics Computer Systems, Inc.
-
- Permission to use, copy, modify, and distribute this
- software and its documentation for any purpose and without
- fee is hereby granted, provided that the above copyright
- notice appear in all copies and that both that copyright
- notice and this permission notice appear in supporting
- documentation, and that the name of Silicon Graphics not be
- used in advertising or publicity pertaining to distribution
- of the software without specific prior written permission.
- Silicon Graphics makes no representation about the suitability
- of this software for any purpose. It is provided "as is"
- without any express or implied warranty.
-
- SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
- SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
- DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
- THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
- ********************************************************/
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#endif
-
-#include <stdio.h>
-#include <ctype.h>
-#include <stdlib.h>
-
-unsigned	_XkbErrCode;
-char *		_XkbErrLocation= NULL;
-unsigned	_XkbErrData;


More information about the xorg-commit mailing list