我正在使用Vala GTK应用程序,该应用程序默认情况下会启动最小化,并且我想绑定特定的关键字快捷方式以将最小化窗口置于最前面。
当应用程序被聚焦时,我能够使用加速器来处理键盘事件,但是当应用程序最小化时,我无法从系统中截获任何按键。
如何使应用监听系统键盘事件,以便能够相应地检测到按键按下?
谢谢。
答案 0 :(得分:2)
我查看了Ideogram的源代码,以了解其如何将Super-e
注册为热键。它看起来基本上是以下内容,包括首先检查是否尚未为该应用程序注册自定义热键。
// These constants are set at class level.
public const string SHORTCUT = "<Super>e";
public const string ID = "com.github.cassidyjames.ideogram";
// Set shortcut within activate method.
CustomShortcutSettings.init ();
bool has_shortcut = false;
foreach (var shortcut in CustomShortcutSettings.list_custom_shortcuts ()) {
if (shortcut.command == ID) {
has_shortcut = true;
return;
}
}
if (!has_shortcut) {
var shortcut = CustomShortcutSettings.create_shortcut ();
if (shortcut != null) {
CustomShortcutSettings.edit_shortcut (shortcut, SHORTCUT);
CustomShortcutSettings.edit_command (shortcut, ID);
}
}
它使用CustomShortcutSettings
类included in its source来处理对系统设置的读取和写入。该类源自另一个名为Clipped的应用程序。