/*
 * -- $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();
}




