1 /***********************************************************
2 Copyright 1993 by Digital Equipment Corporation, Maynard, Massachusetts,
6 Permission to use, copy, modify, and distribute this software and its
7 documentation for any purpose and without fee is hereby granted,
8 provided that the above copyright notice appear in all copies and that
9 both that copyright notice and this permission notice appear in
10 supporting documentation, and that the name of Digital not be
11 used in advertising or publicity pertaining to distribution of the
12 software without specific, written prior permission.
14 DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
15 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
16 DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
17 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
18 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
19 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
22 ******************************************************************/
27 #include <X11/Xlibint.h>
32 #define sw16(n, s) ((s) ? \
33 (((n) << 8 & 0xff00) | \
37 #define sw32(n, s) ((s) ? \
38 (((n) << 24 & 0xff000000) | \
39 ((n) << 8 & 0xff0000) | \
40 ((n) >> 8 & 0xff00) | \
46 register XEvent *re, /* pointer to where event should be reformatted */
47 register xEvent *event, /* wire protocol event */
48 Bool sw) /* swap byte? */
50 switch (event->u.u.type = re->type) {
54 register XKeyEvent *ev = (XKeyEvent*) re;
55 event->u.keyButtonPointer.root = sw32(ev->root, sw);
56 event->u.keyButtonPointer.event =
58 event->u.keyButtonPointer.child =
59 sw32(ev->subwindow, sw);
60 event->u.keyButtonPointer.time = sw32(ev->time, sw);
61 event->u.keyButtonPointer.eventX = sw16(ev->x, sw) ;
62 event->u.keyButtonPointer.eventY = sw16(ev->y, sw) ;
63 event->u.keyButtonPointer.rootX =
65 event->u.keyButtonPointer.rootY =
67 event->u.keyButtonPointer.state = sw16(ev->state, sw);
68 event->u.keyButtonPointer.sameScreen = ev->same_screen;
69 event->u.u.detail = ev->keycode;
75 register XButtonEvent *ev = (XButtonEvent *) re;
76 event->u.keyButtonPointer.root = sw32(ev->root, sw);
77 event->u.keyButtonPointer.event = sw32(ev->window, sw);
78 event->u.keyButtonPointer.child = sw32(ev->subwindow, sw);
79 event->u.keyButtonPointer.time = sw32(ev->time, sw);
80 event->u.keyButtonPointer.eventX = sw16(ev->x, sw);
81 event->u.keyButtonPointer.eventY = sw16(ev->y, sw);
82 event->u.keyButtonPointer.rootX = sw16(ev->x_root, sw);
83 event->u.keyButtonPointer.rootY = sw16(ev->y_root, sw);
84 event->u.keyButtonPointer.state = sw16(ev->state, sw);
85 event->u.keyButtonPointer.sameScreen = ev->same_screen;
86 event->u.u.detail = ev->button;
91 register XMotionEvent *ev = (XMotionEvent *)re;
92 event->u.keyButtonPointer.root = sw32(ev->root, sw);
93 event->u.keyButtonPointer.event = sw32(ev->window, sw);
94 event->u.keyButtonPointer.child = sw32(ev->subwindow, sw);
95 event->u.keyButtonPointer.time = sw32(ev->time, sw);
96 event->u.keyButtonPointer.eventX= sw16(ev->x, sw);
97 event->u.keyButtonPointer.eventY= sw16(ev->y, sw);
98 event->u.keyButtonPointer.rootX = sw16(ev->x_root, sw);
99 event->u.keyButtonPointer.rootY = sw16(ev->y_root, sw);
100 event->u.keyButtonPointer.state = sw16(ev->state, sw);
101 event->u.keyButtonPointer.sameScreen= ev->same_screen;
102 event->u.u.detail = ev->is_hint;
108 register XCrossingEvent *ev = (XCrossingEvent *) re;
109 event->u.enterLeave.root = sw32(ev->root, sw);
110 event->u.enterLeave.event = sw32(ev->window, sw);
111 event->u.enterLeave.child = sw32(ev->subwindow, sw);
112 event->u.enterLeave.time = sw32(ev->time, sw);
113 event->u.enterLeave.eventX = sw16(ev->x, sw);
114 event->u.enterLeave.eventY = sw16(ev->y, sw);
115 event->u.enterLeave.rootX = sw16(ev->x_root, sw);
116 event->u.enterLeave.rootY = sw16(ev->y_root, sw);
117 event->u.enterLeave.state = sw16(ev->state, sw);
118 event->u.enterLeave.mode = ev->mode;
119 event->u.enterLeave.flags = 0;
120 if (ev->same_screen) {
121 event->u.enterLeave.flags |= ELFlagSameScreen;
124 event->u.enterLeave.flags |= ELFlagFocus;
126 event->u.u.detail = ev->detail;
132 register XFocusChangeEvent *ev = (XFocusChangeEvent *) re;
133 event->u.focus.window = sw32(ev->window, sw);
134 event->u.focus.mode = ev->mode;
135 event->u.u.detail = ev->detail;
140 register XKeymapEvent *ev = (XKeymapEvent *) re;
141 memcpy((char *)(((xKeymapEvent *) event)->map),
143 sizeof (((xKeymapEvent *) event)->map));
148 register XExposeEvent *ev = (XExposeEvent *) re;
149 event->u.expose.window = sw32(ev->window, sw);
150 event->u.expose.x = sw16(ev->x, sw);
151 event->u.expose.y = sw16(ev->y, sw);
152 event->u.expose.width = sw16(ev->width, sw);
153 event->u.expose.height = sw16(ev->height, sw);
154 event->u.expose.count = sw16(ev->count, sw);
159 register XGraphicsExposeEvent *ev =
160 (XGraphicsExposeEvent *) re;
161 event->u.graphicsExposure.drawable = sw32(ev->drawable, sw);
162 event->u.graphicsExposure.x = sw16(ev->x, sw);
163 event->u.graphicsExposure.y = sw16(ev->y, sw);
164 event->u.graphicsExposure.width = sw16(ev->width, sw);
165 event->u.graphicsExposure.height = sw16(ev->height, sw);
166 event->u.graphicsExposure.count = sw16(ev->count, sw);
167 event->u.graphicsExposure.majorEvent= ev->major_code;
168 event->u.graphicsExposure.minorEvent= sw16(ev->minor_code, sw);
173 register XNoExposeEvent *ev = (XNoExposeEvent *) re;
174 event->u.noExposure.drawable = sw32(ev->drawable, sw);
175 event->u.noExposure.majorEvent = ev->major_code;
176 event->u.noExposure.minorEvent = sw16(ev->minor_code, sw);
179 case VisibilityNotify:
181 register XVisibilityEvent *ev = (XVisibilityEvent *) re;
182 event->u.visibility.window = sw32(ev->window, sw);
183 event->u.visibility.state = ev->state;
188 register XCreateWindowEvent *ev =
189 (XCreateWindowEvent *) re;
190 event->u.createNotify.window = sw32(ev->window, sw);
191 event->u.createNotify.parent = sw32(ev->parent, sw);
192 event->u.createNotify.x = sw16(ev->x, sw);
193 event->u.createNotify.y = sw16(ev->y, sw);
194 event->u.createNotify.width = sw16(ev->width, sw);
195 event->u.createNotify.height = sw16(ev->height, sw);
196 event->u.createNotify.borderWidth = sw16(ev->border_width, sw);
197 event->u.createNotify.override = ev->override_redirect;
202 register XDestroyWindowEvent *ev =
203 (XDestroyWindowEvent *) re;
204 event->u.destroyNotify.window = sw32(ev->window, sw);
205 event->u.destroyNotify.event = sw32(ev->event, sw);
210 register XUnmapEvent *ev = (XUnmapEvent *) re;
211 event->u.unmapNotify.window = sw32(ev->window, sw);
212 event->u.unmapNotify.event = sw32(ev->event, sw);
213 event->u.unmapNotify.fromConfigure = ev->from_configure;
218 register XMapEvent *ev = (XMapEvent *) re;
219 event->u.mapNotify.window = sw32(ev->window, sw);
220 event->u.mapNotify.event = sw32(ev->event, sw);
221 event->u.mapNotify.override = ev->override_redirect;
226 register XMapRequestEvent *ev = (XMapRequestEvent *) re;
227 event->u.mapRequest.window = sw32(ev->window, sw);
228 event->u.mapRequest.parent = sw32(ev->parent, sw);
233 register XReparentEvent *ev = (XReparentEvent *) re;
234 event->u.reparent.window = sw32(ev->window, sw);
235 event->u.reparent.event = sw32(ev->event, sw);
236 event->u.reparent.parent = sw32(ev->parent, sw);
237 event->u.reparent.x = sw16(ev->x, sw);
238 event->u.reparent.y = sw16(ev->y, sw);
239 event->u.reparent.override = ev->override_redirect;
242 case ConfigureNotify:
244 register XConfigureEvent *ev = (XConfigureEvent *) re;
245 event->u.configureNotify.window = sw32(ev->window, sw);
246 event->u.configureNotify.event = sw32(ev->event, sw);
247 event->u.configureNotify.aboveSibling = sw32(ev->above, sw);
248 event->u.configureNotify.x = sw16(ev->x, sw);
249 event->u.configureNotify.y = sw16(ev->y, sw);
250 event->u.configureNotify.width = sw16(ev->width, sw);
251 event->u.configureNotify.height = sw16(ev->height, sw);
252 event->u.configureNotify.borderWidth= sw16(ev->border_width, sw);
253 event->u.configureNotify.override = ev->override_redirect;
256 case ConfigureRequest:
258 register XConfigureRequestEvent *ev =
259 (XConfigureRequestEvent *) re;
260 event->u.configureRequest.window = sw32(ev->window, sw);
261 event->u.configureRequest.parent = sw32(ev->parent, sw);
262 event->u.configureRequest.sibling = sw32(ev->above, sw);
263 event->u.configureRequest.x = sw16(ev->x, sw);
264 event->u.configureRequest.y = sw16(ev->y, sw);
265 event->u.configureRequest.width = sw16(ev->width, sw);
266 event->u.configureRequest.height = sw16(ev->height, sw);
267 event->u.configureRequest.borderWidth= sw16(ev->border_width, sw);
268 event->u.configureRequest.valueMask= sw16(ev->value_mask, sw);
269 event->u.u.detail = ev->detail;
274 register XGravityEvent *ev = (XGravityEvent *) re;
275 event->u.gravity.window = sw32(ev->window, sw);
276 event->u.gravity.event = sw32(ev->event, sw);
277 event->u.gravity.x = sw16(ev->x, sw);
278 event->u.gravity.y = sw16(ev->y, sw);
283 register XResizeRequestEvent *ev =
284 (XResizeRequestEvent *) re;
285 event->u.resizeRequest.window = sw32(ev->window, sw);
286 event->u.resizeRequest.width = sw16(ev->width, sw);
287 event->u.resizeRequest.height = sw16(ev->height, sw);
290 case CirculateNotify:
292 register XCirculateEvent *ev = (XCirculateEvent *) re;
293 event->u.circulate.window = sw32(ev->window, sw);
294 event->u.circulate.event = sw32(ev->event, sw);
295 event->u.circulate.place = ev->place;
298 case CirculateRequest:
300 register XCirculateRequestEvent *ev =
301 (XCirculateRequestEvent *) re;
302 event->u.circulate.window = sw32(ev->window, sw);
303 event->u.circulate.event = sw32(ev->parent, sw);
304 event->u.circulate.place = ev->place;
309 register XPropertyEvent *ev = (XPropertyEvent *) re;
310 event->u.property.window = sw32(ev->window, sw);
311 event->u.property.atom = sw32(ev->atom, sw);
312 event->u.property.time = sw32(ev->time, sw);
313 event->u.property.state = ev->state;
318 register XSelectionClearEvent *ev =
319 (XSelectionClearEvent *) re;
320 event->u.selectionClear.window = sw32(ev->window, sw);
321 event->u.selectionClear.atom = sw32(ev->selection, sw);
322 event->u.selectionClear.time = sw32(ev->time, sw);
325 case SelectionRequest:
327 register XSelectionRequestEvent *ev =
328 (XSelectionRequestEvent *) re;
329 event->u.selectionRequest.owner = sw32(ev->owner, sw);
330 event->u.selectionRequest.requestor = sw32(ev->requestor, sw);
331 event->u.selectionRequest.selection = sw32(ev->selection, sw);
332 event->u.selectionRequest.target = sw32(ev->target, sw);
333 event->u.selectionRequest.property = sw32(ev->property, sw);
334 event->u.selectionRequest.time = sw32(ev->time, sw);
337 case SelectionNotify:
339 register XSelectionEvent *ev = (XSelectionEvent *) re;
340 event->u.selectionNotify.requestor = sw32(ev->requestor, sw);
341 event->u.selectionNotify.selection = sw32(ev->selection, sw);
342 event->u.selectionNotify.target = sw32(ev->target, sw);
343 event->u.selectionNotify.property = sw32(ev->property, sw);
344 event->u.selectionNotify.time = sw32(ev->time, sw);
349 register XColormapEvent *ev = (XColormapEvent *) re;
350 event->u.colormap.window = sw32(ev->window, sw);
351 event->u.colormap.colormap = sw32(ev->colormap, sw);
352 event->u.colormap.new = ev->new;
353 event->u.colormap.state = ev->state;
359 register XClientMessageEvent *ev
360 = (XClientMessageEvent *) re;
361 event->u.clientMessage.window = sw32(ev->window, sw);
362 event->u.u.detail = ev->format;
363 switch (ev->format) {
365 event->u.clientMessage.u.b.type = sw32(ev->message_type, sw);
366 for (i = 0; i < 20; i++)
367 event->u.clientMessage.u.b.bytes[i] = ev->data.b[i];
370 event->u.clientMessage.u.s.type = sw32(ev->message_type, sw);
371 event->u.clientMessage.u.s.shorts0 = sw16(ev->data.s[0], sw);
372 event->u.clientMessage.u.s.shorts1 = sw16(ev->data.s[1], sw);
373 event->u.clientMessage.u.s.shorts2 = sw16(ev->data.s[2], sw);
374 event->u.clientMessage.u.s.shorts3 = sw16(ev->data.s[3], sw);
375 event->u.clientMessage.u.s.shorts4 = sw16(ev->data.s[4], sw);
376 event->u.clientMessage.u.s.shorts5 = sw16(ev->data.s[5], sw);
377 event->u.clientMessage.u.s.shorts6 = sw16(ev->data.s[6], sw);
378 event->u.clientMessage.u.s.shorts7 = sw16(ev->data.s[7], sw);
379 event->u.clientMessage.u.s.shorts8 = sw16(ev->data.s[8], sw);
380 event->u.clientMessage.u.s.shorts9 = sw16(ev->data.s[9], sw);
383 event->u.clientMessage.u.l.type = sw32(ev->message_type, sw);
384 event->u.clientMessage.u.l.longs0 = sw32(ev->data.l[0], sw);
385 event->u.clientMessage.u.l.longs1 = sw32(ev->data.l[1], sw);
386 event->u.clientMessage.u.l.longs2 = sw32(ev->data.l[2], sw);
387 event->u.clientMessage.u.l.longs3 = sw32(ev->data.l[3], sw);
388 event->u.clientMessage.u.l.longs4 = sw32(ev->data.l[4], sw);
391 /* client passing bogus data, let server complain */
398 register XMappingEvent *ev = (XMappingEvent *) re;
399 event->u.mappingNotify.firstKeyCode = ev->first_keycode;
400 event->u.mappingNotify.request = ev->request;
401 event->u.mappingNotify.count = ev->count;
409 if (((XAnyEvent *)re)->send_event)
410 event->u.u.type |= 0x80;
411 event->u.u.sequenceNumber =
412 ((XAnyEvent *)re)->serial & ~((unsigned long)0xffff);
413 event->u.u.sequenceNumber = sw16(event->u.u.sequenceNumber, sw);
419 * reformat a wire event into an XEvent structure of the right type.
422 _XimProtoWireToEvent(
423 register XEvent *re, /* pointer to where event should be reformatted */
424 register xEvent *event, /* wire protocol event */
425 Bool sw) /* swap byte? */
428 re->type = event->u.u.type & 0x7f;
429 ((XAnyEvent *)re)->serial = sw16(event->u.u.sequenceNumber, sw);
430 ((XAnyEvent *)re)->send_event = ((event->u.u.type & 0x80) != 0);
431 ((XAnyEvent *)re)->display = NULL;
433 /* Ignore the leading bit of the event type since it is set when a
434 client sends an event rather than the server. */
436 switch (event-> u.u.type & 0177) {
440 register XKeyEvent *ev = (XKeyEvent*) re;
441 ev->root = sw32(event->u.keyButtonPointer.root, sw);
442 ev->window = sw32(event->u.keyButtonPointer.event, sw);
443 ev->subwindow = sw32(event->u.keyButtonPointer.child, sw);
444 ev->time = sw32(event->u.keyButtonPointer.time, sw);
445 ev->x = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventX, sw));
446 ev->y = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventY, sw));
447 ev->x_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootX, sw));
448 ev->y_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootY, sw));
449 ev->state = sw16(event->u.keyButtonPointer.state, sw);
450 ev->same_screen = event->u.keyButtonPointer.sameScreen;
451 ev->keycode = event->u.u.detail;
457 register XButtonEvent *ev = (XButtonEvent *) re;
458 ev->root = sw32(event->u.keyButtonPointer.root, sw);
459 ev->window = sw32(event->u.keyButtonPointer.event, sw);
460 ev->subwindow = sw32(event->u.keyButtonPointer.child, sw);
461 ev->time = sw32(event->u.keyButtonPointer.time, sw);
462 ev->x = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventX, sw));
463 ev->y = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventY, sw));
464 ev->x_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootX, sw));
465 ev->y_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootY, sw));
466 ev->state = sw16(event->u.keyButtonPointer.state, sw);
467 ev->same_screen = event->u.keyButtonPointer.sameScreen;
468 ev->button = event->u.u.detail;
473 register XMotionEvent *ev = (XMotionEvent *)re;
474 ev->root = sw32(event->u.keyButtonPointer.root, sw);
475 ev->window = sw32(event->u.keyButtonPointer.event, sw);
476 ev->subwindow = sw32(event->u.keyButtonPointer.child, sw);
477 ev->time = sw32(event->u.keyButtonPointer.time, sw);
478 ev->x = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventX, sw));
479 ev->y = cvtINT16toInt(sw16(event->u.keyButtonPointer.eventY, sw));
480 ev->x_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootX, sw));
481 ev->y_root = cvtINT16toInt(sw16(event->u.keyButtonPointer.rootY, sw));
482 ev->state = sw16(event->u.keyButtonPointer.state, sw);
483 ev->same_screen = event->u.keyButtonPointer.sameScreen;
484 ev->is_hint = event->u.u.detail;
490 register XCrossingEvent *ev = (XCrossingEvent *) re;
491 ev->root = sw32(event->u.enterLeave.root, sw);
492 ev->window = sw32(event->u.enterLeave.event, sw);
493 ev->subwindow = sw32(event->u.enterLeave.child, sw);
494 ev->time = sw32(event->u.enterLeave.time, sw);
495 ev->x = cvtINT16toInt(sw16(event->u.enterLeave.eventX, sw));
496 ev->y = cvtINT16toInt(sw16(event->u.enterLeave.eventY, sw));
497 ev->x_root = cvtINT16toInt(sw16(event->u.enterLeave.rootX, sw));
498 ev->y_root = cvtINT16toInt(sw16(event->u.enterLeave.rootY, sw));
499 ev->state = sw16(event->u.enterLeave.state, sw);
500 ev->mode = event->u.enterLeave.mode;
501 ev->same_screen = (event->u.enterLeave.flags &
502 ELFlagSameScreen) && True;
503 ev->focus = (event->u.enterLeave.flags &
504 ELFlagFocus) && True;
505 ev->detail = event->u.u.detail;
511 register XFocusChangeEvent *ev = (XFocusChangeEvent *) re;
512 ev->window = sw32(event->u.focus.window, sw);
513 ev->mode = event->u.focus.mode;
514 ev->detail = event->u.u.detail;
519 register XKeymapEvent *ev = (XKeymapEvent *) re;
521 memcpy(&ev->key_vector[1],
522 (char *)((xKeymapEvent *) event)->map,
523 sizeof (((xKeymapEvent *) event)->map));
528 register XExposeEvent *ev = (XExposeEvent *) re;
529 ev->window = sw32(event->u.expose.window, sw);
530 ev->x = sw16(event->u.expose.x, sw);
531 ev->y = sw16(event->u.expose.y, sw);
532 ev->width = sw16(event->u.expose.width, sw);
533 ev->height = sw16(event->u.expose.height, sw);
534 ev->count = sw16(event->u.expose.count, sw);
539 register XGraphicsExposeEvent *ev =
540 (XGraphicsExposeEvent *) re;
541 ev->drawable = sw32(event->u.graphicsExposure.drawable, sw);
542 ev->x = sw16(event->u.graphicsExposure.x, sw);
543 ev->y = sw16(event->u.graphicsExposure.y, sw);
544 ev->width = sw16(event->u.graphicsExposure.width, sw);
545 ev->height = sw16(event->u.graphicsExposure.height, sw);
546 ev->count = sw16(event->u.graphicsExposure.count, sw);
547 ev->major_code = event->u.graphicsExposure.majorEvent;
548 ev->minor_code = sw16(event->u.graphicsExposure.minorEvent, sw);
553 register XNoExposeEvent *ev = (XNoExposeEvent *) re;
554 ev->drawable = sw32(event->u.noExposure.drawable, sw);
555 ev->major_code = event->u.noExposure.majorEvent;
556 ev->minor_code = sw16(event->u.noExposure.minorEvent, sw);
559 case VisibilityNotify:
561 register XVisibilityEvent *ev = (XVisibilityEvent *) re;
562 ev->window = sw32(event->u.visibility.window, sw);
563 ev->state = event->u.visibility.state;
568 register XCreateWindowEvent *ev =
569 (XCreateWindowEvent *) re;
570 ev->window = sw32(event->u.createNotify.window, sw);
571 ev->parent = sw32(event->u.createNotify.parent, sw);
572 ev->x = cvtINT16toInt(sw16(event->u.createNotify.x, sw));
573 ev->y = cvtINT16toInt(sw16(event->u.createNotify.y, sw));
574 ev->width = sw16(event->u.createNotify.width, sw);
575 ev->height = sw16(event->u.createNotify.height, sw);
576 ev->border_width = sw16(event->u.createNotify.borderWidth, sw);
577 ev->override_redirect = event->u.createNotify.override;
582 register XDestroyWindowEvent *ev =
583 (XDestroyWindowEvent *) re;
584 ev->window = sw32(event->u.destroyNotify.window, sw);
585 ev->event = sw32(event->u.destroyNotify.event, sw);
590 register XUnmapEvent *ev = (XUnmapEvent *) re;
591 ev->window = sw32(event->u.unmapNotify.window, sw);
592 ev->event = sw32(event->u.unmapNotify.event, sw);
593 ev->from_configure = event->u.unmapNotify.fromConfigure;
598 register XMapEvent *ev = (XMapEvent *) re;
599 ev->window = sw32(event->u.mapNotify.window, sw);
600 ev->event = sw32(event->u.mapNotify.event, sw);
601 ev->override_redirect = event->u.mapNotify.override;
606 register XMapRequestEvent *ev = (XMapRequestEvent *) re;
607 ev->window = sw32(event->u.mapRequest.window, sw);
608 ev->parent = sw32(event->u.mapRequest.parent, sw);
613 register XReparentEvent *ev = (XReparentEvent *) re;
614 ev->event = sw32(event->u.reparent.event, sw);
615 ev->window = sw32(event->u.reparent.window, sw);
616 ev->parent = sw32(event->u.reparent.parent, sw);
617 ev->x = cvtINT16toInt(sw16(event->u.reparent.x, sw));
618 ev->y = cvtINT16toInt(sw16(event->u.reparent.y, sw));
619 ev->override_redirect = event->u.reparent.override;
622 case ConfigureNotify:
624 register XConfigureEvent *ev = (XConfigureEvent *) re;
625 ev->event = sw32(event->u.configureNotify.event, sw);
626 ev->window = sw32(event->u.configureNotify.window, sw);
627 ev->above = sw32(event->u.configureNotify.aboveSibling, sw);
628 ev->x = cvtINT16toInt(sw16(event->u.configureNotify.x, sw));
629 ev->y = cvtINT16toInt(sw16(event->u.configureNotify.y, sw));
630 ev->width = sw16(event->u.configureNotify.width, sw);
631 ev->height = sw16(event->u.configureNotify.height, sw);
632 ev->border_width = sw16(event->u.configureNotify.borderWidth, sw);
633 ev->override_redirect = event->u.configureNotify.override;
636 case ConfigureRequest:
638 register XConfigureRequestEvent *ev =
639 (XConfigureRequestEvent *) re;
640 ev->window = sw32(event->u.configureRequest.window, sw);
641 ev->parent = sw32(event->u.configureRequest.parent, sw);
642 ev->above = sw32(event->u.configureRequest.sibling, sw);
643 ev->x = cvtINT16toInt(sw16(event->u.configureRequest.x, sw));
644 ev->y = cvtINT16toInt(sw16(event->u.configureRequest.y, sw));
645 ev->width = sw16(event->u.configureRequest.width, sw);
646 ev->height = sw16(event->u.configureRequest.height, sw);
647 ev->border_width = sw16(event->u.configureRequest.borderWidth, sw);
648 ev->value_mask = sw16(event->u.configureRequest.valueMask, sw);
649 ev->detail = event->u.u.detail;
654 register XGravityEvent *ev = (XGravityEvent *) re;
655 ev->window = sw32(event->u.gravity.window, sw);
656 ev->event = sw32(event->u.gravity.event, sw);
657 ev->x = cvtINT16toInt(sw16(event->u.gravity.x, sw));
658 ev->y = cvtINT16toInt(sw16(event->u.gravity.y, sw));
663 register XResizeRequestEvent *ev =
664 (XResizeRequestEvent *) re;
665 ev->window = sw32(event->u.resizeRequest.window, sw);
666 ev->width = sw16(event->u.resizeRequest.width, sw);
667 ev->height = sw16(event->u.resizeRequest.height, sw);
670 case CirculateNotify:
672 register XCirculateEvent *ev = (XCirculateEvent *) re;
673 ev->window = sw32(event->u.circulate.window, sw);
674 ev->event = sw32(event->u.circulate.event, sw);
675 ev->place = event->u.circulate.place;
678 case CirculateRequest:
680 register XCirculateRequestEvent *ev =
681 (XCirculateRequestEvent *) re;
682 ev->window = sw32(event->u.circulate.window, sw);
683 ev->parent = sw32(event->u.circulate.event, sw);
684 ev->place = event->u.circulate.place;
689 register XPropertyEvent *ev = (XPropertyEvent *) re;
690 ev->window = sw32(event->u.property.window, sw);
691 ev->atom = sw32(event->u.property.atom, sw);
692 ev->time = sw32(event->u.property.time, sw);
693 ev->state = event->u.property.state;
698 register XSelectionClearEvent *ev =
699 (XSelectionClearEvent *) re;
700 ev->window = sw32(event->u.selectionClear.window, sw);
701 ev->selection = sw32(event->u.selectionClear.atom, sw);
702 ev->time = sw32(event->u.selectionClear.time, sw);
705 case SelectionRequest:
707 register XSelectionRequestEvent *ev =
708 (XSelectionRequestEvent *) re;
709 ev->owner = sw32(event->u.selectionRequest.owner, sw);
710 ev->requestor = sw32(event->u.selectionRequest.requestor, sw);
711 ev->selection = sw32(event->u.selectionRequest.selection, sw);
712 ev->target = sw32(event->u.selectionRequest.target, sw);
713 ev->property = sw32(event->u.selectionRequest.property, sw);
714 ev->time = sw32(event->u.selectionRequest.time, sw);
717 case SelectionNotify:
719 register XSelectionEvent *ev = (XSelectionEvent *) re;
720 ev->requestor = sw32(event->u.selectionNotify.requestor, sw);
721 ev->selection = sw32(event->u.selectionNotify.selection, sw);
722 ev->target = sw32(event->u.selectionNotify.target, sw);
723 ev->property = sw32(event->u.selectionNotify.property, sw);
724 ev->time = sw32(event->u.selectionNotify.time, sw);
729 register XColormapEvent *ev = (XColormapEvent *) re;
730 ev->window = sw32(event->u.colormap.window, sw);
731 ev->colormap = sw32(event->u.colormap.colormap, sw);
732 ev->new = event->u.colormap.new;
733 ev->state = event->u.colormap.state;
739 register XClientMessageEvent *ev
740 = (XClientMessageEvent *) re;
741 ev->window = sw32(event->u.clientMessage.window, sw);
742 ev->format = event->u.u.detail;
743 switch (ev->format) {
745 ev->message_type = sw32(event->u.clientMessage.u.b.type, sw);
746 for (i = 0; i < 20; i++)
747 ev->data.b[i] = event->u.clientMessage.u.b.bytes[i];
750 ev->message_type = sw32(event->u.clientMessage.u.s.type, sw);
751 ev->data.s[0] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts0, sw));
752 ev->data.s[1] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts1, sw));
753 ev->data.s[2] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts2, sw));
754 ev->data.s[3] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts3, sw));
755 ev->data.s[4] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts4, sw));
756 ev->data.s[5] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts5, sw));
757 ev->data.s[6] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts6, sw));
758 ev->data.s[7] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts7, sw));
759 ev->data.s[8] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts8, sw));
760 ev->data.s[9] = cvtINT16toShort(sw16(event->u.clientMessage.u.s.shorts9, sw));
763 ev->message_type = sw32(event->u.clientMessage.u.l.type, sw);
764 ev->data.l[0] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs0, sw));
765 ev->data.l[1] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs1, sw));
766 ev->data.l[2] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs2, sw));
767 ev->data.l[3] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs3, sw));
768 ev->data.l[4] = cvtINT32toLong(sw32(event->u.clientMessage.u.l.longs4, sw));
770 default: /* XXX should never occur */
777 register XMappingEvent *ev = (XMappingEvent *)re;
779 ev->first_keycode = event->u.mappingNotify.firstKeyCode;
780 ev->request = event->u.mappingNotify.request;
781 ev->count = event->u.mappingNotify.count;