目前,我正在将我的应用程序之一从Xlib移植到libxcb,并且在某些时候找不到有关XInput2扩展的信息时遇到了一些麻烦。 libxcb中是否有XInput2实现?如果是,我在哪里可以找到文档。

目前,我在使用此功能方面遇到麻烦:XIQueryDeviceXISelectEvents。这些主要是我使用的功能。

也许有人可以为我指出文档,或者为我提供一个很小的示例以开始使用。

最佳答案

您基本上有2个选择:

选项1

调用常规的XI* Xinput2函数,并在具有常规事件的事件循环中轮询它们。事件循环可能类似于以下内容:

xcb_generic_event_t *event;
while ((event = xcb_wait_for_event(connection))) {
    xcb_ge_generic_event_t *generic_event = (xcb_ge_generic_event_t*)event;
    if (generic_event->response_type == XCB_GE_GENERIC && generic_event->extension == xinput_ext_opcode && generic_event->event_type == XI_RawMotion) {
        // Handle motion
        continue;
    }
}

还要看看XCB Protocol Extension API

选项2

您可以使用xcb_input_* xcb-xinput扩展功能。根据official documentation:



看看 xinput.h header

10-05 18:48