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

# xcb\_query\_pointer(3)

get pointer coordinates

## NAME

xcb\_query\_pointer - get pointer coordinates

## SYNOPSIS

**#include \<xcb/xproto.h\>**

### Request function

xcb\_query\_pointer\_cookie\_t **xcb\_query\_pointer**(xcb\_connection\_t \**conn*, xcb\_window\_t *window*);

### Reply datastructure

```

typedef struct xcb_query_pointer_reply_t {
    uint8_t      response_type;
    uint8_t      same_screen;
    uint16_t     sequence;
    uint32_t     length;
    xcb_window_t root;
    xcb_window_t child;
    int16_t      root_x;
    int16_t      root_y;
    int16_t      win_x;
    int16_t      win_y;
    uint16_t     mask;
    uint8_t      pad0[2];
} xcb_query_pointer_reply_t;
```

### Reply function

xcb\_query\_pointer\_reply\_t \***xcb\_query\_pointer\_reply**(xcb\_connection\_t \**conn*, xcb\_query\_pointer\_cookie\_t *cookie*, xcb\_generic\_error\_t \*\**e*);\

## REQUEST ARGUMENTS

- *conn*

  The XCB connection to X11.

- *window*

  A window to check if the pointer is on the same screen as *window* (see the *same\_screen* field in the reply).

## REPLY FIELDS

- *response\_type*

  The type of this reply, in this case *XCB\_QUERY\_POINTER*. This field is also present in the *xcb\_generic\_reply\_t* and can be used to tell replies apart from each other.

- *sequence*

  The sequence number of the last request processed by the X11 server.

- *length*

  The length of the reply, in words (a word is 4 bytes).

- *same\_screen*

  If *same\_screen* is False, then the pointer is not on the same screen as the argument window, *child* is None, and *win\_x* and *win\_y* are zero. If *same\_screen* is True, then *win\_x* and *win\_y* are the pointer coordinates relative to the argument window's origin, and child is the child containing the pointer, if any.

- *root*

  The root window the pointer is logically on.

- *child*

  The child window containing the pointer, if any, if *same\_screen* is true. If *same\_screen* is false, *XCB\_NONE* is returned.

- *root\_x*

  The pointer X position, relative to *root*.

- *root\_y*

  The pointer Y position, relative to *root*.

- *win\_x*

  The pointer X coordinate, relative to *child*, if *same\_screen* is true. Zero otherwise.

- *win\_y*

  The pointer Y coordinate, relative to *child*, if *same\_screen* is true. Zero otherwise.

- *mask*

  The current logical state of the modifier keys and the buttons. Note that the logical state of a device (as seen by means of the protocol) may lag the physical state if device event processing is frozen.

## DESCRIPTION

Gets the root window the pointer is logically on and the pointer coordinates relative to the root window's origin.

## RETURN VALUE

Returns an *xcb\_query\_pointer\_cookie\_t*. Errors have to be handled when calling the reply function *xcb\_query\_pointer\_reply*.

If you want to handle errors in the event loop instead, use *xcb\_query\_pointer\_unchecked*. See **[xcb-requests(3)](/xcb-requests/3.md)** for details.

## ERRORS

- *xcb\_window\_error\_t*

  The specified *window* does not exist.

## SEE ALSO

[**xcb-requests**(3)](/xcb-requests/3.md)

## AUTHOR

Generated from xproto.xml. Contact xcb@lists.freedesktop.org for corrections and improvements.
