当窗口没有聚焦时,如何抓住“按键事件”?

时间:2010-09-14 14:50:40

标签: c gtk

我正在使用gtk编写程序。该程序所做的是监视用户输入的击键并播放声音。我的问题是,当窗口没有聚焦时,如何捕捉按键事件?我打算让我的程序保留在托盘图标中,所以我想知道如何从那里抓住任何按键事件。感谢

编辑: 我终于找到了一种方法 - XTest扩展,我从程序'xmacro'中找到了一段代码片段。 你可以在这里看到我的实现: http://github.com/Aitjcize/Qwertickle/blob/master/src/qwertickle.c

顺便说一下,它还有很多车,也许有人可以帮帮我吗? :)

2 个答案:

答案 0 :(得分:3)

Matt Joiner说,

  

这种事情在Linux中并不那么容易。

并且不幸的是GTK +无法做到这种魔力。

你应该看看XEvIE - X事件拦截扩展 - 这将使你的工作更轻松。

  

XEvIE是一个X扩展,提供允许用户拦截键盘/鼠标事件的功能。

根据{{​​3}}的建议

,另一种方法是使用X11中的this guy / XGrabKey()。我相信XUngrabKey()会说明如何正确使用它。

答案 1 :(得分:0)

有一个名为xbindkeys的程序可以绑定X中的鼠标和键盘键来启动shell命令。您可以使用它来向您的程序发送命令,或查看源代码以查看其完成情况:xbindkeys

你也可以直接打开/ dev / input / eventX和read()从它到一个input_event结构,但这有点讨厌,因为你需要拥有适当的权限(通常是root,或用chmod更改)< / p>