使用Qt 4.6键盘锁定键和键组合

Vie*_*iet 3 keyboard events hook qt4 qt4.6

假设我有一个没有窗口的应用程序,它在任务栏上只有一个图标(Windows,Mac OS X和Linux).我想要它捕获一些键和键组合,让我们说正确的控制+右移.在键入正确的组合后,它会做一些事情,比如截屏.我可以在任务栏上执行无窗口应用程序,图标和屏幕截图,但我不知道如何全局监控键盘组合.请提出建议.非常感谢任何帮助或提示!提前致谢!

prz*_*moc 8

系统范围的密钥抓取是一个棘手的主题,但系统范围的密钥挂钩甚至更棘手.每个OS/GUI都有自己的解决方案,至少是为了抓取.Qt4的不公开这样的特征,但Qt的扩展库解决其问题QxtGlobalShortcut.这是一个很好的包装:

因此,您可以获取显式键组合,即特定键和修饰符(XGrabKey()允许更多一点),没有其他应用程序将获得.这里不支持密钥序列,即连续密钥组合.


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

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

在X11中,它要复杂得多.您可能需要阅读至少两页:

有一个X事件拦截扩展,但它没有维护,最终被删除.

希望它可以在没有X11基础设施的帮助下完成.在Linux 2.6内核中有"事件接口",称为evdev,可以在这里使用.详细信息可以在logkey Linux keylogger的源代码中找到.它也可以用类似于evdev的效果来完成.请参阅我的PoC项目: kaos - 键活动屏幕显示.

我没有Mac,所以没有进一步的参考.;)