小编Ran*_*ser的帖子

XCB获取所有窗口X.Org的事件

我目前正在为Linux进行延迟测试.为了最大限度地减少副作用,我尝试编写一个C程序,它直接使用XCB访问X-Server.因为没有任何C语言经验,只有Java,也没有XCB,我遇到了一些困难.

应用程序应该做的一切就是显示一个白框,如果在任何时候(窗口外)按下鼠标按钮,它应该瞬间变为黑色.测试应用程序不一定非常漂亮或安全,但只能快速反应.它仅用于这一项测试(请不要判断我的糟糕风格;-)).

鼠标不能在同一窗口中,因为还有另一个独立的应用程序,它也需要处理事件(测量延迟的事件).


在阅读XCB教程后,我修改了示例代码以打开窗口并在窗口内记录鼠标单击:

#include <stdio.h>
#include <xcb/xcb.h>

main ()
{
    /* Open the connection to the X server */
    xcb_connection_t *connection = xcb_connect (NULL, NULL);

    /* Get the first screen */
    xcb_screen_t *screen = xcb_setup_roots_iterator (xcb_get_setup (connection)).data;

    /* Create black (foreground) graphic context */
    xcb_drawable_t  window;
    uint32_t        mask;
    uint32_t        values[2];

    /* Create a window */
    window = xcb_generate_id (connection);

    mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;
    values[0] = screen->white_pixel;
    values[1] = XCB_EVENT_MASK_BUTTON_PRESS;

    xcb_create_window (connection, XCB_COPY_FROM_PARENT, window, screen->root, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

c linux x11 event-handling xcb

4
推荐指数
1
解决办法
2745
查看次数

标签 统计

c ×1

event-handling ×1

linux ×1

x11 ×1

xcb ×1