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