XCB 事件循环没有得到任何事件
XCB event loop not getting any events
我正在 Firefox 中制作一个插件,所以我有一个 ChromeWorker - 这是一个特权 WebWorker。这只是主线程之外的一个线程。
这里我没有代码,但是这个(修改后看起来不是 js-ctypes [这是插件的语言])
启动时我运行这段代码,conn
是一个全局变量:
conn = xcb_connect(null, null);
然后我 运行 以 200 毫秒为间隔:
evt = xcb_poll_for_event(conn);
console.log('evt:', evt);
if (!evt.isNull()) {
console.log('good got an event!!');
ostypes.API('free')(evt);
}
但是 evt
总是 null
,我从来没有收到任何事件。我的目标是获取系统上的所有事件。
有谁知道什么会导致如此简单的事情无法工作?
我试过了
xcb_change_window_attributes (conn, screens.data->root, XCB_CW_EVENT_MASK, values);
但这并没有解决问题:(
我让它工作的唯一方法是 xcb_create_window
xcb_map_window
但是我只得到在这个创建的 window.
中发生的事件
您不只是通过打开连接神奇地获得所有事件。只有很少的消息任何客户端会收到,例如客户端消息,大多数其他消息只会发送给客户端,如果它明确注册自己接收它们。
是的,这意味着你必须在每个 window 上注册它们,这涉及爬树和监听 windows 正在创建、映射、取消映射和销毁以及注册他们也是。
不过,我会重新考虑是否
My goal is to get all events on the system.
不是 A-B 问题。 为什么你"need"所有活动?你到底想做什么?
我正在 Firefox 中制作一个插件,所以我有一个 ChromeWorker - 这是一个特权 WebWorker。这只是主线程之外的一个线程。
这里我没有代码,但是这个(修改后看起来不是 js-ctypes [这是插件的语言])
启动时我运行这段代码,conn
是一个全局变量:
conn = xcb_connect(null, null);
然后我 运行 以 200 毫秒为间隔:
evt = xcb_poll_for_event(conn);
console.log('evt:', evt);
if (!evt.isNull()) {
console.log('good got an event!!');
ostypes.API('free')(evt);
}
但是 evt
总是 null
,我从来没有收到任何事件。我的目标是获取系统上的所有事件。
有谁知道什么会导致如此简单的事情无法工作?
我试过了
xcb_change_window_attributes (conn, screens.data->root, XCB_CW_EVENT_MASK, values);
但这并没有解决问题:(
我让它工作的唯一方法是 xcb_create_window
xcb_map_window
但是我只得到在这个创建的 window.
您不只是通过打开连接神奇地获得所有事件。只有很少的消息任何客户端会收到,例如客户端消息,大多数其他消息只会发送给客户端,如果它明确注册自己接收它们。
是的,这意味着你必须在每个 window 上注册它们,这涉及爬树和监听 windows 正在创建、映射、取消映射和销毁以及注册他们也是。
不过,我会重新考虑是否
My goal is to get all events on the system.
不是 A-B 问题。 为什么你"need"所有活动?你到底想做什么?