XGrabKeyboard()XGrabKeyboard()NameXGrabKeyboard – grab the keyboard.
Synopsis
int XGrabKeyboard(display, grab_window, owner_events, pointer_mode,
keyboard_mode, time)
Display *display;
Window grab_window;
Bool owner_events;
int pointer_mode, keyboard_mode;
Time time;
Arguments
display Specifies a connection to an X server; returned from
XOpenDisplay().
grab_window
Specifies the ID of the window that requires continuous key‐
board input.
owner_events
Specifies a boolean value of either True or False. See the
"Description" section below.
pointer_mode
Controls processing of pointer events during the grab. Pass
either GrabModeSync or GrabModeAsync.
keyboard_mode
Controls processing of keyboard events during the grab. Pass
either GrabModeSync or GrabModeAsync.
time Specifies the time when the grab should take place. Pass
either a timestamp, expressed in milliseconds, or the con‐
stant CurrentTime.
Returns
GrabSuccess on success. AlreadyGrabbed, GrabNotViewable, GrabInvalid‐
Time, or GrabFrozen on failure.
DescriptionXGrabKeyboard() actively grabs control of the main keyboard. Further
key events are reported only to the grabbing client. This request gen‐
erates FocusIn and FocusOut events.
XGrabKeyboard() processing is controlled by the value in the
owner_events argument:
· If owner_events is False, all generated key events are reported to
grab_window.
· If owner_events is True, then if a generated key event would nor‐
mally be reported to this client, it is reported normally. Other‐
wise the event is reported to grab_window.
Both KeyPress and KeyRelease events are always reported, independent of
any event selection made by the client.
XGrabKeyboard() processing of pointer events and keyboard events are
controlled by pointer_mode and keyboard_mode:
· If the pointer_mode or keyboard_mode is GrabModeAsync, event pro‐
cessing for the respective device continues normally.
· For keyboard_mode GrabModeAsync only: if the keyboard was currently
frozen by this client, then processing of keyboard events is
resumed.
· If the pointer_mode or keyboard_mode is GrabModeSync, events for the
respective device are queued by the server until a releasing XAllow‐
Events() request occurs or until the keyboard grab is released as
described above.
If the grab is successful, XGrabKeyboard() returns the constant Grab‐
Success. XGrabKeyboard() fails under the following conditions and
returns the following:
· If the keyboard is actively grabbed by some other client, it returns
AlreadyGrabbed.
· If grab_window is not viewable, it returns GrabNotViewable.
· If time is earlier than the last keyboard grab time or later than
the current server time, it returns GrabInvalidTime.
· If the pointer is frozen by an active grab of another client, the
request fails with a status GrabFrozen.
If the grab succeeds, the last keyboard grab time is set to the speci‐
fied time, with CurrentTime replaced by the current X server time.
For more information on grabbing, see Volume One, Chapter 9, The Key‐
board and Pointer.
Errors
BadValue
BadWindow
See AlsoXChangeActivePointerGrab(), XGrabButton(), XGrabKey(), XGrabPointer(),
XGrabServer(), XUngrabButton(), XUngrabKey(), XUngrabKeyboard(), XUn‐
grabPointer(), XUngrabServer().
Xlib - Grabbing XGrabKeyboard()