【问题标题】:Override global hotkey Alt-F2 in gnome when my program is in foreground当我的程序在前台时,覆盖 gnome 中的全局热键 Alt-F2
【发布时间】:2014-03-18 18:25:11
【问题描述】:

我的问题类似这样:http://forum.winehq.org/viewtopic.php?t=14451

Gnome 似乎为 Alt-F2 调用 XGrabKey(),但它也是我程序中的热键。如何让我的程序在前台接收此事件而不是 Gnome shell?

如果我调用XGrabKey(),它将返回BadAccess。如果我调用XGrabKeyboard(),那么我的程序将抑制所有其他全局热键。

【问题讨论】:

  • 即使可能,我也建议不要这样做。 Alt+F2 是一个非常常见的热键,不仅在 Gnome 中使用,而且在许多其他桌面环境中用于运行命令/程序。肯定还有其他人更适合这项任务吗?

标签: linux x11


【解决方案1】:

这是不可能的。您没有收到该事件。根窗口接收按键并归窗口管理器所有。然后窗口管理器委托按键。全局快捷方式优先。

一个邪恶的黑客可能是在程序运行时改变 Gnome 的全局快捷方式。用户会为此烧毁你的房子。

另一种选择是,正如您提到的抓住键盘。然后您会收到事件而不是根窗口。您可以通过 XTest 扩展将您不感兴趣的按键(其他全局快捷方式)传递到根窗口。用户会为此烧毁你的房子。

如果您更改快捷方式,用户可能会很高兴。

【讨论】:

  • 只有在最顶层的应用程序尚未处理的情况下,是否可以通过根窗口处理此类按键事件?
  • 你能澄清你的问题吗?从谁的角度来看可能?窗口管理器?最顶层的应用程序?
猜你喜欢
  • 2010-09-23
  • 2023-03-31
  • 2012-08-02
  • 2010-09-17
  • 1970-01-01
  • 2016-04-05
  • 2014-08-27
  • 1970-01-01
  • 2010-09-16
相关资源
最近更新 更多