/*
 * -- $Header: /cec/src/nestor/servers/R3/shXlib/XSetPntMap.c,v 1.1.1.1
 * 90/04/23 10:06:42 spanachi Exp $
 */
#include "copyright.h"

/* $XConsortium: XSetPntMap.c,v 11.9 88/09/06 16:10:23 jim Exp $ */
/* Copyright    Massachusetts Institute of Technology    1986	 */
/* -- MULTIPLEX Extension -- */

#define NEED_REPLIES

#include "Xlibint.h"
/* returns either  DeviceMappingSuccess or DeviceMappingBusy  */

/* -- additional includes -- */
#include "utils.h"

int
XSetPointerMapping (dpy, map, nmaps)
  register Display *dpy;
  unsigned char map[];
  int nmaps;
{
  register xSetPointerMappingReq *req;
  xSetPointerMappingReply rep;

  /* -- flush default dpy's queue to keep buffers aligned -- */
  XmuXFlushDefault (dpy);
  /* -- switch to the chalk holder display -- */
  dpy = XmuXChalkDisplay (dpy);

  LockDisplay (dpy);
  GetReq (SetPointerMapping, req);
  req->nElts = nmaps;
  req->length += (nmaps + 3) >> 2;
  Data (dpy, (char *) map, (long) nmaps);	/* note that map is char[] */
  if (_XReply (dpy, (xReply *) & rep, 0, xFalse) == 0)
    rep.success = MappingSuccess;
  UnlockDisplay (dpy);
  SyncHandle ();
  return ((int) rep.success);
}

XChangeKeyboardMapping (dpy, first_keycode, keysyms_per_keycode,
			keysyms, nkeycodes)
  register Display *dpy;
  int first_keycode;
  int keysyms_per_keycode;
  KeySym *keysyms;
  int nkeycodes;
{
  register long nbytes;
  register xChangeKeyboardMappingReq *req;

  LockDisplay (dpy);
  GetReq (ChangeKeyboardMapping, req);
  req->firstKeyCode = first_keycode;
  req->keyCodes = nkeycodes;
  req->keySymsPerKeyCode = keysyms_per_keycode;
  req->firstKeyCode = first_keycode;
  req->length += nkeycodes * keysyms_per_keycode;
  nbytes = keysyms_per_keycode * nkeycodes * 4;
  Data32 (dpy, (long *) keysyms, nbytes);
  UnlockDisplay (dpy);
  SyncHandle ();
  return;
}
