我目前正在为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)