【问题标题】:Hook key & key combinations from keyboard with Qt 4.6使用 Qt 4.6 从键盘挂钩键和组合键
【发布时间】:2011-02-28 03:18:47
【问题描述】:

假设我有一个无窗口应用程序,它在任务栏上只有一个图标(Windows、Mac OS X 和 Linux)。我希望它能够捕获一些键和组合键,比如 Right Control + Right Shift。键入正确的组合后,它会做一些事情,比如截图。我可以做无窗口应用程序、任务栏上的图标和屏幕截图,但我不知道如何全局监控键盘的组合键。请多多指教。非常感谢任何帮助或提示!提前致谢!

【问题讨论】:

标签: qt4 keyboard events hook qt4.6


【解决方案1】:

系统范围的密钥抓取是一个棘手的主题,但系统范围的密钥挂钩更加棘手。每个 OS/GUI 都有自己的解决方案,至少对于抓取来说是这样。 Qt4 没有公开这样的特性,但是Qt eXTension library 用它的QxtGlobalShortcut 解决了这个问题。这是一个很好的包装:

因此,您可以获取其他应用程序无法获得的显式组合键,即特定的键和修饰符(XGrabKey() 允许更多)。此处不支持按键序列,即连续的按键组合。


键盘挂钩功能更强大,因为它允许查看输入事件(甚至过滤它们)。它不仅被键盘记录器使用,而且是这里的典型关联。

如果您使用 Windows,那么您可以阅读:

在 X11 中要复杂得多。您可能至少要阅读两页:

有一个X Event Interception Extension,但它没有得到维护,最终被删除了。

希望它可以在没有 X11 基础架构的帮助下完成。在 Linux 2.6 内核中有一个“事件接口”,称为evdev,可以在这里利用。详细信息可以在logkeys Linux keylogger的源代码中找到。它也可以通过类似于 evdev 的效果来完成。查看我的 PoC 项目: kaos - 关键活动屏幕显示。

而且我没有 Mac,所以没有进一步的参考。 ;)

【讨论】:

  • +1 谢谢。我没有注意到你的回答。我在 Mac OS X 中使用 libqxt 没有成功。
  • 正如我所说,我不是 Mac 用户,所以在这里我无法为您提供帮助。对不起。
  • 有趣,Win32 Hooks 现在是带有Content Removed 的空白页面。是我的错吗? ;) 我会更新上面的答案。别担心,有一个Wayback Machinehttp://web.archive.org/web/20080510093117/http://msdn.microsoft.com/en-us/library/ms997537.aspx) - Kyle Marsh 的 Win32 Hooks
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多