xcb\_query\_pointer(3) XCB Requests xcb\_query\_pointer(3)

# [NAME](#NAME)

xcb\_query\_pointer - get pointer coordinates

# [SYNOPSIS](#SYNOPSIS)

**#include &lt;xcb/xproto.h&gt;**

## [Request function](#Request_function)

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

## [Reply datastructure](#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](#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](#REQUEST_ARGUMENTS)

[*conn*](#conn)

The XCB connection to X11.

[*window*](#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](#REPLY_FIELDS)

[*response\_type*](#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*](#sequence)

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

[*length*](#length)

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

[*same\_screen*](#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*](#root)

The root window the pointer is logically on.

[*child*](#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*](#root_x)

The pointer X position, relative to *root*.

[*root\_y*](#root_y)

The pointer Y position, relative to *root*.

[*win\_x*](#win_x)

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

[*win\_y*](#win_y)

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

[*mask*](#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](#DESCRIPTION)

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

# [RETURN VALUE](#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)**](/man/os/libxcb/xcb-requests.3) for details.

# [ERRORS](#ERRORS)

[*xcb\_window\_error\_t*](#xcb_window_error_t)

The specified *window* does not exist.

# [SEE ALSO](#SEE_ALSO)

[**xcb-requests**(3)](/man/os/libxcb/xcb-requests.3)

# [AUTHOR](#AUTHOR)

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

libxcb 1.17.0 X Version 11

---

Document: xcb_query_pointer_reply(3) from libxcb 1.17.0-r16 (Chainguard OS)
Source: https://gitlab.freedesktop.org/xorg/lib/libxcb.git
