- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试监听根窗口上的触摸事件(TOUCH_BEGIN、TOUCH_UPDATE、TOUCH_END 和 TOUCH_OWNERSHIP)。
触摸事件没有直接集成到 XCB 中,所以我必须使用输入扩展 (libxcb-xinput)。
我已经设法为来自输入扩展的事件设置了一个事件监听器,但我不知道如何注册我想监听的事件。
我尝试使用 xcb_input_xi_select_events(),但是该函数采用 xcb_input_event_mask_t 类型的参数,而包含事件掩码的枚举类型为 xcb_input_xi_event_mask_t 并且没有明显的方法来转换它们。
出于这个原因,我认为 xcb_input_xi_select_events() 是错误的函数,但我不知道应该使用哪个函数。
我的非工作代码目前看起来像这样:
xcb_input_event_mask_t mask[] = {
XCB_INPUT_XI_EVENT_MASK_TOUCH_BEGIN
| XCB_INPUT_XI_EVENT_MASK_TOUCH_END
| XCB_INPUT_XI_EVENT_MASK_TOUCH_UPDATE
| XCB_INPUT_XI_EVENT_MASK_TOUCH_OWNERSHIP
};
xcb_input_xi_select_events(dpy, root, 4, mask);
核心在编译时抛出“大整数隐式截断为无符号类型”警告,在运行时仅抛出“请求失败:(null),(null):0x000000D5”错误。
(我对 C 尤其是 XCB 很陌生,所以请原谅任何明显的错误)
最佳答案
需要xcb_input_event_mask_t
和xcb_input_xi_event_mask_t
一起使用,方法如下:
struct {
xcb_input_event_mask_t head; // describes the subsequent xcb_input_xi_event_mask_t (or an array thereof)
xcb_input_xi_event_mask_t mask;
} mask;
mask.head.deviceid = XCB_INPUT_DEVICE_ALL;
mask.head.mask_len = sizeof(mask.mask) / sizeof(uint32_t);
mask.mask = XCB_INPUT_XI_EVENT_MASK_TOUCH_BEGIN
| XCB_INPUT_XI_EVENT_MASK_TOUCH_END
| XCB_INPUT_XI_EVENT_MASK_TOUCH_UPDATE
| XCB_INPUT_XI_EVENT_MASK_TOUCH_OWNERSHIP;
xcb_input_xi_select_events(dpy, root, 1, &mask.head);
免责声明:我从未使用过这个。我在网上找到了一个使用示例 here .我试图根据 xcb_input_xi_select_events
的来源验证此用法 here但它的代码咒骂删除不可读。我完全不知道人们应该如何使用这个库。
关于c - 如何使用 libxcb-xinput 注册事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39641675/
我有一个 G700 鼠标连接到我的电脑。这个鼠标在 Linux (Ubuntu) 中的问题是灵敏度非常高。我也不喜欢鼠标加速,所以我制作了一个脚本来关闭它。脚本看起来像这样 #!/bin/bash #
XInput 库是否支持处理来自连接的键盘和鼠标的事件? 我知道它支持处理来自 xInput 兼容 Controller 的事件,但不清楚是否还包括键盘和鼠标输入处理。我在 MSDN XInput 页
嗯,问题是我有一个在 MATE 上完美运行的 Abyssus Razer,但是 在 Debian、Elementary、OpenSUSE 和其他平台上,默认 设置 super 慢。 我用 解决了这个问
我正在尝试遵循 this 的建议问题,使用 xinput为我的鼠标滚轮启用自然滚动的工具。 我通过 $ xinput list 列出我的输入设备并获得以下信息: $ xinput list ⎡ Vir
Windows 事件循环通常如下所示: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
如何检查键盘(例如)是否没有挂起? 也许可以使用 pselect() 向设备发送一些内容并检查响应? 我正在使用 xinput 扩展 (1,2),它们是否为此类任务提供一些工具? 最佳答案 我目前正在
我刚刚发现您可以使用 xinput 来嗅探在 X 上运行的应用程序的击键 除了将数据输出到现在具有焦点的任何应用之外,是否有类似的东西? 我想实现类似自动完成或智能建议程序的东西,它可以跨应用程序监听
我正在将一个使用 Xbox Controller 的应用程序移植到 Linux。在 Windows 上,它基本上只是使用 XInputGetState() 来读取 Controller 的状态,所以我
运行自定义键盘和触摸板修改,我想激活 2 手指滚动使用: xinput --set-prop id "Synaptics Two-Finger Scrolling" 1 1 其中id是使用找到的设备i
我正在尝试监听根窗口上的触摸事件(TOUCH_BEGIN、TOUCH_UPDATE、TOUCH_END 和 TOUCH_OWNERSHIP)。 触摸事件没有直接集成到 XCB 中,所以我必须使用输入扩
我正在尝试通过 .bat 文件将此 main.cpp 文件编译为带有 MinGW 的 DLL。我在 Windows 上,顺便说一句,不是 Linux。 编译.bat mingw\bin\g++ "sr
我想使用 Java 模拟 XInput 游戏 handle ( Controller )。我在网上搜索过,但找不到真正解决我的问题的方法。是否可以使用 Java 模拟 XInput Controlle
我对 C++ 编程和 Qt 比较陌生,所以这个问题可能是我对相互依赖性的误解。我正在尝试在我的源代码中使用 Xinput.h 文件,它是 DirectX SDK with Qt creator 的一部
我正在使用 Xinput API,但我在处理以下代码时遇到了问题。我的假设是 R/LX 和 R/LY 的定义应该随着一次又一次的调用而动态变化,但是拇指杆位置的值被任意设置为 -13108,所以 X
我在尝试让 Debian 7 系统识别我的触摸屏时遇到了严重的麻烦。它在 dmesg 中显示它在那里,如下所示: [2.519893] USB 1-4:产品:Atmel maXTouch 数字化仪 [
我试图将 xinput 的输出流式传输到我的 python 程序中,但是我的程序只是等待并保持空白。我认为这可能与缓冲有关,但我不能说。运行 xinput test 15 给我鼠标移动,但这样做不会打
当我运行以下命令时,它会返回我当前鼠标的信息:- $ xinput --list | grep "Mouse" ⎜ ↳ A4Tech USB Mouse
我已经通过 Arduino IDE 的串行连接在我的电路板上成功运行了按钮和模拟摇杆。如何让这些数据与 Xinput 一起使用? 除此之外,我还有自己的仿真软件可以在 Xinput 中运行。我只需要获
我正在尝试连接 XBOX 360 Controller 以获取程序输入,但我的程序永远不会注册连接的 Controller -- 我已确认 Controller 已连接。 我正在运行 Windows,
大家好, 我是 c++ 的新手,我一直在努力让它工作的时间比我承认的要长。所以我放弃了以下引用并让 Controller 在控制台应用程序中工作。 xbox360 controller input w
我是一名优秀的程序员,十分优秀!