home *** CD-ROM | disk | FTP | other *** search
/ PC Shareware 1999 March / PCShareware-3-99.iso / IMPLE / DJGPP.RAR / DJGPP2 / XLIB-SR0.ZIP / SRC / XLIBEMU / GRABKEYB.C < prev    next >
C/C++ Source or Header  |  1994-01-14  |  1KB  |  55 lines

  1. /* $Id: grabkeyb.c 1.2 1994/01/15 02:19:34 ulrich Exp $ */
  2. /*
  3.  * grabkeyb.c 
  4.  * 
  5.  * X library functions for keyboard grabbing.
  6.  */
  7.  
  8. #include "Xlibemu.h"
  9.  
  10. int XGrabKeyboard(
  11.     Display*        display,
  12.     Window        grab_window,
  13.     Bool        owner_events,
  14.     int            pointer_mode,
  15.     int            keyboard_mode,
  16.     Time        time)
  17. {
  18.   if (_KeyboardGrab.active &&
  19.       _KeyboardGrab.display != display)
  20.     return AlreadyGrabbed;
  21.  
  22.   if (grab_window->viewable == 0)
  23.     return GrabNotViewable;
  24.  
  25.   if (time != CurrentTime &&
  26.       (time < _KeyboardGrab.time || time > _WCurrentTime()))
  27.     return GrabInvalidTime;
  28.  
  29.   _KeyboardGrab.active = 1;
  30.   _KeyboardGrab.display = display;
  31.   _KeyboardGrab.grab_window = grab_window;
  32.   _KeyboardGrab.owner_events = owner_events;
  33.   _KeyboardGrab.pointer_mode = pointer_mode;
  34.   _KeyboardGrab.keyboard_mode = keyboard_mode;
  35.   _KeyboardGrab.time = (time != CurrentTime) ? time : _WCurrentTime();
  36.  
  37.   return GrabSuccess;
  38. }
  39.  
  40. int XUngrabKeyboard(
  41.     Display*        display,
  42.     Time        time)
  43. {
  44.   if (_KeyboardGrab.active &&
  45.       _KeyboardGrab.display == display)
  46.     {
  47.       if (time != CurrentTime &&
  48.       (time < _KeyboardGrab.time || time > _WCurrentTime()))
  49.     return 0;
  50.       _KeyboardGrab.active = 0;
  51.       return 1;
  52.     }
  53.   return 0;
  54. }
  55.