2017-09-29 1 views
0

Ich benutze Ubuntu Gnome, gnome Shell-Version 3.24.2. Ich versuche eine Gnome-Shell-Erweiterung zu erstellen und verwende Javascript.Wie erstelle ich eine globale Schlüssel-Bindung in einer gnome-Shell-Erweiterung

Wie erstelle ich in meiner Erweiterung und in Javascript eine globale Schlüsselbindung, die von überall in Gnome erkannt wird? Ich möchte eine Funktion an diese Tastenanbindung binden, so dass, wenn der Benutzer die Tastenkombination drückt, die besagte Funktion ausgeführt wird.

Es gibt praktisch keine Dokumentation zur gnome-Shell-Erweiterung Entwicklung. Also hier zu fragen ist meine einzige Option. Bitte beziehen Sie mich nicht auf die folgende Stackoverflow Frage, da ihre Antwort für Gnome 3.22 ist, und ich hoffe sehr, gibt es einen einfacheren Weg, um eine Schlüssel-Bindung zu erstellen: Gnome Shell Extension Key Binding

Antwort

0

Es gibt eine ziemlich vollständige Antwort hier: How to handle keyboard events in gnome shell extensions?

Sie können die einfachste Art und Weise zu finden, ist Gnome Shell DBus-Schnittstelle zu verwenden, aber mit Verknüpfung Konflikte Umgang und die Signal Rückrufe Handhabung ist unvermeidlich:

Bus Name: org.gnome.Shell -> Pfad:/org/gnome/Shell -> Schnittstelle: org.gnome.Shell

Relevante Methoden:

GrabAccelerator(String accelerator, UInt32 flags) -> (UInt32 action) UngrabAccelerator(UInt32 action) -> (Boolean success)

Signal:

AcceleratorActivate(UInt32, Dict of {String, Variant})

+0

thx für Ihre Antwort. Ich verwende jetzt die Lösung, die unten verbunden ist, aber ich kann es nur für " aa" und nicht für zum Beispiel "" (beachten Sie, es gibt keine letzte char wie "a". Ich bekomme eine Fehlermeldung, die besagt Bindung konnte nicht für diesen Schlüssel hören. wissen Sie, wie ich Teilschlüssel bidning erstellen wie „“ oder „“ mit der Lösung, die ich unten? https://superuser.com/ verknüpft haben Fragen/471606/gnome-shell-extension-key-binding/1182899 # 1182899 –

+0

Soweit ich weiß, ist das nicht möglich, da diese beide Modifier-Keys sind und kein "accelerator-activated" -Ereignis auslösen muss an 'key-press-event' gebunden werden und den keyname aus dem keyval dekodieren, wie in der Antwort beschrieben Ich bin mit oben verlinkt (auch zu der Lösung, mit der Sie oben verlinkt haben, ist ein erneuter Aufruf der Lösung, mit der Sie nicht verlinkt werden wollten ...) –

Verwandte Themen