xcb 获取鼠标指针的坐标
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;
xcb_query_pointer_cookie_t xcb_query_pointer(xcb_connection_t *conn, xcb_window_t window);
xcb_query_pointer_reply_t *xcb_query_pointer_reply(xcb_connection_t *conn, xcb_query_pointer_cookie_t cookie, xcb_generic_error_t **e);
#include <stdio.h>
#include <xcb/xcb.h>
int main()
{
// 连接到X11 Server
xcb_connection_t* conn = xcb_connect(NULL, NULL);
// 获取screen
const xcb_setup_t* setup = xcb_get_setup(conn);
xcb_screen_iterator_t iter = xcb_setup_roots_iterator(setup);
xcb_screen_t* screen = iter.data;
// 获取鼠标指针的坐标
xcb_query_pointer_cookie_t cookie = xcb_query_pointer(conn, screen->root);
xcb_query_pointer_reply_t* reply = xcb_query_pointer_reply(conn, cookie, NULL);
printf("%d %d\n", reply->root_x, reply->root_y);
free(reply);
xcb_disconnect(conn);
return 0;
}