aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/Xevie
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/lib/Xevie')
-rw-r--r--nx-X11/lib/Xevie/AUTHORS1
-rw-r--r--nx-X11/lib/Xevie/Imakefile76
-rw-r--r--nx-X11/lib/Xevie/Xevie.c211
-rw-r--r--nx-X11/lib/Xevie/Xevie.man88
-rw-r--r--nx-X11/lib/Xevie/xevie.pc.in12
-rw-r--r--nx-X11/lib/Xevie/xevieplaceholder.h0
6 files changed, 388 insertions, 0 deletions
diff --git a/nx-X11/lib/Xevie/AUTHORS b/nx-X11/lib/Xevie/AUTHORS
new file mode 100644
index 000000000..b60343fbd
--- /dev/null
+++ b/nx-X11/lib/Xevie/AUTHORS
@@ -0,0 +1 @@
+Derek Wang, SUN
diff --git a/nx-X11/lib/Xevie/Imakefile b/nx-X11/lib/Xevie/Imakefile
new file mode 100644
index 000000000..24e1f6ef2
--- /dev/null
+++ b/nx-X11/lib/Xevie/Imakefile
@@ -0,0 +1,76 @@
+XCOMM $XdotOrg: xc/lib/Xevie/Imakefile,v 1.4 2005/10/24 23:30:21 alanc Exp $
+
+#ifndef NormalLibXevie
+#define NormalLibXevie YES
+SOXEVIEREV=1.0.0
+#endif
+
+#ifndef SharedLibXevie
+#define SharedLibXevie YES
+#endif
+
+#define DoNormalLib NormalLibXevie
+#define DoSharedLib SharedLibXevie
+#define DoDebugLib DebugLibXevie
+#define DoProfileLib ProfileLibXevie
+
+#define LibName Xevie
+#define SoRev SOXEVIEREV
+#define IncSubdir X11
+#define IncSubSubdir extensions
+
+#ifdef SharedXevieReqs
+REQUIREDLIBS = SharedXevieReqs
+#endif
+
+#if Malloc0ReturnsNull
+ALLOC_DEFINES = -DMALLOC_0_RETURNS_NULL
+#endif
+
+XEVIE_VERSION=1.0.0
+
+X_LIBS=-L$(SHLIBDIR) $(XONLYLIB)
+X_CFLAGS=-I$(INCROOT) $(THREADS_DEFINES)
+
+RPATH_CFLAG = HardCodeLibdirFlag
+
+ DEFINES = $(ALLOC_DEFINES)
+ INCLUDES = -I. -I$(XLIBSRC) -I$(EXTINCSRC)
+ SRCS = Xevie.c
+ OBJS = Xevie.o
+ LINTLIBS = $(LINTXLIB)
+
+HEADERS= xevieplaceholder.h
+
+SUBSTVARS=prefix="$(PROJECTROOT)" \
+ exec_prefix="$(BINDIR)" \
+ libdir="$(USRLIBDIR)" \
+ hardcode_libdir_flag_spec="$(RPATH_CFLAG)" \
+ includedir="$(INCROOT)" \
+ X_LIBS="$(X_LIBS)" \
+ X_CFLAGS="$(X_CFLAGS)" \
+ VERSION="$(XEVIE_VERSION)"
+
+#include <Library.tmpl>
+
+MANSUFFIX = $(LIBMANSUFFIX)
+
+#define PreprocessManPages
+InstallManPage(Xevie,$(LIBMANDIR))
+
+DependTarget()
+
+all:: xevie.pc
+
+xevie.pc: xevie.pc.in
+ RemoveFile($@)
+ sh ../Xcursor/config-subst $(SUBSTVARS) < xevie.pc.in > $@
+
+InstallNonExecFile(xevie.pc,$(USRLIBDIR)/pkgconfig)
+
+clean::
+ RemoveFile(xevie.pc)
+
+#if ExpandManNames
+InstallManPageAliases(Xevie,$(LIBMANDIR),XevieQueryVersion XevieStart XevieSelectInput XevieSendEvent XevieEnd)
+#endif
diff --git a/nx-X11/lib/Xevie/Xevie.c b/nx-X11/lib/Xevie/Xevie.c
new file mode 100644
index 000000000..9698881b5
--- /dev/null
+++ b/nx-X11/lib/Xevie/Xevie.c
@@ -0,0 +1,211 @@
+/* $XdotOrg: xc/lib/Xevie/Xevie.c,v 1.3 2005/07/03 07:00:56 daniels Exp $ */
+/************************************************************
+
+Copyright 2003 Sun Microsystems, Inc.
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+************************************************************/
+
+#define NEED_EVENTS
+#define NEED_REPLIES
+#include <X11/Xlibint.h>
+#include <X11/extensions/Xevie.h>
+#include <X11/extensions/Xeviestr.h>
+#include <X11/extensions/Xext.h>
+#include <X11/extensions/extutil.h>
+
+static XExtensionInfo _xevie_info_data;
+static XExtensionInfo *xevie_info = &_xevie_info_data;
+static char *xevie_extension_name = XEVIENAME;
+static int major_opcode = 0;
+static long xevie_mask = 0;
+
+
+/*****************************************************************************
+ * *
+ * private utility routines *
+ * *
+ *****************************************************************************/
+
+static int close_display();
+static /* const */ XExtensionHooks xevie_extension_hooks = {
+ NULL, /* create_gc */
+ NULL, /* copy_gc */
+ NULL, /* flush_gc */
+ NULL, /* free_gc */
+ NULL, /* create_font */
+ NULL, /* free_font */
+ close_display, /* close_display */
+ NULL, /* wire_to_event */
+ NULL, /* event_to_wire */
+ NULL, /* error */
+ NULL, /* error_string */
+};
+
+static XEXT_GENERATE_FIND_DISPLAY (find_display, xevie_info,
+ xevie_extension_name,
+ &xevie_extension_hooks,
+ 0, NULL)
+
+static XEXT_GENERATE_CLOSE_DISPLAY (close_display, xevie_info)
+
+/*****************************************************************************
+ * *
+ * public Xevie Extension routines *
+ * *
+ *****************************************************************************/
+
+Status
+XevieQueryVersion(dpy, major_version_return, minor_version_return)
+ Display* dpy;
+ int* major_version_return;
+ int* minor_version_return;
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXevieQueryVersionReply rep;
+ xXevieQueryVersionReq *req;
+
+ XextCheckExtension(dpy, info, xevie_extension_name, False);
+
+ major_opcode = info->codes->major_opcode;
+ LockDisplay(dpy);
+ GetReq(XevieQueryVersion, req);
+ req->reqType = major_opcode;
+ req->xevieReqType = X_XevieQueryVersion;
+ req->client_major_version = XEVIE_MAJOR_VERSION;
+ req->client_minor_version = XEVIE_MINOR_VERSION;
+ if (!_XReply(dpy, (xReply *)&rep, 0, xTrue)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return False;
+ }
+ *major_version_return = rep.server_major_version;
+ *minor_version_return = rep.server_minor_version;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+/* Win32 reserves 20 colormap entries for its desktop */
+#ifndef TYP_RESERVED_ENTRIES
+#define TYP_RESERVED_ENTRIES 20
+#endif
+
+Status
+#if NeedFunctionPrototypes
+XevieStart(
+ Display* dpy)
+#else
+XevieStart(dpy)
+ Display* dpy;
+#endif
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXevieStartReply rep;
+ xXevieStartReq *req;
+
+ XextCheckExtension(dpy, info, xevie_extension_name, False);
+
+ major_opcode = info->codes->major_opcode;
+ LockDisplay(dpy);
+ GetReq(XevieStart, req);
+ req->reqType = major_opcode;
+ req->xevieReqType = X_XevieStart;
+ if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return(rep.pad1);
+}
+
+Status
+XevieEnd(dpy)
+ Display* dpy;
+{
+ XExtDisplayInfo *info = find_display (dpy);
+ xXevieEndReply rep;
+ xXevieEndReq *req;
+
+ XextCheckExtension (dpy, info, xevie_extension_name, False);
+
+ LockDisplay(dpy);
+ GetReq(XevieEnd, req);
+ req->reqType = info->codes->major_opcode;
+ req->xevieReqType = X_XevieEnd;
+
+ if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Status
+XevieSendEvent(dpy, event, dataType)
+ Display* dpy;
+ XEvent* event;
+ char dataType;
+{
+ xXevieSendReply rep;
+ xXevieSendReq *req;
+
+ LockDisplay(dpy);
+ GetReq(XevieSend, req);
+ req->reqType = major_opcode;
+ req->xevieReqType = X_XevieSend;
+ req->dataType = dataType;
+ _XEventToWire(dpy, event, &req->event);
+ if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
+Status
+XevieSelectInput(dpy, event_mask)
+ Display* dpy;
+ long event_mask;
+{
+ xXevieSelectInputReply rep;
+ xXevieSelectInputReq *req;
+
+ LockDisplay(dpy);
+ GetReq(XevieSelectInput, req);
+ req->reqType = major_opcode;
+ req->xevieReqType = X_XevieSelectInput;
+ req->event_mask = event_mask;
+ xevie_mask = event_mask;
+ if (_XReply(dpy, (xReply *)&rep, 0, xFalse)) {
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+}
+
diff --git a/nx-X11/lib/Xevie/Xevie.man b/nx-X11/lib/Xevie/Xevie.man
new file mode 100644
index 000000000..79aeb18c5
--- /dev/null
+++ b/nx-X11/lib/Xevie/Xevie.man
@@ -0,0 +1,88 @@
+.\"
+.\" $XdotOrg: xc/lib/Xevie/Xevie.man,v 1.2 2005/04/04 02:41:49 alanc Exp $
+.\"
+.\"
+.de TQ
+.br
+.ns
+.TP \\$1
+..
+.TH XEVIE __libmansuffix__ __vendorversion__
+
+.SH NAME
+Xevie \- X Event Interception Extension (XEvIE)
+.SH SYNTAX
+\&#include <X11/extensions/Xevie.h>
+.nf
+.sp
+Status XevieQueryVersion \^(\^Display *\fIdpy\fP,
+ int *\fImajor_versionp\fP,
+ int *\fIminor_versionp\fP\^);
+.sp
+Status XevieStart \^(\^Display *\fIdpy\fp\^);
+.sp
+Status XevieSelectInput \^(\^Display *\fIdpy\fP,
+ long \fIevent_mask\fP\^);
+.sp
+Status XevieSendEvent \^(\^
+ \^(\^Display *\fIdpy\fP,
+ XEvent *\fIevent\fP,
+ char *fIdataType\fP\^);
+.sp
+Status XevieEnd \^(\^Display *\fIdpy\fp\^);
+.sp
+
+.SH ARGUMENTS
+.IP \fIdisplay\fP 1i
+Specifies the connection to the X server.
+.IP \fIevent_mask\fP 1i
+Specifies the mask of events to redirect.
+.IP \fIdatatype\fP 1i
+
+XEVIE_MODIFIED or XEVIE_UNMODIFIED - whether the Xevie client
+has changed or synthesised this event.
+
+.SH DATATYPES
+
+
+.SH DESCRIPTION
+.B X Event Interception Extension (XEvIE)
+is designed for users who need to intercept all the Keyboard and Mouse events.
+Programs can determine which events should be forwarded to other clients and
+modify the events if necessary.
+.PP
+
+.SH FUNCTIONS
+
+.B XevieQueryVersion
+The XevieQueryVersion function returns the major and minor protocol version
+numbers supported by the server.
+XevieQueryVersion returns True if success, otherwise, it returns False.
+
+.B XevieStart
+The XevieStart function requests that the X server enable the XEvIE extension.
+Once XEvIE is successfully enabled, all the XevieSelectInput specified events
+will be sent to the client which has enabled XEvIE.
+If XKB or AccessX is enabled, the events that are sent to the XEvIE clients
+are XKB/AccessX processed (filtered) ones.
+
+.B XevieSendEvent
+Events are sent back to the X server through XevieSendEvent.
+
+.B XevieEnd
+The XevieEnd function requests that the X server disables the XEvIE extension.
+Once XEvIE is disabled successfully, the X server stops sending events to the
+XEvIE client.
+
+.B XevieSelectInput
+The XevieSelectInput function requests that the X server reports the keyboard
+and pointer events associated with the specified event mask.
+By default, X will report KeyPress, KeyRelease, ButtonPress, ButtonRelease
+and MotionNotify events.
+
+.SH RESTRICTIONS
+.B Xevie
+will remain upward compatible after the current 1.0 release.
+.SH AUTHORS
+Derek Wang and Stuart Kreitman, Sun Microsystems, Inc.
+
diff --git a/nx-X11/lib/Xevie/xevie.pc.in b/nx-X11/lib/Xevie/xevie.pc.in
new file mode 100644
index 000000000..88e8b361f
--- /dev/null
+++ b/nx-X11/lib/Xevie/xevie.pc.in
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+xlibs=@X_LIBS@
+xcflags=@X_CFLAGS@
+
+Name: Xevie
+Description: X Event Interceptor Library
+Version: @VERSION@
+Cflags: -I${includedir} ${xcflags}
+Libs: -L${libdir} -lXevie ${xlibs}
diff --git a/nx-X11/lib/Xevie/xevieplaceholder.h b/nx-X11/lib/Xevie/xevieplaceholder.h
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/nx-X11/lib/Xevie/xevieplaceholder.h