目前,我正在将我的应用程序之一从Xlib移植到libxcb,并且在某些时候找不到有关XInput2扩展的信息时遇到了一些麻烦。 libxcb中是否有XInput2实现?如果是,我在哪里可以找到文档。
目前,我在使用此功能方面遇到麻烦:XIQueryDevice
,XISelectEvents
。这些主要是我使用的功能。
也许有人可以为我指出文档,或者为我提供一个很小的示例以开始使用。
最佳答案
您基本上有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。