Как перехватить нажатие клавиши системы в приложении GTK - PullRequest
0 голосов
/ 20 января 2019

Я работаю над приложением Vala GTK, которое по умолчанию запускается свернутым, и я хочу привязать ярлык к определенному ключевому слову, чтобы вывести свернутое окно на передний план.

Я могу обрабатывать события клавиатуры с помощью ускорителей, когда приложение сфокусировано, но я не могу перехватить нажатие клавиш в системе, когда приложение свернуто.

Как сделать так, чтобы приложение прослушивало события системной клавиатуры, чтобы я мог соответствующим образом определять нажатие клавиши?

Спасибо.

1 Ответ

0 голосов
/ 21 января 2019

Я посмотрел на источник для Идеограмма , чтобы увидеть, как он регистрирует 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 класс , включенный в его источник для обработки чтения и записи в системных настройках.Класс возник в другом приложении под названием Clipped .

...