File:  [Research Unix] / researchv9 / X11 / src / X.V11R1 / lib / X / XEvToWire.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:22:00 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv9-SUN3_old, researchv9-SUN3, HEAD
researchv9-SUN3(old)

#include "copyright.h"
/* Copyright    Massachusetts Institute of Technology    1985, 1986, 1987 */

#ifndef lint
static char rcsid[] = "$Header: /var/lib/cvsd/repos/research/researchv9/X11/src/X.V11R1/lib/X/XEvToWire.c,v 1.1.1.1 2018/04/24 17:22:00 root Exp $";
#endif

/*
 *	XEvToWire.c - Internal support routines for the C subroutine
 *	interface library (Xlib) to the X Window System Protocol V11.0.
 */
#define NEED_EVENTS
#define NEED_REPLIES

#include <stdio.h>
#include "Xlibint.h"

/*
 * reformat a wire event into an XEvent structure of the right type.
 */
/*ARGSUSED*/
_XEventToWire(dpy, re, event)
register Display *dpy;	/* pointer to display structure */
register XEvent *re;	/* pointer to where event should be reformatted */
register xEvent *event;	/* wire protocol event */
{
	
	switch (event->u.u.type = re->type) {
	      case KeyPress:
	      case KeyRelease:
	        {
			register XKeyEvent *ev = (XKeyEvent*) re;
			event->u.keyButtonPointer.root	= ev->root;
			ev->window 	= event->u.keyButtonPointer.event;

			event->u.keyButtonPointer.event	 = ev->window;
			event->u.keyButtonPointer.child  = ev->subwindow;
			event->u.keyButtonPointer.time	 = ev->time;
			event->u.keyButtonPointer.eventX = ev->x ;
			event->u.keyButtonPointer.eventY = ev->y ;
			event->u.keyButtonPointer.rootX	 = ev->x_root;
			event->u.keyButtonPointer.rootY  = ev->y_root;
			event->u.keyButtonPointer.state  = ev->state;
			event->u.keyButtonPointer.sameScreen = ev->same_screen;
			event->u.u.detail = ev->keycode;
		}
	      	break;
	      case ButtonPress:
	      case ButtonRelease:
	        {
			register XButtonEvent *ev =  (XButtonEvent *) re;
			event->u.keyButtonPointer.root	 = ev->root;
			event->u.keyButtonPointer.event	 = ev->window;
			event->u.keyButtonPointer.child	 = ev->subwindow;
			event->u.keyButtonPointer.time	 = ev->time;
			event->u.keyButtonPointer.eventX = ev->x;
			event->u.keyButtonPointer.event  = ev->y;
			event->u.keyButtonPointer.rootX	 = ev->x_root;
			event->u.keyButtonPointer.rootY	 = ev->y_root;
			event->u.keyButtonPointer.state	 = ev->state;
			event->u.keyButtonPointer.sameScreen	= ev->same_screen;
			event->u.u.detail		= ev->button;
		}
	        break;
	      case MotionNotify:
	        {
			register XMotionEvent *ev =   (XMotionEvent *)re;
			event->u.keyButtonPointer.root	= ev->root;
			event->u.keyButtonPointer.event	= ev->window;
			event->u.keyButtonPointer.child	= ev->subwindow;
			event->u.keyButtonPointer.time	= ev->time;
			event->u.keyButtonPointer.eventX= ev->x;
			event->u.keyButtonPointer.eventY= ev->y;
			event->u.keyButtonPointer.rootX	= ev->x_root;
			event->u.keyButtonPointer.rootY	= ev->y_root;
			event->u.keyButtonPointer.state	= ev->state;
			event->u.keyButtonPointer.sameScreen= ev->same_screen;
			event->u.u.detail		= ev->is_hint;
		}
	        break;
	      case EnterNotify:
	      case LeaveNotify:
		{
			register XCrossingEvent *ev   = (XCrossingEvent *) re;
			event->u.enterLeave.root	= ev->root;
			event->u.enterLeave.event	= ev->window;
			event->u.enterLeave.child	= ev->subwindow;
			event->u.enterLeave.time	= ev->time;
			event->u.enterLeave.eventX	= ev->x;
			event->u.enterLeave.eventY	= ev->y;
			event->u.enterLeave.rootX	= ev->x_root;
			event->u.enterLeave.rootY	= ev->y_root;
			event->u.enterLeave.state	= ev->state;
			event->u.enterLeave.mode	= ev->mode;
			event->u.enterLeave.flags	= 0;
			if (ev->same_screen) {
				event->u.enterLeave.flags |= ELFlagSameScreen;
				}
			if (ev->focus) {
				event->u.enterLeave.flags |= ELFlagFocus;
				}
			event->u.u.detail		= ev->detail;
		}
		  break;
	      case FocusIn:
	      case FocusOut:
		{
			register XFocusChangeEvent *ev = (XFocusChangeEvent *) re;
			event->u.focus.window	= ev->window;
			event->u.focus.mode	= ev->mode;
			event->u.u.detail	= ev->detail;
		}
		  break;
	      case KeymapNotify:
		{
			register XKeymapEvent *ev = (XKeymapEvent *) re;
			bcopy ( &ev->key_vector[1], 
				(char *)(((xKeymapEvent *) event)->map),
			       sizeof (((xKeymapEvent *) event)->map));
		}
		break;
	      case Expose:
		{
			register XExposeEvent *ev = (XExposeEvent *) re;
			event->u.expose.window		= ev->window;
			event->u.expose.x		= ev->x;
			event->u.expose.y		= ev->y;
			event->u.expose.width		= ev->width;
			event->u.expose.height		= ev->height;
			event->u.expose.count		= ev->count;
		}
		break;
	      case GraphicsExpose:
		{
		    register XGraphicsExposeEvent *ev =
			(XGraphicsExposeEvent *) re;
		    event->u.graphicsExposure.drawable	= ev->drawable;
		    event->u.graphicsExposure.x		= ev->x;
		    event->u.graphicsExposure.y		= ev->y;
		    event->u.graphicsExposure.width	= ev->width;
		    event->u.graphicsExposure.height	= ev->height;
		    event->u.graphicsExposure.count	= ev->count;
		    event->u.graphicsExposure.majorEvent= ev->major_code;
		    event->u.graphicsExposure.minorEvent= ev->minor_code;
		}
		break;
	      case NoExpose:
		{
		    register XNoExposeEvent *ev = (XNoExposeEvent *) re;
		    event->u.noExposure.drawable	= ev->drawable;
		    event->u.noExposure.majorEvent	= ev->major_code;
		    event->u.noExposure.minorEvent	= ev->minor_code;
		}
		break;
	      case VisibilityNotify:
		{
		    register XVisibilityEvent *ev = (XVisibilityEvent *) re;
		    event->u.visibility.window		= ev->window;
		    event->u.visibility.state		= ev->state;
		}
		break;
	      case CreateNotify:
		{
		    register XCreateWindowEvent *ev =
			 (XCreateWindowEvent *) re;
		    event->u.createNotify.window	= ev->window;
		    event->u.createNotify.parent	= ev->parent;
		    event->u.createNotify.x		= ev->x;
		    event->u.createNotify.y		= ev->y;
		    event->u.createNotify.width		= ev->width;
		    event->u.createNotify.height	= ev->height;
		    event->u.createNotify.borderWidth	= ev->border_width;
		    event->u.createNotify.override	= ev->override_redirect;
		}
		break;
	      case DestroyNotify:
		{
		    register XDestroyWindowEvent *ev =
				(XDestroyWindowEvent *) re;
		    event->u.destroyNotify.window	= ev->window;
		    event->u.destroyNotify.event	= ev->event;
		}
		break;
	      case UnmapNotify:
		{
		    register XUnmapEvent *ev = (XUnmapEvent *) re;
		    event->u.unmapNotify.window	= ev->window;
		    event->u.unmapNotify.event	= ev->event;
		    event->u.unmapNotify.fromConfigure	= ev->from_configure;
		}
		break;
	      case MapNotify:
		{
		    register XMapEvent *ev = (XMapEvent *) re;
		    event->u.mapNotify.window	= ev->window;
		    event->u.mapNotify.event	= ev->event;
		    event->u.mapNotify.override	= ev->override_redirect;
		}
		break;
	      case MapRequest:
		{
		    register XMapRequestEvent *ev = (XMapRequestEvent *) re;
		    event->u.mapRequest.window	= ev->window;
		    event->u.mapRequest.parent	= ev->parent;
		}
		break;
	      case ReparentNotify:
		{
		    register XReparentEvent *ev = (XReparentEvent *) re;
		    event->u.reparent.window	= ev->window;
		    event->u.reparent.event	= ev->event;
		    event->u.reparent.parent	= ev->parent;
		    event->u.reparent.x		= ev->x;
		    event->u.reparent.y		= ev->y;
		    event->u.reparent.override	= ev->override_redirect;
		}
		break;
	      case ConfigureNotify:
		{
		    register XConfigureEvent *ev = (XConfigureEvent *) re;
		    event->u.configureNotify.window	= ev->window;
		    event->u.configureNotify.event	= ev->event;
		    event->u.configureNotify.aboveSibling	= ev->above;
		    event->u.configureNotify.x		= ev->x;
		    event->u.configureNotify.y		= ev->y;
		    event->u.configureNotify.width	= ev->width;
		    event->u.configureNotify.height	= ev->height;
		    event->u.configureNotify.borderWidth= ev->border_width;
		    event->u.configureNotify.override	= ev->override_redirect;
		}
		break;
	      case ConfigureRequest:
		{
		    register XConfigureRequestEvent *ev =
		        (XConfigureRequestEvent *) re;
		    event->u.configureRequest.window	= ev->window;
		    event->u.configureRequest.parent	= ev->parent;
		    event->u.configureRequest.sibling   = ev->above;
		    event->u.configureRequest.x		= ev->x;
		    event->u.configureRequest.y		= ev->y;
		    event->u.configureRequest.width	= ev->width;
		    event->u.configureRequest.height	= ev->height;
		    event->u.configureRequest.borderWidth= ev->border_width;
		    event->u.configureRequest.valueMask= ev->value_mask;
		    event->u.u.detail 			= ev->detail;
		}
		break;
	      case GravityNotify:
		{
		    register XGravityEvent *ev  = (XGravityEvent *) re;
		    event->u.gravity.window	= ev->window;
		    event->u.gravity.event	= ev->event;
		    event->u.gravity.x		= ev->x;
		    event->u.gravity.y		= ev->y;
		}
		break;
	      case ResizeRequest:
		{
		    register XResizeRequestEvent *ev =
			(XResizeRequestEvent *) re;
		    event->u.resizeRequest.window	= ev->window;
		    event->u.resizeRequest.width	= ev->width;
		    event->u.resizeRequest.height	= ev->height;
		}
		break;
	      case CirculateNotify:
		{
		    register XCirculateEvent *ev = (XCirculateEvent *) re;
		    event->u.circulate.window		= ev->window;
		    event->u.circulate.event		= ev->event;
		    event->u.circulate.place		= ev->place;
		}
		break;
	      case CirculateRequest:
		{
		    register XCirculateRequestEvent *ev =
		        (XCirculateRequestEvent *) re;
		    event->u.circulate.window		= ev->window;
		    event->u.circulate.event		= ev->parent;
		    event->u.circulate.place		= ev->place;
		}
		break;
	      case PropertyNotify:
		{
		    register XPropertyEvent *ev = (XPropertyEvent *) re;
		    event->u.property.window		= ev->window;
		    event->u.property.atom		= ev->atom;
		    event->u.property.time		= ev->time;
		    event->u.property.state		= ev->state;
		}
		break;
	      case SelectionClear:
		{
		    register XSelectionClearEvent *ev =
			 (XSelectionClearEvent *) re;
		    event->u.selectionClear.window	= ev->window;
		    event->u.selectionClear.atom	= ev->selection;
		    event->u.selectionClear.time	= ev->time;
		}
		break;
	      case SelectionRequest:
		{
		    register XSelectionRequestEvent *ev =
		        (XSelectionRequestEvent *) re;
		    event->u.selectionRequest.owner	= ev->owner;
		    event->u.selectionRequest.requestor	= ev->requestor;
		    event->u.selectionRequest.selection	= ev->selection;
		    event->u.selectionRequest.target	= ev->target;
		    event->u.selectionRequest.property	= ev->property;
		    event->u.selectionRequest.time	= ev->time;
		}
		break;
	      case SelectionNotify:
		{
		    register XSelectionEvent *ev = (XSelectionEvent *) re;
		    event->u.selectionNotify.requestor	= ev->requestor;
		    event->u.selectionNotify.selection	= ev->selection;
		    event->u.selectionNotify.target	= ev->target;
		    event->u.selectionNotify.property	= ev->property;
		    event->u.selectionNotify.time	= ev->time;
		}
		break;
	      case ColormapNotify:
		{
		    register XColormapEvent *ev = (XColormapEvent *) re;
		    event->u.colormap.window		= ev->window;
		    event->u.colormap.colormap		= ev->colormap;
		    event->u.colormap.new		= ev->new;
		    event->u.colormap.state		= ev->state;
	        }
		break;
	      case ClientMessage:
		{
		   register int i;
		   register XClientMessageEvent *ev 
		   			= (XClientMessageEvent *) re;
		   event->u.clientMessage.window = ev->window;
		   event->u.u.detail		 = ev->format;
		   switch (ev->format) {
			case 8:	
			  event->u.clientMessage.u.b.type   = ev->message_type;
			  for (i = 0; i < 20; i++)
			   event->u.clientMessage.u.b.bytes[i] = ev->data.b[i];
			  break;
			case 16:
			  event->u.clientMessage.u.s.type   = ev->message_type;
			  event->u.clientMessage.u.s.shorts0   = ev->data.s[0];
			  event->u.clientMessage.u.s.shorts1   = ev->data.s[1];
			  event->u.clientMessage.u.s.shorts2   = ev->data.s[2];
			  event->u.clientMessage.u.s.shorts3   = ev->data.s[3];
			  event->u.clientMessage.u.s.shorts4   = ev->data.s[4];
			  event->u.clientMessage.u.s.shorts5   = ev->data.s[5];
			  event->u.clientMessage.u.s.shorts6   = ev->data.s[6];
			  event->u.clientMessage.u.s.shorts7   = ev->data.s[7];
			  event->u.clientMessage.u.s.shorts8   = ev->data.s[8];
			  event->u.clientMessage.u.s.shorts9   = ev->data.s[9];
			  break;
			case 32:
			  event->u.clientMessage.u.l.type   = ev->message_type;
			  event->u.clientMessage.u.l.longs0   = ev->data.l[0];
			  event->u.clientMessage.u.l.longs1   = ev->data.l[1];
			  event->u.clientMessage.u.l.longs2   = ev->data.l[2];
			  event->u.clientMessage.u.l.longs3   = ev->data.l[3];
			  event->u.clientMessage.u.l.longs4   = ev->data.l[4];
			  break;
			default: /* XXX should never occur */
				break;
			}
		    }
		case MappingNotify:
		  {
		    register XMappingEvent *ev = (XMappingEvent *) re;
		    event->u.mappingNotify.firstKeyCode = ev->first_keycode;
		    event->u.mappingNotify.request 	= ev->request;
		    event->u.mappingNotify.count	= ev->count;
		   }
		break;
		
	      default:
		/* XXX should do something about unknown event here */
		break;
	}
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.