---
name: "XtGrabKey"
section: "3"
platform: "linux"
package: "libxt"
version: "1.3.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/XtGrabKey"
---

# XtGrabKey(3)

manage grabs

## NAME

XtGrabKey, XtUngrabKey, XtGrabKeyboard, XtUngrabKeyboard, XtGrabButton, XtUngrabButton, XtGrabPointer, XtUngrabPointer - manage grabs

## SYNTAX

\#include \<X11/Intrinsic.h\>

void XtGrabKey(Widget *widget*, KeyCode *keycode*, Modifiers *modifiers*, Boolean *owner\_events*, int *pointer\_mode*, int *keyboard\_mode*);

void XtUngrabKey(Widget *widget*, KeyCode *keycode*, Modifiers *modifiers*);

int XtGrabKeyboard(Widget *widget*, Boolean *owner\_events*, int *pointer\_mode*, int *keyboard\_mode*, Time *time*);

void XtUngrabKeyboard(Widget *widget*, Time *time*);

void XtGrabButton(Widget *widget*, int *button*, Modifiers *modifiers*, Boolean *owner\_events*, unsigned int *event\_mask*, int *pointer\_mode*, int *keyboard\_mode*, Window *confine\_to*, Cursor *cursor*);

void XtUngrabButton(Widget *widget*, unsigned *button*, Modifiers *modifiers*);

int XtGrabPointer(Widget *widget*, Boolean *owner\_events*, unsigned int *event\_mask*, int *pointer\_mode*, int *keyboard\_mode*, Window *confine\_to*, Cursor *cursor*, Time *time*);

void XtUngrabPointer(Widget *widget*, Time *time*);

## ARGUMENTS

- *widget*

  Specifies the widget in whose window the grab will occur. Must be of class Core or a subclass thereof.

- *keycode*

  - *modifiers*

  - *owner\_events*

  - *pointer\_mode*

  - *keyboard\_mode*

  - *time*

  - *button*

  - *confine\_to*

  - *cursor*

  Specifies arguments to the associated Xlib function call.

## DESCRIPTION

**XtGrabKey** calls **XGrabKey** specifying the widget's window as the grab window if the widget is realized. The remaining arguments are exactly as for **XGrabKey**. If the widget is not realized, or is later unrealized, the call to **XGrabKey** will be performed (again) when the widget is realized and its window becomes mapped. In the future, if **XtDispatchEvent** is called with a **KeyPress** event matching the specified keycode and modifiers (which may be **AnyKey** or **AnyModifier**, respectively) for the widget's window, the Intrinsics will call **XtUngrabKeyboard** with the timestamp from the **KeyPress** event if either of the following conditions is true:

- •

  There is a modal cascade and the widget is not in the active subset of the cascade and the keyboard was not previously grabbed, or

- •

  **XFilterEvent** returns **True**.

**XtUngrabKey** calls **XUngrabKey** specifying the widget's window as the ungrab window if the widget is realized. The remaining arguments are exactly as for **XUngrabKey**. If the widget is not realized, **XtUngrabKey** removes a deferred **XtGrabKey** request, if any, for the specified widget, keycode, and modifiers.

If the specified widget is realized **XtGrabKeyboard** calls **XGrabKeyboard** specifying the widget's window as the grab window. The remaining arguments and return value are exactly as for **XGrabKeyboard**. If the widget is not realized, **XtGrabKeyboard** immediately returns **GrabNotViewable**. No future ungrab is implied by **XtGrabKeyboard**.

**XtUngrabKeyboard** calls **XUngrabKeyboard** with the specified time.

**XtGrabButton** calls **XGrabButton** specifying the widget's window as the grab window if the widget is realized. The remaining arguments are exactly as for **XGrabButton**. If the widget is not realized, or is later unrealized, the call to **XGrabButton** will be performed (again) when the widget is realized and its window becomes mapped. In the future, if **XtDispatchEvent** is called with a **ButtonPress** event matching the specified button and modifiers (which may be **AnyButton** or **AnyModifier**, respectively) for the widget's window, the Intrinsics will call **XtUngrabPointer** with the timestamp from the **ButtonPress** event if either of the following conditions is true:

- •

  There is a modal cascade and the widget is not in the active subset of the cascade and the pointer was not previously grabbed, or

- •

  **XFilterEvent** returns **True**.

**XtUngrabButton** calls **XUngrabButton** specifying the widget's window as the ungrab window if the widget is realized. The remaining arguments are exactly as for **XUngrabButton**. If the widget is not realized, **XtUngrabButton** removes a deferred **XtGrabButton** request, if any, for the specified widget, button, and modifiers.

**XtGrabPointer** calls **XGrabPointer** specifying the widget's window as the grab window. The remaining arguments and return value are exactly as for **XGrabPointer**. If the widget is not realized, **XtGrabPointer** immediately returns **GrabNotViewable**. No future ungrab is implied by **XtGrabPointer**.

**XtUngrabPointer** calls **XUngrabPointer** with the specified time.

## SEE ALSO

*X Toolkit Intrinsics - C Language Interface*\
 *Xlib - C Language X Interface*
