Annotation of researchv9/X11/src/X.V11R1/lib/X/XEvToWire.c, revision 1.1

1.1     ! root        1: #include "copyright.h"
        !             2: /* Copyright    Massachusetts Institute of Technology    1985, 1986, 1987 */
        !             3: 
        !             4: #ifndef lint
        !             5: static char rcsid[] = "$Header: XEvToWire.c,v 11.10 87/09/11 08:08:50 toddb Exp $";
        !             6: #endif
        !             7: 
        !             8: /*
        !             9:  *     XEvToWire.c - Internal support routines for the C subroutine
        !            10:  *     interface library (Xlib) to the X Window System Protocol V11.0.
        !            11:  */
        !            12: #define NEED_EVENTS
        !            13: #define NEED_REPLIES
        !            14: 
        !            15: #include <stdio.h>
        !            16: #include "Xlibint.h"
        !            17: 
        !            18: /*
        !            19:  * reformat a wire event into an XEvent structure of the right type.
        !            20:  */
        !            21: /*ARGSUSED*/
        !            22: _XEventToWire(dpy, re, event)
        !            23: register Display *dpy; /* pointer to display structure */
        !            24: register XEvent *re;   /* pointer to where event should be reformatted */
        !            25: register xEvent *event;        /* wire protocol event */
        !            26: {
        !            27:        
        !            28:        switch (event->u.u.type = re->type) {
        !            29:              case KeyPress:
        !            30:              case KeyRelease:
        !            31:                {
        !            32:                        register XKeyEvent *ev = (XKeyEvent*) re;
        !            33:                        event->u.keyButtonPointer.root  = ev->root;
        !            34:                        ev->window      = event->u.keyButtonPointer.event;
        !            35: 
        !            36:                        event->u.keyButtonPointer.event  = ev->window;
        !            37:                        event->u.keyButtonPointer.child  = ev->subwindow;
        !            38:                        event->u.keyButtonPointer.time   = ev->time;
        !            39:                        event->u.keyButtonPointer.eventX = ev->x ;
        !            40:                        event->u.keyButtonPointer.eventY = ev->y ;
        !            41:                        event->u.keyButtonPointer.rootX  = ev->x_root;
        !            42:                        event->u.keyButtonPointer.rootY  = ev->y_root;
        !            43:                        event->u.keyButtonPointer.state  = ev->state;
        !            44:                        event->u.keyButtonPointer.sameScreen = ev->same_screen;
        !            45:                        event->u.u.detail = ev->keycode;
        !            46:                }
        !            47:                break;
        !            48:              case ButtonPress:
        !            49:              case ButtonRelease:
        !            50:                {
        !            51:                        register XButtonEvent *ev =  (XButtonEvent *) re;
        !            52:                        event->u.keyButtonPointer.root   = ev->root;
        !            53:                        event->u.keyButtonPointer.event  = ev->window;
        !            54:                        event->u.keyButtonPointer.child  = ev->subwindow;
        !            55:                        event->u.keyButtonPointer.time   = ev->time;
        !            56:                        event->u.keyButtonPointer.eventX = ev->x;
        !            57:                        event->u.keyButtonPointer.event  = ev->y;
        !            58:                        event->u.keyButtonPointer.rootX  = ev->x_root;
        !            59:                        event->u.keyButtonPointer.rootY  = ev->y_root;
        !            60:                        event->u.keyButtonPointer.state  = ev->state;
        !            61:                        event->u.keyButtonPointer.sameScreen    = ev->same_screen;
        !            62:                        event->u.u.detail               = ev->button;
        !            63:                }
        !            64:                break;
        !            65:              case MotionNotify:
        !            66:                {
        !            67:                        register XMotionEvent *ev =   (XMotionEvent *)re;
        !            68:                        event->u.keyButtonPointer.root  = ev->root;
        !            69:                        event->u.keyButtonPointer.event = ev->window;
        !            70:                        event->u.keyButtonPointer.child = ev->subwindow;
        !            71:                        event->u.keyButtonPointer.time  = ev->time;
        !            72:                        event->u.keyButtonPointer.eventX= ev->x;
        !            73:                        event->u.keyButtonPointer.eventY= ev->y;
        !            74:                        event->u.keyButtonPointer.rootX = ev->x_root;
        !            75:                        event->u.keyButtonPointer.rootY = ev->y_root;
        !            76:                        event->u.keyButtonPointer.state = ev->state;
        !            77:                        event->u.keyButtonPointer.sameScreen= ev->same_screen;
        !            78:                        event->u.u.detail               = ev->is_hint;
        !            79:                }
        !            80:                break;
        !            81:              case EnterNotify:
        !            82:              case LeaveNotify:
        !            83:                {
        !            84:                        register XCrossingEvent *ev   = (XCrossingEvent *) re;
        !            85:                        event->u.enterLeave.root        = ev->root;
        !            86:                        event->u.enterLeave.event       = ev->window;
        !            87:                        event->u.enterLeave.child       = ev->subwindow;
        !            88:                        event->u.enterLeave.time        = ev->time;
        !            89:                        event->u.enterLeave.eventX      = ev->x;
        !            90:                        event->u.enterLeave.eventY      = ev->y;
        !            91:                        event->u.enterLeave.rootX       = ev->x_root;
        !            92:                        event->u.enterLeave.rootY       = ev->y_root;
        !            93:                        event->u.enterLeave.state       = ev->state;
        !            94:                        event->u.enterLeave.mode        = ev->mode;
        !            95:                        event->u.enterLeave.flags       = 0;
        !            96:                        if (ev->same_screen) {
        !            97:                                event->u.enterLeave.flags |= ELFlagSameScreen;
        !            98:                                }
        !            99:                        if (ev->focus) {
        !           100:                                event->u.enterLeave.flags |= ELFlagFocus;
        !           101:                                }
        !           102:                        event->u.u.detail               = ev->detail;
        !           103:                }
        !           104:                  break;
        !           105:              case FocusIn:
        !           106:              case FocusOut:
        !           107:                {
        !           108:                        register XFocusChangeEvent *ev = (XFocusChangeEvent *) re;
        !           109:                        event->u.focus.window   = ev->window;
        !           110:                        event->u.focus.mode     = ev->mode;
        !           111:                        event->u.u.detail       = ev->detail;
        !           112:                }
        !           113:                  break;
        !           114:              case KeymapNotify:
        !           115:                {
        !           116:                        register XKeymapEvent *ev = (XKeymapEvent *) re;
        !           117:                        bcopy ( &ev->key_vector[1], 
        !           118:                                (char *)(((xKeymapEvent *) event)->map),
        !           119:                               sizeof (((xKeymapEvent *) event)->map));
        !           120:                }
        !           121:                break;
        !           122:              case Expose:
        !           123:                {
        !           124:                        register XExposeEvent *ev = (XExposeEvent *) re;
        !           125:                        event->u.expose.window          = ev->window;
        !           126:                        event->u.expose.x               = ev->x;
        !           127:                        event->u.expose.y               = ev->y;
        !           128:                        event->u.expose.width           = ev->width;
        !           129:                        event->u.expose.height          = ev->height;
        !           130:                        event->u.expose.count           = ev->count;
        !           131:                }
        !           132:                break;
        !           133:              case GraphicsExpose:
        !           134:                {
        !           135:                    register XGraphicsExposeEvent *ev =
        !           136:                        (XGraphicsExposeEvent *) re;
        !           137:                    event->u.graphicsExposure.drawable  = ev->drawable;
        !           138:                    event->u.graphicsExposure.x         = ev->x;
        !           139:                    event->u.graphicsExposure.y         = ev->y;
        !           140:                    event->u.graphicsExposure.width     = ev->width;
        !           141:                    event->u.graphicsExposure.height    = ev->height;
        !           142:                    event->u.graphicsExposure.count     = ev->count;
        !           143:                    event->u.graphicsExposure.majorEvent= ev->major_code;
        !           144:                    event->u.graphicsExposure.minorEvent= ev->minor_code;
        !           145:                }
        !           146:                break;
        !           147:              case NoExpose:
        !           148:                {
        !           149:                    register XNoExposeEvent *ev = (XNoExposeEvent *) re;
        !           150:                    event->u.noExposure.drawable        = ev->drawable;
        !           151:                    event->u.noExposure.majorEvent      = ev->major_code;
        !           152:                    event->u.noExposure.minorEvent      = ev->minor_code;
        !           153:                }
        !           154:                break;
        !           155:              case VisibilityNotify:
        !           156:                {
        !           157:                    register XVisibilityEvent *ev = (XVisibilityEvent *) re;
        !           158:                    event->u.visibility.window          = ev->window;
        !           159:                    event->u.visibility.state           = ev->state;
        !           160:                }
        !           161:                break;
        !           162:              case CreateNotify:
        !           163:                {
        !           164:                    register XCreateWindowEvent *ev =
        !           165:                         (XCreateWindowEvent *) re;
        !           166:                    event->u.createNotify.window        = ev->window;
        !           167:                    event->u.createNotify.parent        = ev->parent;
        !           168:                    event->u.createNotify.x             = ev->x;
        !           169:                    event->u.createNotify.y             = ev->y;
        !           170:                    event->u.createNotify.width         = ev->width;
        !           171:                    event->u.createNotify.height        = ev->height;
        !           172:                    event->u.createNotify.borderWidth   = ev->border_width;
        !           173:                    event->u.createNotify.override      = ev->override_redirect;
        !           174:                }
        !           175:                break;
        !           176:              case DestroyNotify:
        !           177:                {
        !           178:                    register XDestroyWindowEvent *ev =
        !           179:                                (XDestroyWindowEvent *) re;
        !           180:                    event->u.destroyNotify.window       = ev->window;
        !           181:                    event->u.destroyNotify.event        = ev->event;
        !           182:                }
        !           183:                break;
        !           184:              case UnmapNotify:
        !           185:                {
        !           186:                    register XUnmapEvent *ev = (XUnmapEvent *) re;
        !           187:                    event->u.unmapNotify.window = ev->window;
        !           188:                    event->u.unmapNotify.event  = ev->event;
        !           189:                    event->u.unmapNotify.fromConfigure  = ev->from_configure;
        !           190:                }
        !           191:                break;
        !           192:              case MapNotify:
        !           193:                {
        !           194:                    register XMapEvent *ev = (XMapEvent *) re;
        !           195:                    event->u.mapNotify.window   = ev->window;
        !           196:                    event->u.mapNotify.event    = ev->event;
        !           197:                    event->u.mapNotify.override = ev->override_redirect;
        !           198:                }
        !           199:                break;
        !           200:              case MapRequest:
        !           201:                {
        !           202:                    register XMapRequestEvent *ev = (XMapRequestEvent *) re;
        !           203:                    event->u.mapRequest.window  = ev->window;
        !           204:                    event->u.mapRequest.parent  = ev->parent;
        !           205:                }
        !           206:                break;
        !           207:              case ReparentNotify:
        !           208:                {
        !           209:                    register XReparentEvent *ev = (XReparentEvent *) re;
        !           210:                    event->u.reparent.window    = ev->window;
        !           211:                    event->u.reparent.event     = ev->event;
        !           212:                    event->u.reparent.parent    = ev->parent;
        !           213:                    event->u.reparent.x         = ev->x;
        !           214:                    event->u.reparent.y         = ev->y;
        !           215:                    event->u.reparent.override  = ev->override_redirect;
        !           216:                }
        !           217:                break;
        !           218:              case ConfigureNotify:
        !           219:                {
        !           220:                    register XConfigureEvent *ev = (XConfigureEvent *) re;
        !           221:                    event->u.configureNotify.window     = ev->window;
        !           222:                    event->u.configureNotify.event      = ev->event;
        !           223:                    event->u.configureNotify.aboveSibling       = ev->above;
        !           224:                    event->u.configureNotify.x          = ev->x;
        !           225:                    event->u.configureNotify.y          = ev->y;
        !           226:                    event->u.configureNotify.width      = ev->width;
        !           227:                    event->u.configureNotify.height     = ev->height;
        !           228:                    event->u.configureNotify.borderWidth= ev->border_width;
        !           229:                    event->u.configureNotify.override   = ev->override_redirect;
        !           230:                }
        !           231:                break;
        !           232:              case ConfigureRequest:
        !           233:                {
        !           234:                    register XConfigureRequestEvent *ev =
        !           235:                        (XConfigureRequestEvent *) re;
        !           236:                    event->u.configureRequest.window    = ev->window;
        !           237:                    event->u.configureRequest.parent    = ev->parent;
        !           238:                    event->u.configureRequest.sibling   = ev->above;
        !           239:                    event->u.configureRequest.x         = ev->x;
        !           240:                    event->u.configureRequest.y         = ev->y;
        !           241:                    event->u.configureRequest.width     = ev->width;
        !           242:                    event->u.configureRequest.height    = ev->height;
        !           243:                    event->u.configureRequest.borderWidth= ev->border_width;
        !           244:                    event->u.configureRequest.valueMask= ev->value_mask;
        !           245:                    event->u.u.detail                   = ev->detail;
        !           246:                }
        !           247:                break;
        !           248:              case GravityNotify:
        !           249:                {
        !           250:                    register XGravityEvent *ev  = (XGravityEvent *) re;
        !           251:                    event->u.gravity.window     = ev->window;
        !           252:                    event->u.gravity.event      = ev->event;
        !           253:                    event->u.gravity.x          = ev->x;
        !           254:                    event->u.gravity.y          = ev->y;
        !           255:                }
        !           256:                break;
        !           257:              case ResizeRequest:
        !           258:                {
        !           259:                    register XResizeRequestEvent *ev =
        !           260:                        (XResizeRequestEvent *) re;
        !           261:                    event->u.resizeRequest.window       = ev->window;
        !           262:                    event->u.resizeRequest.width        = ev->width;
        !           263:                    event->u.resizeRequest.height       = ev->height;
        !           264:                }
        !           265:                break;
        !           266:              case CirculateNotify:
        !           267:                {
        !           268:                    register XCirculateEvent *ev = (XCirculateEvent *) re;
        !           269:                    event->u.circulate.window           = ev->window;
        !           270:                    event->u.circulate.event            = ev->event;
        !           271:                    event->u.circulate.place            = ev->place;
        !           272:                }
        !           273:                break;
        !           274:              case CirculateRequest:
        !           275:                {
        !           276:                    register XCirculateRequestEvent *ev =
        !           277:                        (XCirculateRequestEvent *) re;
        !           278:                    event->u.circulate.window           = ev->window;
        !           279:                    event->u.circulate.event            = ev->parent;
        !           280:                    event->u.circulate.place            = ev->place;
        !           281:                }
        !           282:                break;
        !           283:              case PropertyNotify:
        !           284:                {
        !           285:                    register XPropertyEvent *ev = (XPropertyEvent *) re;
        !           286:                    event->u.property.window            = ev->window;
        !           287:                    event->u.property.atom              = ev->atom;
        !           288:                    event->u.property.time              = ev->time;
        !           289:                    event->u.property.state             = ev->state;
        !           290:                }
        !           291:                break;
        !           292:              case SelectionClear:
        !           293:                {
        !           294:                    register XSelectionClearEvent *ev =
        !           295:                         (XSelectionClearEvent *) re;
        !           296:                    event->u.selectionClear.window      = ev->window;
        !           297:                    event->u.selectionClear.atom        = ev->selection;
        !           298:                    event->u.selectionClear.time        = ev->time;
        !           299:                }
        !           300:                break;
        !           301:              case SelectionRequest:
        !           302:                {
        !           303:                    register XSelectionRequestEvent *ev =
        !           304:                        (XSelectionRequestEvent *) re;
        !           305:                    event->u.selectionRequest.owner     = ev->owner;
        !           306:                    event->u.selectionRequest.requestor = ev->requestor;
        !           307:                    event->u.selectionRequest.selection = ev->selection;
        !           308:                    event->u.selectionRequest.target    = ev->target;
        !           309:                    event->u.selectionRequest.property  = ev->property;
        !           310:                    event->u.selectionRequest.time      = ev->time;
        !           311:                }
        !           312:                break;
        !           313:              case SelectionNotify:
        !           314:                {
        !           315:                    register XSelectionEvent *ev = (XSelectionEvent *) re;
        !           316:                    event->u.selectionNotify.requestor  = ev->requestor;
        !           317:                    event->u.selectionNotify.selection  = ev->selection;
        !           318:                    event->u.selectionNotify.target     = ev->target;
        !           319:                    event->u.selectionNotify.property   = ev->property;
        !           320:                    event->u.selectionNotify.time       = ev->time;
        !           321:                }
        !           322:                break;
        !           323:              case ColormapNotify:
        !           324:                {
        !           325:                    register XColormapEvent *ev = (XColormapEvent *) re;
        !           326:                    event->u.colormap.window            = ev->window;
        !           327:                    event->u.colormap.colormap          = ev->colormap;
        !           328:                    event->u.colormap.new               = ev->new;
        !           329:                    event->u.colormap.state             = ev->state;
        !           330:                }
        !           331:                break;
        !           332:              case ClientMessage:
        !           333:                {
        !           334:                   register int i;
        !           335:                   register XClientMessageEvent *ev 
        !           336:                                        = (XClientMessageEvent *) re;
        !           337:                   event->u.clientMessage.window = ev->window;
        !           338:                   event->u.u.detail             = ev->format;
        !           339:                   switch (ev->format) {
        !           340:                        case 8: 
        !           341:                          event->u.clientMessage.u.b.type   = ev->message_type;
        !           342:                          for (i = 0; i < 20; i++)
        !           343:                           event->u.clientMessage.u.b.bytes[i] = ev->data.b[i];
        !           344:                          break;
        !           345:                        case 16:
        !           346:                          event->u.clientMessage.u.s.type   = ev->message_type;
        !           347:                          event->u.clientMessage.u.s.shorts0   = ev->data.s[0];
        !           348:                          event->u.clientMessage.u.s.shorts1   = ev->data.s[1];
        !           349:                          event->u.clientMessage.u.s.shorts2   = ev->data.s[2];
        !           350:                          event->u.clientMessage.u.s.shorts3   = ev->data.s[3];
        !           351:                          event->u.clientMessage.u.s.shorts4   = ev->data.s[4];
        !           352:                          event->u.clientMessage.u.s.shorts5   = ev->data.s[5];
        !           353:                          event->u.clientMessage.u.s.shorts6   = ev->data.s[6];
        !           354:                          event->u.clientMessage.u.s.shorts7   = ev->data.s[7];
        !           355:                          event->u.clientMessage.u.s.shorts8   = ev->data.s[8];
        !           356:                          event->u.clientMessage.u.s.shorts9   = ev->data.s[9];
        !           357:                          break;
        !           358:                        case 32:
        !           359:                          event->u.clientMessage.u.l.type   = ev->message_type;
        !           360:                          event->u.clientMessage.u.l.longs0   = ev->data.l[0];
        !           361:                          event->u.clientMessage.u.l.longs1   = ev->data.l[1];
        !           362:                          event->u.clientMessage.u.l.longs2   = ev->data.l[2];
        !           363:                          event->u.clientMessage.u.l.longs3   = ev->data.l[3];
        !           364:                          event->u.clientMessage.u.l.longs4   = ev->data.l[4];
        !           365:                          break;
        !           366:                        default: /* XXX should never occur */
        !           367:                                break;
        !           368:                        }
        !           369:                    }
        !           370:                case MappingNotify:
        !           371:                  {
        !           372:                    register XMappingEvent *ev = (XMappingEvent *) re;
        !           373:                    event->u.mappingNotify.firstKeyCode = ev->first_keycode;
        !           374:                    event->u.mappingNotify.request      = ev->request;
        !           375:                    event->u.mappingNotify.count        = ev->count;
        !           376:                   }
        !           377:                break;
        !           378:                
        !           379:              default:
        !           380:                /* XXX should do something about unknown event here */
        !           381:                break;
        !           382:        }
        !           383: }

unix.superglobalmegacorp.com

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