Annotation of researchv9/X11/src/X.V11R1/lib/X/XEvToWire.c, revision 1.1.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.