Как добавить событие или другой метод для прослушивания нажатия клавиш на расширении оболочки gnome? например показать диалог с каждым нажатием клавиши с нажатой клавишей?
Я не могу найти ни одного примера. В документации упоминается модуль keyboard
, но с этим обычным поиском имен сложно.
Class explanation
...
- General utils
- Keyboard: Manage and define the keyboard events, etc. for gnome shell.
(читайте выше как цитату из документов, связанных выше. он оформлен как код, потому что стиль цитаты по какой-то причине не сохраняет разрывы строк на этом сайте)
Я нашел некоторые расширения, используя следующий код для результатов, похожих на то, что я прошу, но я снова не нашел документы для конкретных классов и методов:
workViewInjections['_init'] = injectToFunction(WorkspacesView.WorkspacesView.prototype, '_init', function(width, height, x, y, workspaces) {
this._pickWorkspace = false;
this._pickWindow = false;
this._keyPressEventId = global.stage.connect('key-press-event', Lang.bind(this, this._onKeyPress));
this._keyReleaseEventId = global.stage.connect('key-release-event', Lang.bind(this, this._onKeyRelease));
connectedSignals.push({ obj: global.stage, id: this._keyPressEventId });
connectedSignals.push({ obj: global.stage, id: this._keyReleaseEventId });
});
Кроме того, ни один класс с именем keyboard
не существует...
-
edit1: больше поиска... я думаю, мне, возможно, придется использовать Clutter
api. но опять же, мало примеров или документации для этого. Дальше я пошел это
edit2: больше поиска. глядя на исходный код оболочки gnome, на основном дереве ui, я думаю, что ответ заключается в использовании ограниченного упоминаемого объекта global
, который доступен для кода расширения. например.
global.connect('key-press-event', function(if, i, know, the, signature){} );