如何为我的linux游戏禁用gnome窗口管理器键盘快捷键?

时间:2015-07-30 09:15:17

标签: linux keyboard-shortcuts game-engine gnome

我正在将游戏移植到linux。这是一个复杂的游戏,有很多键盘和鼠标快捷键,可以更好地控制。其中一个快捷方式使用alt和鼠标右键单击,这与一些窗口管理器功能冲突 - 即某些机器上出现上下文菜单。我已经尝试通过收集“gsettings get org.gnome.desktop.wm.preferences mouse-button-modifier”的输出并在检测到冲突时更改它来禁用它,但这非常hacky并且仅适用于少数几个案例。有没有人知道是否有更好,更可靠的方法 - 最好是在我的游戏窗口处于活动状态时禁用所有快捷方式。

1 个答案:

答案 0 :(得分:0)

您可以使用某些X Server代码来抓取键盘并将其锁定到应用程序窗口。这将阻止任何其他东西拦截键盘。例如,请参阅:https://tronche.com/gui/x/xlib/input/XGrabKeyboard.html

采取像这样的重手方法的缺点是它打破了诸如能够从全屏窗口中移出Alt + Tab的事情。

LWN有一篇文章介绍了Valve为了让Steam在Linux上运行所做的所有技巧(http://lwn.net/Articles/611969/)Valve在某些地方使用了LD_PRELOAD。他们必须实现一个特殊的覆盖,以允许像alt-tab这样的东西工作。您可以查看Steam客户端的源代码,了解他们是如何做到的。