我目前正在将我的一个应用程序从Xlib移植到libxcb,我在查找我在某些时候使用的XInput2扩展上的信息时遇到了一些麻烦 . libxcb中是否有XInput2实现?如果是,我在哪里可以找到文档 .
目前我遇到了这个函数的问题: XIQueryDevice , XISelectEvents . 这些主要是我使用的功能 .
XIQueryDevice
XISelectEvents
也许有人可以为我指出文档,或者为我提供一个很小的例子来开始 .
你基本上有两个选择:
调用常规的 XI* Xinput2函数,并在事件循环中使用泛型事件轮询它们 . 事件循环可能看起来像这样:
XI*
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 .
您可以使用 xcb_input_* xcb-xinput扩展功能 . 根据official documentation:
xcb_input_*
当XCB将其API样式添加到混合中时,它遵循较新的样式并为每个扩展创建了一个“libxcb” - 前缀库 - libxcb-composite,libxcb-render等 . 因为XCB可以生成一个API代码 . 通过扩展协议的XML描述自动扩展,通过简单地将扩展描述添加到xcb-proto包并重建来创建新的扩展API .
看一下xinput.h header .
1 回答
你基本上有两个选择:
选项1
调用常规的
XI*
Xinput2函数,并在事件循环中使用泛型事件轮询它们 . 事件循环可能看起来像这样:另外看看XCB Protocol Extension API .
选项2
您可以使用
xcb_input_*
xcb-xinput扩展功能 . 根据official documentation:看一下xinput.h header .