【问题标题】:Hook and block globally mouse in X11在 X11 中全局挂钩和阻止鼠标
【发布时间】:2016-12-09 22:03:05
【问题描述】:

如果两次点击之间的延迟小于设置,我需要全局挂钩鼠标点击并阻止最后一次点击。

我使用WM_MOUSE_LL 钩子为 Windows 编写了它。 我无法为我找到任何解决方案。甚至可以在 X11 中全局阻止鼠标点击?

Windows full code

【问题讨论】:

  • 你想做什么?只是阻止“快速”双击?
  • @I-V ,是的,如果我们彼此理解正确的话
  • 我实际上的意思是,如果您尝试阻止在您的代码正在运行的同一台计算机上单击(或通过 rdp 在远程计算机上阻止它)?
  • @I-V 同一台机器。

标签: c++ linux hook mouse x11


【解决方案1】:

据我所知,标准 X11 协议不允许这样做。 XInput 2.0 扩展可能,但我对此表示怀疑。虽然 Windows 假设每个程序都侦听一个事件队列,以便程序可以拦截事件并防止它被发送到队列中的其他侦听器,但每个 X11 客户端都有它自己的独立队列和注册对事件感兴趣的所有客户端在他们的队列中接收它的独立副本。这意味着在正常情况下,错误的程序不可能阻止其他程序运行;但这也意味着,当客户端必须阻止其他客户端时,它必须执行服务器抓取以防止服务器为任何其他客户端处理事件。

这意味着你可以

  • 使用 X 服务器代理(不会很难,但会很慢)

  • 在输入设备级别执行此操作。 /dev/input/event<n> 给你输入事件。您可以读取那里的按键并决定它们是否应该进一步传播被消耗。不幸的是,没有真正的文档,但是头文件linux/include/input.h 是非常自我解释的。

【讨论】:

    猜你喜欢
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    相关资源
    最近更新 更多