【发布时间】:2019-09-08 12:03:13
【问题描述】:
我想在 Xorg 中隐藏系统光标
我使用 xcb 为 Xorg 编写 X11-app,它会在某些情况下隐藏光标(如“xbanish”或“unclutter”)。我试过使用 Xfixes:它适用于 xlib,但不适用于 xcb。
我的 xlib 代码,隐藏光标:
#include <X11/Xlib.h>
#include <X11/extensions/Xfixes.h>
Display *conn = XOpenDisplay(NULL);
XFixesHideCursor(conn, DefaultRootWindow(conn));
Xflush(conn);
我的 xcb 代码,什么都不做:
#include <xcb/xcb.h>
#include <xcb/xfixes.h>
xcb_connection_t *conn = xcb_connect(NULL, NULL);
xcb_screen_t *screen = xcb_setup_roots_iterator(xcb_get_setup(conn)).data;
xcb_xfixes_hide_cursor(conn, screen->root);
xcb_flush(conn);
我想了解为什么 xcb 的代码什么都不做,或者只是在 xcb 中隐藏光标。
UPDxtrace 什么也没给我,它没有看到错误。
但我敢肯定,xcb_xfixes_hide_cursor 中存在错误,因为这段代码给了我非 NULL generic_error:
xcb_void_cookie_t cookie = xcb_xfixes_hide_cursor_checked(conn, screen->root);
xcb_generic_error_t *generic_error = xcb_request_check(conn, cookie);
实际上,它给了我这个错误:
{
"error_code": 1,
"major_code": 138,
"minor_code": 29,
"sequence:": 2,
"full_sequence": 2
}
我使用来自 xcb-util-errors 的 xcb_errors_get_name_for_minor_code 和 xcb_errors_get_name_for_major_code 来了解有关错误的任何信息。它出现在xcb_xfixes_hide_cursor_checked 内部。
【问题讨论】:
-
x11trace在 xcb 版本中显示什么?