我的问题与此类似:http://forum.winehq.org/viewtopic.php?t=14451
Gnome似乎为Alt-F2调用了XGrabKey()
,但它也是我程序中的热键。如何使我的程序接收此事件而不是Gnome shell,当它在前台时?
如果我致电XGrabKey()
,它将返回BadAccess
。如果我拨打XGrabKeyboard()
,那么我的程序将会压制所有其他全局热键。
答案 0 :(得分:2)
这是不可能的。你没有收到这个活动。根窗口接收按键并由窗口管理器拥有。窗口管理器然后委托按键。全局快捷键优先。
一个邪恶的黑客可能是在程序运行时改变Gnome的全局快捷方式。用户会烧毁你的房子。
另一种选择是,如你所提到的那样抓住键盘。然后您将收到事件而不是根窗口。你可以通过XTest扩展来将你不感兴趣的按键(其他全局快捷键)传递给根窗口。用户会烧毁你的房子。
如果您更改快捷方式,用户可能会非常高兴。