Was ist der einfachste Weg, eine Tastenkombination (z. B. <Super>+A
) (global) an eine Funktion in einer Gnome-Shell-Erweiterung zu binden ?
Bei der Überprüfung einiger Erweiterungen stieß ich auf den folgenden Code:
global.display.add_keybinding('random-name',
new Gio.Settings({schema: 'org.gnome.shell.keybindings'}),
Meta.KeyBindingFlags.NONE,
function() { /* ... some code */ });
Ich verstehe, dass die Schlüsselkombination durch den Schemaparameter angegeben wird und dass es möglich ist, eine XML-Datei zu erstellen, die die Kombination beschreibt. Gibt es einen einfacheren Weg, dies zu tun?
linux
keyboard-shortcuts
hotkeys
shell-extensions
gnome-shell
Mark Jones
quelle
quelle
Antworten:
TL; DR
Hier ist eine Klasse:
Und so benutzt du es:
Sie benötigen Importe:
So hören Sie auf zu hören:
Erläuterung
Ich könnte furchtbar falsch liegen, aber das habe ich in den letzten Tagen herausgefunden.
Zuallererst ist es Mutter, die für das Abhören von Hotkeys verantwortlich ist. Mutter ist ein Framework zum Erstellen von Fenstermanagern, es ist selbst kein Fenstermanager. Gnome Shell hat eine in JS geschriebene Klasse namens "Window Manager" - dies ist der echte Window Manager, der Mutter intern verwendet, um alle Low-Level-Aufgaben zu erledigen. Mutter hat ein Objekt MetaDisplay. Mit diesem Objekt fordern Sie das Abhören eines Hotkeys an. Aber! Mutter verlangt jedoch von Window Manager, dass die Verwendung dieses Hotkeys genehmigt wird. Was passiert also, wenn der Hotkey gedrückt wird? - MetaDisplay generiert das Ereignis 'Filter-Keybinding'. - Window Manager in Gnome Shell prüft, ob dieser Hotkey verarbeitet werden darf. - Window Manager gibt den entsprechenden Wert an MetaDisplay zurück. - Wenn dieser Hotkey verarbeitet werden darf, generiert MetaDisplay das Ereignis "Beschleuniger aktiviert".
quelle
gconf-editor
könnte tun, was Sie wollen: Linkquelle