summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--X.h29
-rw-r--r--Xalloca.h14
-rw-r--r--Xfuncs.h32
-rw-r--r--Xmd.h18
-rw-r--r--Xos.h77
-rw-r--r--Xos_r.h93
-rw-r--r--Xosdefs.h27
-rw-r--r--Xthreads.h11
-rw-r--r--keysym.h13
-rw-r--r--keysymdef.h419
10 files changed, 677 insertions, 56 deletions
diff --git a/X.h b/X.h
index a892b0a..ffeea80 100644
--- a/X.h
+++ b/X.h
@@ -53,6 +53,8 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
+/* $XFree86: xc/include/X.h,v 1.5 2001/12/14 19:53:25 dawes Exp $ */
+
#define X_PROTOCOL 11 /* current protocol version */
#define X_PROTOCOL_REVISION 0 /* current minor version */
@@ -64,23 +66,44 @@ SOFTWARE.
* client or library code.
*/
#ifndef _XSERVER64
+# ifndef _XTYPEDEF_XID
+# define _XTYPEDEF_XID
typedef unsigned long XID;
+# endif
+# ifndef _XTYPEDEF_MASK
+# define _XTYPEDEF_MASK
typedef unsigned long Mask;
-typedef unsigned long Atom;
+# endif
+# ifndef _XTYPEDEF_ATOM
+# define _XTYPEDEF_ATOM
+typedef unsigned long Atom; /* Also in Xdefs.h */
+# endif
typedef unsigned long VisualID;
typedef unsigned long Time;
#else
-#include <X11/Xmd.h>
+# include <X11/Xmd.h>
+# ifndef _XTYPEDEF_XID
+# define _XTYPEDEF_XID
typedef CARD32 XID;
+# endif
+# ifndef _XTYPEDEF_MASK
+# define _XTYPEDEF_MASK
typedef CARD32 Mask;
+# endif
+# ifndef _XTYPEDEF_ATOM
+# define _XTYPEDEF_ATOM
typedef CARD32 Atom;
+# endif
typedef CARD32 VisualID;
typedef CARD32 Time;
#endif
typedef XID Window;
typedef XID Drawable;
+#ifndef _XTYPEDEF_FONT
+# define _XTYPEDEF_FONT
typedef XID Font;
+#endif
typedef XID Pixmap;
typedef XID Cursor;
typedef XID Colormap;
@@ -93,7 +116,9 @@ typedef unsigned char KeyCode;
* RESERVED RESOURCE AND CONSTANT DEFINITIONS
*****************************************************************/
+#ifndef None
#define None 0L /* universal null resource or null atom */
+#endif
#define ParentRelative 1L /* background pixmap in CreateWindow
and ChangeWindowAttributes */
diff --git a/Xalloca.h b/Xalloca.h
index 4eb3d28..f010006 100644
--- a/Xalloca.h
+++ b/Xalloca.h
@@ -27,6 +27,7 @@ other dealings in this Software without prior written authorization
from The Open Group.
*/
+/* $XFree86: xc/include/Xalloca.h,v 3.11 2002/12/01 20:08:41 tsi Exp $ */
/*
* The purpose of this header is to define the macros ALLOCATE_LOCAL and
@@ -82,7 +83,6 @@ from The Open Group.
# else /* NCR */
# define ALLOCATE_LOCAL(size) alloca(size)
# endif
-# define DEALLOCATE_LOCAL(ptr) /* as nothing */
# endif /* defined(__HIGHC__) */
@@ -91,7 +91,6 @@ from The Open Group.
# define alloca __builtin_alloca
# endif /* !alloca */
# define ALLOCATE_LOCAL(size) alloca((int)(size))
-# define DEALLOCATE_LOCAL(ptr) /* as nothing */
# else /* ! __GNUC__ */
/*
@@ -100,22 +99,23 @@ from The Open Group.
* from alloca.h which #defines alloca.
*/
# ifndef NCR
-# if defined(vax) || defined(sun) || defined(apollo) || defined(stellar) || defined(USL) || defined(alloca)
+# if defined(vax) || defined(sun) || defined(apollo) || defined(stellar) || defined(alloca)
/*
* Some System V boxes extract alloca.o from /lib/libPW.a; if you
* decide that you don't want to use alloca, you might want to fix it here.
*/
/* alloca might be a macro taking one arg (hi, Sun!), so give it one. */
# ifndef __sgi /* IRIX 5/6 has definition */
+# ifndef __QNX__
# define __Xnullarg /* as nothing */
# ifndef X_NOT_STDC_ENV
extern void *alloca(__Xnullarg);
# else
extern char *alloca(__Xnullarg);
# endif
+# endif /* __QNX__ */
# endif /* __sgi */
# define ALLOCATE_LOCAL(size) alloca((int)(size))
-# define DEALLOCATE_LOCAL(ptr) /* as nothing */
# endif /* who does alloca */
# endif /* NCR */
# endif /* __GNUC__ */
@@ -130,6 +130,10 @@ from The Open Group.
# define ALLOCATE_LOCAL(_size) ALLOCATE_LOCAL_FALLBACK undefined!
# define DEALLOCATE_LOCAL(_ptr) DEALLOCATE_LOCAL_FALLBACK undefined!
# endif /* defined(ALLOCATE_LOCAL_FALLBACK && DEALLOCATE_LOCAL_FALLBACK) */
-#endif /* !defined(ALLOCATE_LOCAL) */
+#else
+# if !defined(DEALLOCATE_LOCAL)
+# define DEALLOCATE_LOCAL(_ptr) do {} while(0)
+# endif
+#endif /* defined(ALLOCATE_LOCAL) */
#endif /* XALLOCA_H */
diff --git a/Xfuncs.h b/Xfuncs.h
index e535082..4ea2c3f 100644
--- a/Xfuncs.h
+++ b/Xfuncs.h
@@ -25,6 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*
*/
+/* $XFree86: xc/include/Xfuncs.h,v 3.10 2002/05/31 18:45:38 dawes Exp $ */
#ifndef _XFUNCS_H_
#define _XFUNCS_H_
@@ -32,34 +33,25 @@ in this Software without prior written authorization from The Open Group.
#include <X11/Xosdefs.h>
/* the old Xfuncs.h, for pre-R6 */
+#if !(defined(XFree86LOADER) && defined(IN_MODULE))
#ifdef X_USEBFUNCS
void bcopy();
void bzero();
int bcmp();
#else
-#if (__STDC__ && !defined(X_NOT_STDC_ENV) && !defined(sun) && !defined(macII) && !defined(apollo)) || defined(SVR4) || defined(hpux) || defined(_IBMR2) || defined(_SEQUENT_)
+#if defined(SYSV)
+#include <memory.h>
+void bcopy();
+#define bzero(b,len) memset(b, 0, len)
+#define bcmp(b1,b2,len) memcmp(b1, b2, len)
+#else
#include <string.h>
#define _XFUNCS_H_INCLUDED_STRING_H
#define bcopy(b1,b2,len) memmove(b2, b1, (size_t)(len))
#define bzero(b,len) memset(b, 0, (size_t)(len))
#define bcmp(b1,b2,len) memcmp(b1, b2, (size_t)(len))
-#else
-#ifdef sgi
-#include <bstring.h>
-#else
-#ifdef SYSV
-#include <memory.h>
-void bcopy();
-#define bzero(b,len) memset(b, 0, len)
-#define bcmp(b1,b2,len) memcmp(b1, b2, len)
-#else /* bsd */
-void bcopy();
-void bzero();
-int bcmp();
-#endif /* SYSV */
-#endif /* sgi */
-#endif /* __STDC__ and relatives */
+#endif
#endif /* X_USEBFUNCS */
/* the new Xfuncs.h */
@@ -87,4 +79,10 @@ int bcmp();
#endif /* SYSV else */
#endif /* ! X_NOT_STDC_ENV else */
+#if defined(X_NOT_STDC_ENV) || (defined(sun) && !defined(SVR4))
+#define atexit(f) on_exit(f, 0)
+#endif
+
+#endif /* !(defined(XFree86LOADER) && defined(IN_MODULE)) */
+
#endif /* _XFUNCS_H_ */
diff --git a/Xmd.h b/Xmd.h
index 4623166..377b9bc 100644
--- a/Xmd.h
+++ b/Xmd.h
@@ -1,3 +1,4 @@
+/* $XFree86: xc/include/Xmd.h,v 3.16 2002/05/31 18:45:39 dawes Exp $ */
/***********************************************************
Copyright 1987, 1998 The Open Group
@@ -57,7 +58,12 @@ SOFTWARE.
#ifdef CRAY
#define WORD64 /* 64-bit architecture */
#endif
-#ifdef __alpha
+#if defined(__alpha) || defined(__alpha__) || \
+ defined(__ia64__) || defined(ia64) || \
+ defined(__sparc64__) || \
+ defined(__s390x__) || \
+ (defined(__hppa__) && defined(__LP64__)) || \
+ defined(__x86_64__) || defined(x86_64)
#define LONG64 /* 32/64-bit architecture */
#endif
#ifdef __sgi
@@ -147,10 +153,14 @@ typedef unsigned char CARD8;
typedef CARD32 BITS32;
typedef CARD16 BITS16;
-typedef CARD8 BYTE;
-
-typedef CARD8 BOOL;
+#ifndef I_NEED_OS2_H
+typedef CARD8 BYTE;
+typedef CARD8 BOOL;
+#else
+#define BYTE CARD8
+#define BOOL CARD8
+#endif
/*
* definitions for sign-extending bitfields on 64-bit architectures
diff --git a/Xos.h b/Xos.h
index 34edd34..64468bd 100644
--- a/Xos.h
+++ b/Xos.h
@@ -27,6 +27,7 @@ in this Software without prior written authorization from The Open Group.
* The X Window System is a Trademark of The Open Group.
*
*/
+/* $XFree86: xc/include/Xos.h,v 3.38 2002/05/31 18:45:39 dawes Exp $ */
/* This is a collection of things to try and minimize system dependencies
* in a "signficant" number of source files.
@@ -50,7 +51,7 @@ in this Software without prior written authorization from The Open Group.
#define __TYPES__
#endif /* __TYPES__ */
#else /* USG */
-#if defined(_POSIX_SOURCE) && (defined(MOTOROLA) || defined(AMOEBA))
+#if defined(_POSIX_SOURCE) && defined(MOTOROLA)
#undef _POSIX_SOURCE
#include <sys/types.h>
#define _POSIX_SOURCE
@@ -60,7 +61,7 @@ in this Software without prior written authorization from The Open Group.
#endif /* USG */
#ifdef _SEQUENT_
-/*
+/*
* in_systm.h compatibility between SysV and BSD types u_char u_short u_long
* select.h for typedef of args to select, fd_set, may use SVR4 later
*/
@@ -84,16 +85,28 @@ in this Software without prior written authorization from The Open Group.
#ifndef X_NOT_STDC_ENV
#include <string.h>
+#ifdef __STDC__
+#ifndef index
+#define index(s,c) (strchr((s),(c)))
+#endif
+#ifndef rindex
+#define rindex(s,c) (strrchr((s),(c)))
+#endif
+#else
#ifndef index
#define index strchr
#endif
#ifndef rindex
#define rindex strrchr
#endif
+#endif
#else
#ifdef SYSV
+#if defined(clipper) || defined(__clipper__)
+#include <malloc.h>
+#endif
#include <string.h>
#define index strchr
#define rindex strrchr
@@ -108,7 +121,7 @@ in this Software without prior written authorization from The Open Group.
/*
* strerror()
*/
-#if defined(X_NOT_STDC_ENV) || (defined(sun) && !defined(SVR4)) || defined(macII)
+#if (defined(X_NOT_STDC_ENV) || (defined(sun) && !defined(SVR4)) || defined(macII)) && !defined(__GLIBC__)
#ifndef strerror
extern char *sys_errlist[];
extern int sys_nerr;
@@ -120,7 +133,7 @@ extern int sys_nerr;
/*
* Get open(2) constants
*/
-#ifdef X_NOT_POSIX
+#if defined(X_NOT_POSIX)
#include <fcntl.h>
#if defined(USL) || defined(CRAY) || defined(MOTOROLA) || (defined(i386) && (defined(SYSV) || defined(SVR4))) || defined(__sxg__)
#include <unistd.h>
@@ -143,10 +156,10 @@ extern int sys_nerr;
#endif /* X_NOT_POSIX else */
/*
- * Get struct timeval
+ * Get struct timeval and struct tm
*/
-#if defined(SYSV) && !defined(_SEQUENT_)
+#if defined(SYSV) && !defined(_SEQUENT_)
#ifndef USL
#include <sys/time.h>
@@ -155,7 +168,7 @@ extern int sys_nerr;
#ifdef CRAY
#undef word
#endif /* CRAY */
-#if defined(USG) && !defined(CRAY) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__)
+#if defined(USG) && !defined(CRAY) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__) && !defined(clipper) && !defined(__clipper__)
struct timeval {
long tv_sec;
long tv_usec;
@@ -182,8 +195,7 @@ struct timezone {
#undef _POSIX_SOURCE
#include <sys/time.h>
#define _POSIX_SOURCE
-#else /* defined(_POSIX_SOURCE) && defined(SVR4) */
-#ifdef WIN32
+#elif defined(WIN32)
#include <time.h>
#if !defined(_WINSOCKAPI_) && !defined(_WILLWINSOCK_)
struct timeval {
@@ -199,12 +211,18 @@ struct timeval {
(t)->tv_sec = _gtodtmp.time; \
(t)->tv_usec = _gtodtmp.millitm * 1000; \
}
-#else /* WIN32 */
-#ifdef _SEQUENT_
+#elif defined(_SEQUENT_) || defined(Lynx)
#include <time.h>
-#endif /* _SEQUENT_ */
+#elif defined (__QNX__)
+typedef unsigned long fd_mask;
+/* Make sure we get 256 bit select masks */
+#define FD_SETSIZE 256
+#include <sys/select.h>
+#include <sys/time.h>
+#include <time.h>
+#else
#include <sys/time.h>
-#endif /* WIN32 else */
+#include <time.h>
#endif /* defined(_POSIX_SOURCE) && defined(SVR4) */
#endif /* SYSV */
@@ -220,13 +238,44 @@ struct timeval {
#endif
#endif /* XPG4 else */
+#ifdef __UNIXOS2__
+typedef unsigned long fd_mask;
+#include <limits.h>
+#define MAX_PATH _POSIX_PATH_MAX
+#endif
+
+#ifdef __GNU__
+#define PATH_MAX 4096
+#define MAXPATHLEN 4096
+#define OPEN_MAX 256 /* We define a reasonable limit. */
+#endif
+
/* use POSIX name for signal */
-#if defined(X_NOT_POSIX) && defined(SYSV) && !defined(SIGCHLD)
+#if defined(X_NOT_POSIX) && defined(SYSV) && !defined(SIGCHLD) && !defined(ISC)
#define SIGCHLD SIGCLD
#endif
#ifdef ISC
#include <sys/bsdtypes.h>
+#include <sys/limits.h>
+#define NGROUPS 16
+#endif
+
+#if defined(ISC) || \
+ (defined(linux) && !defined(__GLIBC__)) || \
+ (defined(__QNX__) && !defined(UNIXCONN))
+/*
+ * Some OS's may not have this
+ */
+
+#define X_NO_SYS_UN 1
+
+struct sockaddr_un {
+ short sun_family;
+ char sun_path[108];
+};
#endif
+#include <X11/Xarch.h>
+
#endif /* _XOS_H_ */
diff --git a/Xos_r.h b/Xos_r.h
index c901e39..9a2ed52 100644
--- a/Xos_r.h
+++ b/Xos_r.h
@@ -22,6 +22,7 @@ Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/include/Xos_r.h,v 1.18 2002/08/28 23:08:22 torrey Exp $ */
/*
* Various and sundry Thread-Safe functions used by X11, Motif, and CDE.
@@ -149,7 +150,9 @@ extern void (*_XUnlockMutex_fn)(
# endif
# endif
# elif defined(XOS_USE_XT_LOCKING)
-extern void (*_XtProcessLock)();
+# ifndef _XtThreadsI_h
+extern void (*_XtProcessLock)(void);
+# endif
# ifndef _XtintrinsicP_h
# include <X11/Xfuncproto.h> /* for NeedFunctionPrototypes */
extern void XtProcessLock(
@@ -194,6 +197,14 @@ extern void XtProcessUnlock(
# undef _POSIX_THREAD_SAFE_FUNCTIONS
#endif
+/*
+ * LynxOS 3.1 defines _POSIX_THREAD_SAFE_FUNCTIONS but
+ * getpwuid_r has different semantics than defined by POSIX
+ */
+#if defined(Lynx) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
+# undef _POSIX_THREAD_SAFE_FUNCTIONS
+#endif
+
/***** <pwd.h> wrappers *****/
@@ -217,6 +228,7 @@ extern void XtProcessUnlock(
# endif
#endif
+#undef X_NEEDS_PWPARAMS
#if !defined(X_INCLUDE_PWD_H) || defined(_XOS_INCLUDED_PWD_H)
/* Do nothing */
@@ -231,12 +243,53 @@ typedef int _Xgetpwparams; /* dummy */
#elif !defined(XOS_USE_MTSAFE_PWDAPI) || defined(XNO_MTSAFE_PWDAPI)
/* UnixWare 2.0, or other systems with thread support but no _r API. */
+# define X_NEEDS_PWPARAMS
typedef struct {
struct passwd pws;
char pwbuf[1024];
struct passwd* pwp;
size_t len;
} _Xgetpwparams;
+
+/*
+ * NetBSD and FreeBSD, at least, are missing several of the unixware passwd
+ * fields.
+ */
+
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || \
+ defined(__APPLE__)
+static __inline__ void _Xpw_copyPasswd(_Xgetpwparams p)
+{
+ memcpy(&(p).pws, (p).pwp, sizeof(struct passwd));
+
+ (p).pws.pw_name = (p).pwbuf;
+ (p).len = strlen((p).pwp->pw_name);
+ strcpy((p).pws.pw_name, (p).pwp->pw_name);
+
+ (p).pws.pw_passwd = (p).pws.pw_name + (p).len + 1;
+ (p).len = strlen((p).pwp->pw_passwd);
+ strcpy((p).pws.pw_passwd,(p).pwp->pw_passwd);
+
+ (p).pws.pw_class = (p).pws.pw_passwd + (p).len + 1;
+ (p).len = strlen((p).pwp->pw_class);
+ strcpy((p).pws.pw_class, (p).pwp->pw_class);
+
+ (p).pws.pw_gecos = (p).pws.pw_class + (p).len + 1;
+ (p).len = strlen((p).pwp->pw_gecos);
+ strcpy((p).pws.pw_gecos, (p).pwp->pw_gecos);
+
+ (p).pws.pw_dir = (p).pws.pw_gecos + (p).len + 1;
+ (p).len = strlen((p).pwp->pw_dir);
+ strcpy((p).pws.pw_dir, (p).pwp->pw_dir);
+
+ (p).pws.pw_shell = (p).pws.pw_dir + (p).len + 1;
+ (p).len = strlen((p).pwp->pw_shell);
+ strcpy((p).pws.pw_shell, (p).pwp->pw_shell);
+
+ (p).pwp = &(p).pws;
+}
+
+#else
# define _Xpw_copyPasswd(p) \
(memcpy(&(p).pws, (p).pwp, sizeof(struct passwd)), \
((p).pws.pw_name = (p).pwbuf), \
@@ -262,28 +315,37 @@ typedef struct {
strcpy((p).pws.pw_shell, (p).pwp->pw_shell), \
((p).pwp = &(p).pws), \
0 )
+#endif
# define _XGetpwuid(u,p) \
( (_Xos_processLock), \
- (((p).pwp = getpwuid((u))) ? _Xpw_copyPasswd(p) : 0), \
+ (((p).pwp = getpwuid((u))) ? _Xpw_copyPasswd(p), 0 : 0), \
(_Xos_processUnlock), \
(p).pwp )
# define _XGetpwnam(u,p) \
( (_Xos_processLock), \
- (((p).pwp = getpwnam((u))) ? _Xpw_copyPasswd(p) : 0), \
+ (((p).pwp = getpwnam((u))) ? _Xpw_copyPasswd(p), 0 : 0), \
(_Xos_processUnlock), \
(p).pwp )
-#elif !defined(_POSIX_THREAD_SAFE_FUNCTIONS)
+#elif !defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(__APPLE__)
/* SVR4 threads, AIX 4.2.0 and earlier and OSF/1 3.2 and earlier pthreads */
+# define X_NEEDS_PWPARAMS
typedef struct {
struct passwd pws;
char pwbuf[X_LINE_MAX];
} _Xgetpwparams;
-# if defined(_POSIX_REENTRANT_FUNCTIONS) || !defined(SVR4)
-# define _XGetpwuid(u,p) \
+# if defined(_POSIX_REENTRANT_FUNCTIONS) || !defined(SVR4) || defined(Lynx)
+# ifndef Lynx
+# define _XGetpwuid(u,p) \
((getpwuid_r((u),&(p).pws,(p).pwbuf,sizeof((p).pwbuf)) == -1) ? NULL : &(p).pws)
-# define _XGetpwnam(u,p) \
+# define _XGetpwnam(u,p) \
((getpwnam_r((u),&(p).pws,(p).pwbuf,sizeof((p).pwbuf)) == -1) ? NULL : &(p).pws)
+# else /* Lynx */
+# define _XGetpwuid(u,p) \
+((getpwuid_r(&(p).pws,(u),(p).pwbuf,sizeof((p).pwbuf)) == -1) ? NULL : &(p).pws)
+# define _XGetpwnam(u,p) \
+((getpwnam_r(&(p).pws,(u),(p).pwbuf,sizeof((p).pwbuf)) == -1) ? NULL : &(p).pws)
+# endif
# else /* SVR4 */
# define _XGetpwuid(u,p) \
((getpwuid_r((u),&(p).pws,(p).pwbuf,sizeof((p).pwbuf)) == NULL) ? NULL : &(p).pws)
@@ -298,6 +360,7 @@ typedef struct {
extern int _Pgetpwuid_r(uid_t, struct passwd *, char *, size_t, struct passwd **);
extern int _Pgetpwnam_r(const char *, struct passwd *, char *, size_t, struct passwd **);
# endif
+# define X_NEEDS_PWPARAMS
typedef struct {
struct passwd pws;
char pwbuf[X_LINE_MAX];
@@ -340,6 +403,7 @@ typedef int _Xgetpwret;
* _Xgetservbynameparams);
*/
+#undef XTHREADS_NEEDS_BYNAMEPARAMS
#if defined(X_INCLUDE_NETDB_H) && !defined(_XOS_INCLUDED_NETDB_H) \
&& !defined(WIN32)
# include <netdb.h>
@@ -363,6 +427,10 @@ typedef int _Xgetservbynameparams; /* dummy */
/* UnixWare 2.0, or other systems with thread support but no _r API. */
/* WARNING: The h_addr_list and s_aliases values are *not* copied! */
+#if defined(__NetBSD__) || defined(__FreeBSD__)
+#include <sys/param.h>
+#endif
+
typedef struct {
struct hostent hent;
char h_name[MAXHOSTNAMELEN];
@@ -374,6 +442,9 @@ typedef struct {
char s_proto[255];
struct servent *sptr;
} _Xgetservbynameparams;
+
+# define XTHREADS_NEEDS_BYNAMEPARAMS
+
# define _Xg_copyHostent(hp) \
(memcpy(&(hp).hent, (hp).hptr, sizeof(struct hostent)), \
strcpy((hp).h_name, (hp).hptr->h_name), \
@@ -420,6 +491,8 @@ typedef struct {
# define X_POSIX_THREAD_SAFE_FUNCTIONS 1
# endif
+# define XTHREADS_NEEDS_BYNAMEPARAMS
+
# ifndef X_POSIX_THREAD_SAFE_FUNCTIONS
typedef struct {
struct hostent hent;
@@ -546,7 +619,8 @@ typedef struct {
# endif
} _Xreaddirparams;
-# if defined(AIXV3) || defined(AIXV4) || defined(_POSIX_THREAD_SAFE_FUNCTIONS)
+# if defined(_POSIX_THREAD_SAFE_FUNCTIONS) || defined(AIXV3) || \
+ defined(AIXV4) || defined(__APPLE__)
/* AIX defines the draft POSIX symbol, but uses the final API. */
/* POSIX final API, returns (int)0 on success. */
# if defined(__osf__)
@@ -765,7 +839,8 @@ typedef struct {
#elif !defined(XTHREADS) && !defined(X_FORCE_USE_MTSAFE_API)
/* Use regular, unsafe API. */
typedef int _Xstrtokparams; /* dummy */
-# define _XStrtok(s1,s2,p) strtok((s1),(s2))
+# define _XStrtok(s1,s2,p) \
+ ( (void)(p), strtok((s1),(s2)) )
#elif !defined(XOS_USE_MTSAFE_STRINGAPI) || defined(XNO_MTSAFE_STRINGAPI)
/* Systems with thread support but no _r API. */
diff --git a/Xosdefs.h b/Xosdefs.h
index dfc10c7..d4700bc 100644
--- a/Xosdefs.h
+++ b/Xosdefs.h
@@ -25,6 +25,7 @@ Except as contained in this notice, the name of The Open Group shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
+/* $XFree86: xc/include/Xosdefs.h,v 3.20 2002/05/31 18:45:39 dawes Exp $ */
#ifndef _XOSDEFS_H_
#define _XOSDEFS_H_
@@ -80,7 +81,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef i386
#ifdef SYSV
-#if !defined(Lynx) && !defined(ISC) && !defined(SCO) && !defined(_SEQUENT_)
+#if !defined(ISC) && !defined(SCO) && !defined(_SEQUENT_)
#if !defined(_POSIX_SOURCE) && !defined(_SCO_DS)
#define X_NOT_POSIX
#endif
@@ -96,6 +97,12 @@ in this Software without prior written authorization from The Open Group.
#endif
#ifdef sun
+/* Imake configs define SVR4 on Solaris, but cc & gcc only define __SVR4
+ * This check allows non-Imake configured programs to build correctly.
+ */
+#if defined(__SVR4) && !defined(SVR4)
+#define SVR4
+#endif
#ifdef SVR4
/* define this to whatever it needs to be */
#define X_POSIX_C_SOURCE 199300L
@@ -113,4 +120,22 @@ in this Software without prior written authorization from The Open Group.
#define X_NOT_STDC_ENV
#endif
+#ifdef __UNIXOS2__
+#define USGISH
+#define NULL_NOT_ZERO
+#endif
+
+#ifdef __DARWIN__
+#define NULL_NOT_ZERO
+#endif
+
+#ifdef __GNU__
+#ifndef PATH_MAX
+#define PATH_MAX 4096
+#endif
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 4096
+#endif
+#endif
#endif /* _XOSDEFS_H_ */
+
diff --git a/Xthreads.h b/Xthreads.h
index a76f2c0..f2e87a1 100644
--- a/Xthreads.h
+++ b/Xthreads.h
@@ -25,6 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
* *
*/
+/* $XFree86: xc/include/Xthreads.h,v 3.10 2001/12/14 19:53:26 dawes Exp $ */
#ifndef _XTHREADS_H_
#define _XTHREADS_H_
@@ -81,7 +82,6 @@ typedef mutex_t xmutex_rec;
#endif
#define xthread_set_specific(k,v) thr_setspecific(k,v)
#define xthread_get_specific(k,vp) thr_getspecific(k,vp)
-#define XMUTEX_INITIALIZER {0}
#define xmutex_init(m) mutex_init(m,USYNC_THREAD,0)
#define xmutex_clear(m) mutex_destroy(m)
#define xmutex_lock(m) mutex_lock(m)
@@ -230,13 +230,18 @@ typedef pthread_mutex_t xmutex_rec;
#define xcondition_wait(c,m) pthread_cond_wait(c,m)
#define xcondition_signal(c) pthread_cond_signal(c)
#define xcondition_broadcast(c) pthread_cond_broadcast(c)
-#ifdef _DECTHREADS_
+#if defined(_DECTHREADS_)
static xthread_t _X_no_thread_id;
#define xthread_have_id(id) !pthread_equal(id, _X_no_thread_id)
#define xthread_clear_id(id) id = _X_no_thread_id
#define xthread_equal(id1,id2) pthread_equal(id1, id2)
#endif /* _DECTHREADS_ */
-#if _CMA_VENDOR_ == _CMA__IBM
+#if defined(linux)
+#define xthread_have_id(id) !pthread_equal(id, 0)
+#define xthread_clear_id(id) id = 0
+#define xthread_equal(id1,id2) pthread_equal(id1, id2)
+#endif /* linux */
+#if defined(_CMA_VENDOR_) && defined(_CMA__IBM) && (_CMA_VENDOR_ == _CMA__IBM)
#ifdef DEBUG /* too much of a hack to enable normally */
/* see also cma__obj_set_name() */
#define xmutex_set_name(m,str) ((char**)(m)->field1)[5] = (str)
diff --git a/keysym.h b/keysym.h
index 510a2c1..030a50d 100644
--- a/keysym.h
+++ b/keysym.h
@@ -46,6 +46,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
+/* $XFree86: xc/include/keysym.h,v 1.4 2001/12/14 19:53:26 dawes Exp $ */
/* default keysyms */
#define XK_MISCELLANY
@@ -54,8 +55,20 @@ SOFTWARE.
#define XK_LATIN2
#define XK_LATIN3
#define XK_LATIN4
+#define XK_LATIN8
#define XK_LATIN9
+#define XK_CAUCASUS
#define XK_GREEK
+#define XK_KATAKANA
+#define XK_ARABIC
+#define XK_CYRILLIC
+#define XK_HEBREW
+#define XK_THAI
+#define XK_KOREAN
+#define XK_ARMENIAN
+#define XK_GEORGIAN
+#define XK_VIETNAMESE
#define XK_CURRENCY
#include <X11/keysymdef.h>
+
diff --git a/keysymdef.h b/keysymdef.h
index 81483bf..728a412 100644
--- a/keysymdef.h
+++ b/keysymdef.h
@@ -47,6 +47,7 @@ ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
******************************************************************/
+/* $XFree86: xc/include/keysymdef.h,v 1.12 2001/12/14 19:53:26 dawes Exp $ */
#define XK_VoidSymbol 0xFFFFFF /* void symbol */
@@ -327,6 +328,8 @@ SOFTWARE.
#define XK_dead_voiced_sound 0xFE5E
#define XK_dead_semivoiced_sound 0xFE5F
#define XK_dead_belowdot 0xFE60
+#define XK_dead_hook 0xFE61
+#define XK_dead_horn 0xFE62
#define XK_First_Virtual_Screen 0xFED0
#define XK_Prev_Virtual_Screen 0xFED1
@@ -579,6 +582,7 @@ SOFTWARE.
#define XK_Odiaeresis 0x0d6
#define XK_multiply 0x0d7
#define XK_Ooblique 0x0d8
+#define XK_Oslash XK_Ooblique
#define XK_Ugrave 0x0d9
#define XK_Uacute 0x0da
#define XK_Ucircumflex 0x0db
@@ -612,6 +616,7 @@ SOFTWARE.
#define XK_odiaeresis 0x0f6
#define XK_division 0x0f7
#define XK_oslash 0x0f8
+#define XK_ooblique XK_oslash
#define XK_ugrave 0x0f9
#define XK_uacute 0x0fa
#define XK_ucircumflex 0x0fb
@@ -762,6 +767,39 @@ SOFTWARE.
#endif /* XK_LATIN4 */
/*
+ * Latin-8
+ * Byte 3 = 18
+ */
+#ifdef XK_LATIN8
+#define XK_Babovedot 0x12a1
+#define XK_babovedot 0x12a2
+#define XK_Dabovedot 0x12a6
+#define XK_Wgrave 0x12a8
+#define XK_Wacute 0x12aa
+#define XK_dabovedot 0x12ab
+#define XK_Ygrave 0x12ac
+#define XK_Fabovedot 0x12b0
+#define XK_fabovedot 0x12b1
+#define XK_Mabovedot 0x12b4
+#define XK_mabovedot 0x12b5
+#define XK_Pabovedot 0x12b7
+#define XK_wgrave 0x12b8
+#define XK_pabovedot 0x12b9
+#define XK_wacute 0x12ba
+#define XK_Sabovedot 0x12bb
+#define XK_ygrave 0x12bc
+#define XK_Wdiaeresis 0x12bd
+#define XK_wdiaeresis 0x12be
+#define XK_sabovedot 0x12bf
+#define XK_Wcircumflex 0x12d0
+#define XK_Tabovedot 0x12d7
+#define XK_Ycircumflex 0x12de
+#define XK_wcircumflex 0x12f0
+#define XK_tabovedot 0x12f7
+#define XK_ycircumflex 0x12fe
+#endif /* XK_LATIN8 */
+
+/*
* Latin-9 (a.k.a. Latin-0)
* Byte 3 = 19
*/
@@ -856,7 +894,35 @@ SOFTWARE.
*/
#ifdef XK_ARABIC
+#define XK_Farsi_0 0x590
+#define XK_Farsi_1 0x591
+#define XK_Farsi_2 0x592
+#define XK_Farsi_3 0x593
+#define XK_Farsi_4 0x594
+#define XK_Farsi_5 0x595
+#define XK_Farsi_6 0x596
+#define XK_Farsi_7 0x597
+#define XK_Farsi_8 0x598
+#define XK_Farsi_9 0x599
+#define XK_Arabic_percent 0x5a5
+#define XK_Arabic_superscript_alef 0x5a6
+#define XK_Arabic_tteh 0x5a7
+#define XK_Arabic_peh 0x5a8
+#define XK_Arabic_tcheh 0x5a9
+#define XK_Arabic_ddal 0x5aa
+#define XK_Arabic_rreh 0x5ab
#define XK_Arabic_comma 0x5ac
+#define XK_Arabic_fullstop 0x5ae
+#define XK_Arabic_0 0x5b0
+#define XK_Arabic_1 0x5b1
+#define XK_Arabic_2 0x5b2
+#define XK_Arabic_3 0x5b3
+#define XK_Arabic_4 0x5b4
+#define XK_Arabic_5 0x5b5
+#define XK_Arabic_6 0x5b6
+#define XK_Arabic_7 0x5b7
+#define XK_Arabic_8 0x5b8
+#define XK_Arabic_9 0x5b9
#define XK_Arabic_semicolon 0x5bb
#define XK_Arabic_question_mark 0x5bf
#define XK_Arabic_hamza 0x5c1
@@ -905,6 +971,19 @@ SOFTWARE.
#define XK_Arabic_kasra 0x5f0
#define XK_Arabic_shadda 0x5f1
#define XK_Arabic_sukun 0x5f2
+#define XK_Arabic_madda_above 0x5f3
+#define XK_Arabic_hamza_above 0x5f4
+#define XK_Arabic_hamza_below 0x5f5
+#define XK_Arabic_jeh 0x5f6
+#define XK_Arabic_veh 0x5f7
+#define XK_Arabic_keheh 0x5f8
+#define XK_Arabic_gaf 0x5f9
+#define XK_Arabic_noon_ghunna 0x5fa
+#define XK_Arabic_heh_doachashmee 0x5fb
+#define XK_Farsi_yeh 0x5fc
+#define XK_Arabic_farsi_yeh XK_Farsi_yeh
+#define XK_Arabic_yeh_baree 0x5fd
+#define XK_Arabic_heh_goal 0x5fe
#define XK_Arabic_switch 0xFF7E /* Alias for mode_switch */
#endif /* XK_ARABIC */
@@ -913,6 +992,38 @@ SOFTWARE.
* Byte 3 = 6
*/
#ifdef XK_CYRILLIC
+#define XK_Cyrillic_GHE_bar 0x680
+#define XK_Cyrillic_ghe_bar 0x690
+#define XK_Cyrillic_ZHE_descender 0x681
+#define XK_Cyrillic_zhe_descender 0x691
+#define XK_Cyrillic_KA_descender 0x682
+#define XK_Cyrillic_ka_descender 0x692
+#define XK_Cyrillic_KA_vertstroke 0x683
+#define XK_Cyrillic_ka_vertstroke 0x693
+#define XK_Cyrillic_EN_descender 0x684
+#define XK_Cyrillic_en_descender 0x694
+#define XK_Cyrillic_U_straight 0x685
+#define XK_Cyrillic_u_straight 0x695
+#define XK_Cyrillic_U_straight_bar 0x686
+#define XK_Cyrillic_u_straight_bar 0x696
+#define XK_Cyrillic_HA_descender 0x687
+#define XK_Cyrillic_ha_descender 0x697
+#define XK_Cyrillic_CHE_descender 0x688
+#define XK_Cyrillic_che_descender 0x698
+#define XK_Cyrillic_CHE_vertstroke 0x689
+#define XK_Cyrillic_che_vertstroke 0x699
+#define XK_Cyrillic_SHHA 0x68a
+#define XK_Cyrillic_shha 0x69a
+
+#define XK_Cyrillic_SCHWA 0x68c
+#define XK_Cyrillic_schwa 0x69c
+#define XK_Cyrillic_I_macron 0x68d
+#define XK_Cyrillic_i_macron 0x69d
+#define XK_Cyrillic_O_bar 0x68e
+#define XK_Cyrillic_o_bar 0x69e
+#define XK_Cyrillic_U_macron 0x68f
+#define XK_Cyrillic_u_macron 0x69f
+
#define XK_Serbian_dje 0x6a1
#define XK_Macedonia_gje 0x6a2
#define XK_Cyrillic_io 0x6a3
@@ -931,6 +1042,7 @@ SOFTWARE.
#define XK_Serbian_nje 0x6aa /* deprecated */
#define XK_Serbian_tshe 0x6ab
#define XK_Macedonia_kje 0x6ac
+#define XK_Ukrainian_ghe_with_upturn 0x6ad
#define XK_Byelorussian_shortu 0x6ae
#define XK_Cyrillic_dzhe 0x6af
#define XK_Serbian_dze 0x6af /* deprecated */
@@ -953,6 +1065,7 @@ SOFTWARE.
#define XK_Serbian_NJE 0x6ba /* deprecated */
#define XK_Serbian_TSHE 0x6bb
#define XK_Macedonia_KJE 0x6bc
+#define XK_Ukrainian_GHE_WITH_UPTURN 0x6bd
#define XK_Byelorussian_SHORTU 0x6be
#define XK_Cyrillic_DZHE 0x6bf
#define XK_Serbian_DZE 0x6bf /* deprecated */
@@ -1032,7 +1145,8 @@ SOFTWARE.
#define XK_Greek_EPSILONaccent 0x7a2
#define XK_Greek_ETAaccent 0x7a3
#define XK_Greek_IOTAaccent 0x7a4
-#define XK_Greek_IOTAdiaeresis 0x7a5
+#define XK_Greek_IOTAdieresis 0x7a5
+#define XK_Greek_IOTAdiaeresis XK_Greek_IOTAdieresis /* old typo */
#define XK_Greek_OMICRONaccent 0x7a7
#define XK_Greek_UPSILONaccent 0x7a8
#define XK_Greek_UPSILONdieresis 0x7a9
@@ -1582,6 +1696,309 @@ SOFTWARE.
#endif /* XK_KOREAN */
+/*
+ * Armenian
+ * Byte 3 = 0x14
+ */
+
+#ifdef XK_ARMENIAN
+#define XK_Armenian_eternity 0x14a1
+#define XK_Armenian_ligature_ew 0x14a2
+#define XK_Armenian_full_stop 0x14a3
+#define XK_Armenian_verjaket 0x14a3
+#define XK_Armenian_parenright 0x14a4
+#define XK_Armenian_parenleft 0x14a5
+#define XK_Armenian_guillemotright 0x14a6
+#define XK_Armenian_guillemotleft 0x14a7
+#define XK_Armenian_em_dash 0x14a8
+#define XK_Armenian_dot 0x14a9
+#define XK_Armenian_mijaket 0x14a9
+#define XK_Armenian_separation_mark 0x14aa
+#define XK_Armenian_but 0x14aa
+#define XK_Armenian_comma 0x14ab
+#define XK_Armenian_en_dash 0x14ac
+#define XK_Armenian_hyphen 0x14ad
+#define XK_Armenian_yentamna 0x14ad
+#define XK_Armenian_ellipsis 0x14ae
+#define XK_Armenian_exclam 0x14af
+#define XK_Armenian_amanak 0x14af
+#define XK_Armenian_accent 0x14b0
+#define XK_Armenian_shesht 0x14b0
+#define XK_Armenian_question 0x14b1
+#define XK_Armenian_paruyk 0x14b1
+#define XK_Armenian_AYB 0x14b2
+#define XK_Armenian_ayb 0x14b3
+#define XK_Armenian_BEN 0x14b4
+#define XK_Armenian_ben 0x14b5
+#define XK_Armenian_GIM 0x14b6
+#define XK_Armenian_gim 0x14b7
+#define XK_Armenian_DA 0x14b8
+#define XK_Armenian_da 0x14b9
+#define XK_Armenian_YECH 0x14ba
+#define XK_Armenian_yech 0x14bb
+#define XK_Armenian_ZA 0x14bc
+#define XK_Armenian_za 0x14bd
+#define XK_Armenian_E 0x14be
+#define XK_Armenian_e 0x14bf
+#define XK_Armenian_AT 0x14c0
+#define XK_Armenian_at 0x14c1
+#define XK_Armenian_TO 0x14c2
+#define XK_Armenian_to 0x14c3
+#define XK_Armenian_ZHE 0x14c4
+#define XK_Armenian_zhe 0x14c5
+#define XK_Armenian_INI 0x14c6
+#define XK_Armenian_ini 0x14c7
+#define XK_Armenian_LYUN 0x14c8
+#define XK_Armenian_lyun 0x14c9
+#define XK_Armenian_KHE 0x14ca
+#define XK_Armenian_khe 0x14cb
+#define XK_Armenian_TSA 0x14cc
+#define XK_Armenian_tsa 0x14cd
+#define XK_Armenian_KEN 0x14ce
+#define XK_Armenian_ken 0x14cf
+#define XK_Armenian_HO 0x14d0
+#define XK_Armenian_ho 0x14d1
+#define XK_Armenian_DZA 0x14d2
+#define XK_Armenian_dza 0x14d3
+#define XK_Armenian_GHAT 0x14d4
+#define XK_Armenian_ghat 0x14d5
+#define XK_Armenian_TCHE 0x14d6
+#define XK_Armenian_tche 0x14d7
+#define XK_Armenian_MEN 0x14d8
+#define XK_Armenian_men 0x14d9
+#define XK_Armenian_HI 0x14da
+#define XK_Armenian_hi 0x14db
+#define XK_Armenian_NU 0x14dc
+#define XK_Armenian_nu 0x14dd
+#define XK_Armenian_SHA 0x14de
+#define XK_Armenian_sha 0x14df
+#define XK_Armenian_VO 0x14e0
+#define XK_Armenian_vo 0x14e1
+#define XK_Armenian_CHA 0x14e2
+#define XK_Armenian_cha 0x14e3
+#define XK_Armenian_PE 0x14e4
+#define XK_Armenian_pe 0x14e5
+#define XK_Armenian_JE 0x14e6
+#define XK_Armenian_je 0x14e7
+#define XK_Armenian_RA 0x14e8
+#define XK_Armenian_ra 0x14e9
+#define XK_Armenian_SE 0x14ea
+#define XK_Armenian_se 0x14eb
+#define XK_Armenian_VEV 0x14ec
+#define XK_Armenian_vev 0x14ed
+#define XK_Armenian_TYUN 0x14ee
+#define XK_Armenian_tyun 0x14ef
+#define XK_Armenian_RE 0x14f0
+#define XK_Armenian_re 0x14f1
+#define XK_Armenian_TSO 0x14f2
+#define XK_Armenian_tso 0x14f3
+#define XK_Armenian_VYUN 0x14f4
+#define XK_Armenian_vyun 0x14f5
+#define XK_Armenian_PYUR 0x14f6
+#define XK_Armenian_pyur 0x14f7
+#define XK_Armenian_KE 0x14f8
+#define XK_Armenian_ke 0x14f9
+#define XK_Armenian_O 0x14fa
+#define XK_Armenian_o 0x14fb
+#define XK_Armenian_FE 0x14fc
+#define XK_Armenian_fe 0x14fd
+#define XK_Armenian_apostrophe 0x14fe
+#define XK_Armenian_section_sign 0x14ff
+#endif /* XK_ARMENIAN */
+
+/*
+ * Georgian
+ * Byte 3 = 0x15
+ */
+
+#ifdef XK_GEORGIAN
+#define XK_Georgian_an 0x15d0
+#define XK_Georgian_ban 0x15d1
+#define XK_Georgian_gan 0x15d2
+#define XK_Georgian_don 0x15d3
+#define XK_Georgian_en 0x15d4
+#define XK_Georgian_vin 0x15d5
+#define XK_Georgian_zen 0x15d6
+#define XK_Georgian_tan 0x15d7
+#define XK_Georgian_in 0x15d8
+#define XK_Georgian_kan 0x15d9
+#define XK_Georgian_las 0x15da
+#define XK_Georgian_man 0x15db
+#define XK_Georgian_nar 0x15dc
+#define XK_Georgian_on 0x15dd
+#define XK_Georgian_par 0x15de
+#define XK_Georgian_zhar 0x15df
+#define XK_Georgian_rae 0x15e0
+#define XK_Georgian_san 0x15e1
+#define XK_Georgian_tar 0x15e2
+#define XK_Georgian_un 0x15e3
+#define XK_Georgian_phar 0x15e4
+#define XK_Georgian_khar 0x15e5
+#define XK_Georgian_ghan 0x15e6
+#define XK_Georgian_qar 0x15e7
+#define XK_Georgian_shin 0x15e8
+#define XK_Georgian_chin 0x15e9
+#define XK_Georgian_can 0x15ea
+#define XK_Georgian_jil 0x15eb
+#define XK_Georgian_cil 0x15ec
+#define XK_Georgian_char 0x15ed
+#define XK_Georgian_xan 0x15ee
+#define XK_Georgian_jhan 0x15ef
+#define XK_Georgian_hae 0x15f0
+#define XK_Georgian_he 0x15f1
+#define XK_Georgian_hie 0x15f2
+#define XK_Georgian_we 0x15f3
+#define XK_Georgian_har 0x15f4
+#define XK_Georgian_hoe 0x15f5
+#define XK_Georgian_fi 0x15f6
+#endif /* XK_GEORGIAN */
+
+/*
+ * Azeri (and other Turkic or Caucasian languages of ex-USSR)
+ * Byte 3 = 0x16
+ */
+
+#ifdef XK_CAUCASUS
+/* latin */
+#define XK_Ccedillaabovedot 0x16a2
+#define XK_Xabovedot 0x16a3
+#define XK_Qabovedot 0x16a5
+#define XK_Ibreve 0x16a6
+#define XK_IE 0x16a7
+#define XK_UO 0x16a8
+#define XK_Zstroke 0x16a9
+#define XK_Gcaron 0x16aa
+#define XK_Obarred 0x16af
+#define XK_ccedillaabovedot 0x16b2
+#define XK_xabovedot 0x16b3
+#define XK_Ocaron 0x16b4
+#define XK_qabovedot 0x16b5
+#define XK_ibreve 0x16b6
+#define XK_ie 0x16b7
+#define XK_uo 0x16b8
+#define XK_zstroke 0x16b9
+#define XK_gcaron 0x16ba
+#define XK_ocaron 0x16bd
+#define XK_obarred 0x16bf
+#define XK_SCHWA 0x16c6
+#define XK_schwa 0x16f6
+/* those are not really Caucasus, but I put them here for now */
+/* For Inupiak */
+#define XK_Lbelowdot 0x16d1
+#define XK_Lstrokebelowdot 0x16d2
+#define XK_lbelowdot 0x16e1
+#define XK_lstrokebelowdot 0x16e2
+/* For Guarani */
+#define XK_Gtilde 0x16d3
+#define XK_gtilde 0x16e3
+#endif /* XK_CAUCASUS */
+
+/*
+ * Vietnamese
+ * Byte 3 = 0x1e
+ */
+
+#ifdef XK_VIETNAMESE
+#define XK_Abelowdot 0x1ea0
+#define XK_abelowdot 0x1ea1
+#define XK_Ahook 0x1ea2
+#define XK_ahook 0x1ea3
+#define XK_Acircumflexacute 0x1ea4
+#define XK_acircumflexacute 0x1ea5
+#define XK_Acircumflexgrave 0x1ea6
+#define XK_acircumflexgrave 0x1ea7
+#define XK_Acircumflexhook 0x1ea8
+#define XK_acircumflexhook 0x1ea9
+#define XK_Acircumflextilde 0x1eaa
+#define XK_acircumflextilde 0x1eab
+#define XK_Acircumflexbelowdot 0x1eac
+#define XK_acircumflexbelowdot 0x1ead
+#define XK_Abreveacute 0x1eae
+#define XK_abreveacute 0x1eaf
+#define XK_Abrevegrave 0x1eb0
+#define XK_abrevegrave 0x1eb1
+#define XK_Abrevehook 0x1eb2
+#define XK_abrevehook 0x1eb3
+#define XK_Abrevetilde 0x1eb4
+#define XK_abrevetilde 0x1eb5
+#define XK_Abrevebelowdot 0x1eb6
+#define XK_abrevebelowdot 0x1eb7
+#define XK_Ebelowdot 0x1eb8
+#define XK_ebelowdot 0x1eb9
+#define XK_Ehook 0x1eba
+#define XK_ehook 0x1ebb
+#define XK_Etilde 0x1ebc
+#define XK_etilde 0x1ebd
+#define XK_Ecircumflexacute 0x1ebe
+#define XK_ecircumflexacute 0x1ebf
+#define XK_Ecircumflexgrave 0x1ec0
+#define XK_ecircumflexgrave 0x1ec1
+#define XK_Ecircumflexhook 0x1ec2
+#define XK_ecircumflexhook 0x1ec3
+#define XK_Ecircumflextilde 0x1ec4
+#define XK_ecircumflextilde 0x1ec5
+#define XK_Ecircumflexbelowdot 0x1ec6
+#define XK_ecircumflexbelowdot 0x1ec7
+#define XK_Ihook 0x1ec8
+#define XK_ihook 0x1ec9
+#define XK_Ibelowdot 0x1eca
+#define XK_ibelowdot 0x1ecb
+#define XK_Obelowdot 0x1ecc
+#define XK_obelowdot 0x1ecd
+#define XK_Ohook 0x1ece
+#define XK_ohook 0x1ecf
+#define XK_Ocircumflexacute 0x1ed0
+#define XK_ocircumflexacute 0x1ed1
+#define XK_Ocircumflexgrave 0x1ed2
+#define XK_ocircumflexgrave 0x1ed3
+#define XK_Ocircumflexhook 0x1ed4
+#define XK_ocircumflexhook 0x1ed5
+#define XK_Ocircumflextilde 0x1ed6
+#define XK_ocircumflextilde 0x1ed7
+#define XK_Ocircumflexbelowdot 0x1ed8
+#define XK_ocircumflexbelowdot 0x1ed9
+#define XK_Ohornacute 0x1eda
+#define XK_ohornacute 0x1edb
+#define XK_Ohorngrave 0x1edc
+#define XK_ohorngrave 0x1edd
+#define XK_Ohornhook 0x1ede
+#define XK_ohornhook 0x1edf
+#define XK_Ohorntilde 0x1ee0
+#define XK_ohorntilde 0x1ee1
+#define XK_Ohornbelowdot 0x1ee2
+#define XK_ohornbelowdot 0x1ee3
+#define XK_Ubelowdot 0x1ee4
+#define XK_ubelowdot 0x1ee5
+#define XK_Uhook 0x1ee6
+#define XK_uhook 0x1ee7
+#define XK_Uhornacute 0x1ee8
+#define XK_uhornacute 0x1ee9
+#define XK_Uhorngrave 0x1eea
+#define XK_uhorngrave 0x1eeb
+#define XK_Uhornhook 0x1eec
+#define XK_uhornhook 0x1eed
+#define XK_Uhorntilde 0x1eee
+#define XK_uhorntilde 0x1eef
+#define XK_Uhornbelowdot 0x1ef0
+#define XK_uhornbelowdot 0x1ef1
+#define XK_Ybelowdot 0x1ef4
+#define XK_ybelowdot 0x1ef5
+#define XK_Yhook 0x1ef6
+#define XK_yhook 0x1ef7
+#define XK_Ytilde 0x1ef8
+#define XK_ytilde 0x1ef9
+#define XK_Ohorn 0x1efa /* U+01a0 */
+#define XK_ohorn 0x1efb /* U+01a1 */
+#define XK_Uhorn 0x1efc /* U+01af */
+#define XK_uhorn 0x1efd /* U+01b0 */
+
+#define XK_combining_tilde 0x1e9f /* U+0303 */
+#define XK_combining_grave 0x1ef2 /* U+0300 */
+#define XK_combining_acute 0x1ef3 /* U+0301 */
+#define XK_combining_hook 0x1efe /* U+0309 */
+#define XK_combining_belowdot 0x1eff /* U+0323 */
+#endif /* XK_VIETNAMESE */
+
#ifdef XK_CURRENCY
#define XK_EcuSign 0x20a0
#define XK_ColonSign 0x20a1