diff options
Diffstat (limited to 'nx-X11/lib/Xevie')
-rw-r--r-- | nx-X11/lib/Xevie/AUTHORS | 1 | ||||
-rw-r--r-- | nx-X11/lib/Xevie/Imakefile | 76 | ||||
-rw-r--r-- | nx-X11/lib/Xevie/Xevie.c | 211 | ||||
-rw-r--r-- | nx-X11/lib/Xevie/Xevie.man | 88 | ||||
-rw-r--r-- | nx-X11/lib/Xevie/xevie.pc.in | 12 | ||||
-rw-r--r-- | nx-X11/lib/Xevie/xevieplaceholder.h | 0 |
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 |