/*
 * -- $Header: /cec/src/nestor/servers/R3/shXlib/XGrKey.c,v 1.1.1.1 90/04/23
 * 09:59:56 spanachi Exp $
 */
#include "copyright.h"

/* $XConsortium: XGrKey.c,v 11.7 88/09/06 16:08:28 jim Exp $ */
/* Copyright    Massachusetts Institute of Technology    1986	 */
/* -- MULTIPLEX Extension -- */

#include "Xlibint.h"

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


XGrabKey (dpy, key, modifiers, grab_window, owner_events,
	  pointer_mode, keyboard_mode)
  register Display *dpy;
  int key;
  unsigned int modifiers;
  Window grab_window;
  Bool owner_events;
  int pointer_mode, keyboard_mode;

{
  register xGrabKeyReq *req;
  LockDisplay (dpy);
  GetReq (GrabKey, req);
  req->ownerEvents = owner_events;
  req->grabWindow = grab_window;
  req->modifiers = modifiers;
  req->key = key;
  req->pointerMode = pointer_mode;
  req->keyboardMode = keyboard_mode;

  /*
   * -- Another "hidden" request that involves resources. There's no -- way
   * to find out whether a window has passively grabbed keys. -- But we have
   * to distribute this passive grab or toolkit -- interfaces  won't work on
   * multiplex'ed connections
   */
  if (XmuXStoreResources (dpy))
    XmuXSetWindowKeyGrab (dpy, grab_window, key, modifiers,
			  owner_events, pointer_mode,
			  keyboard_mode);
  UnlockDisplay (dpy);
  SyncHandle ();
}
