我目前正在将我的一个应用程序从 Xlib 移植到 libxcb,但在查找有关我有时使用的 XInput2 扩展的信息时遇到了一些麻烦。 libxcb 中有 XInput2 实现吗?如果是的话,在哪里可以找到文档。
目前我在使用此功能时遇到问题:XIQueryDevice
, XISelectEvents
。我主要使用的功能就是这些。
也许有人可以为我指出文档或为我提供一个非常小的示例来开始。
你基本上有两个选择:
Option 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 https://xcb.freedesktop.org/ProtocolExtensionApi/.
Option 2
您可以使用xcb_input_*
xcb-xinput 扩展功能。根据官方文档 https://www.x.org/wiki/guide/xlib-and-xcb/#index4h2:
当 XCB 将其 API 风格添加到混合中时,它遵循较新的风格并为每个扩展创建了一个以“libxcb”为前缀的库——libxcb-composite、libxcb-render 等。由于 XCB 可以为扩展生成 API 代码自动从扩展协议的 XML 描述中创建新的扩展 API,只需将扩展描述添加到 xcb-proto 包并重建即可。
看看xinput.h header https://xcb.freedesktop.org/manual/xinput_8h_source.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)