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

1.1     ! root        1: #include "copyright.h"
        !             2: 
        !             3: /* $Header: XGetPntMap.c,v 1.5 87/09/11 08:09:56 toddb Exp $ */
        !             4: /* Copyright    Massachusetts Institute of Technology    1986  */
        !             5: 
        !             6: #define NEED_REPLIES
        !             7: #include "Xlibint.h"
        !             8: 
        !             9: #define MIN(a, b) ((a) < (b) ? (a) : (b))
        !            10: 
        !            11: int XGetPointerMapping (dpy, map, nmaps)
        !            12:     register Display *dpy;
        !            13:     unsigned char map[];
        !            14:     int nmaps;
        !            15: 
        !            16: {
        !            17:     unsigned char mapping[256];        /* known fixed size */
        !            18:     long nbytes;
        !            19:     xGetPointerMappingReply rep;
        !            20:     register xReq *req;
        !            21: 
        !            22:     LockDisplay(dpy);
        !            23:     GetEmptyReq(GetPointerMapping, req);
        !            24:     (void) _XReply(dpy, (xReply *)&rep, 0, xFalse);
        !            25: 
        !            26:     nbytes = (long)rep.length << 2;
        !            27:     _XRead (dpy, (char *)mapping, nbytes);
        !            28:     /* don't return more data than the user asked for. */
        !            29:     if (rep.nElts) {
        !            30:            bcopy ((char *) mapping, (char *) map, 
        !            31:                MIN((int)rep.nElts, nmaps) );
        !            32:        }
        !            33:     UnlockDisplay(dpy);
        !            34:     SyncHandle();
        !            35:     return ((int) rep.nElts);
        !            36: }
        !            37: 
        !            38: KeySym *XGetKeyboardMapping (dpy, first_keycode, count, keysyms_per_keycode)
        !            39:     register Display *dpy;
        !            40:     KeyCode first_keycode;
        !            41:     int count;
        !            42:      int *keysyms_per_keycode;         /* RETURN */
        !            43: {
        !            44:     long nbytes;
        !            45:     register KeySym *mapping = NULL;
        !            46:     xGetKeyboardMappingReply rep;
        !            47:     register xGetKeyboardMappingReq *req;
        !            48: 
        !            49:     LockDisplay(dpy);
        !            50:     GetReq(GetKeyboardMapping, req);
        !            51:     req->firstKeyCode = first_keycode;
        !            52:     req->count = count;
        !            53:     (void) _XReply(dpy, (xReply *)&rep, 0, xFalse);
        !            54: 
        !            55:     if (rep.length > 0) {
        !            56:         *keysyms_per_keycode = rep.keySymsPerKeyCode;
        !            57:        nbytes = (long)rep.length << 2;
        !            58:        mapping = (KeySym *) Xmalloc((unsigned) nbytes);
        !            59: 
        !            60:        _XRead (dpy, (char *)mapping, nbytes);
        !            61:       }
        !            62:     UnlockDisplay(dpy);
        !            63:     SyncHandle();
        !            64:     return (mapping);
        !            65: }
        !            66: 

unix.superglobalmegacorp.com

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