繁体   English   中英

从Xlib转换为xcb

[英]Convert from Xlib to xcb

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

目前我遇到了这个函数的问题: XIQueryDeviceXISelectEvents 这些主要是我使用的功能。

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

你基本上有两个选择:

选项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协议扩展API

选项2

您可以使用xcb_input_* xcb-xinput扩展函数。 根据官方文件

当XCB将其API样式添加到混合中时,它遵循较新的样式并为每个扩展创建了一个“libxcb” - 前缀库 - libxcb-composite,libxcb-render等。因为XCB可以为扩展生成API代码通过扩展协议的XML描述自动创建新扩展API,只需将扩展描述添加到xcb-proto包并重建即可。

看看xinput.h头文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM