2016-07-22 16 views
3

Ich versuche, meine erste Shell-Erweiterung und zu schreiben - wie jede Blog-Post gibt - Ich kämpfe auch mit dem Mangel an up-to-date Dokumentation ...Wie Tastatureingaben in Gnome Shell greifen

und zwar versuche ich, alle Tastenanschläge auf der Tastatur zu greifen, und - im Code suchte online und alte Mailing-Liste Nachrichten - scheint es, dass bis vor kurzem die richtige Art und Weise zu tun war:

const Shell = imports.gi.Shell; 
global.set_stage_input_mode(Shell.StageInputMode.FULLSCREEN); 
global.stage.connect('key-press-event', myCallbackHere); 

dies gilt jedoch nicht scheinen arbeiten. Sowohl die Funktion set_stage_input_mode als auch die Eigenschaft StageInputMode scheinen verschwunden zu sein, zumindest auf meinem Fedora 24 mit GTK 3.20.6.

Was ist der richtige, aktuelle Weg, um meine Erweiterung alle vom Benutzer durchgeführten Tastenanschläge zu erfassen?

Antwort

4

Ich glaube nicht, dass es im Moment einen richtigen Weg gibt, dies zu tun. Du könntest etwas zusammen hacken, das entweder X-spezifisch oder Wayland-spezifisch ist, oder vielleicht könntest du Gnome Shell patchen, um diese Informationen bereitzustellen.

Für Wayland könnten Sie bei https://github.com/MaartenBaert/wayland-keylogger beginnen und für X könnten Sie beginnen, indem Sie die Schlüsselerkennung von autokey wiederverwenden (https://github.com/autokey/autokey/blob/master/src/lib/interface.py).

Ich kann vermuten, dass dies nicht die Antwort ist, auf die Sie gehofft hatten, weil Sie auf IRC geschrieben haben, dass Sie einen Ersatz für autokey schreiben möchten. Um Eingaben von einem externen Programm zu erhalten, können Sie GLib.spawn_async_with_pipes (https://people.gnome.org/~gcampagna/docs/GLib-2.0/GLib.spawn_async_with_pipes.html) verwenden.

Ich schrieb vor einiger Zeit einige Shell-Erweiterung Code, um abzufragen und grob protokollieren, was passiert (denken Sie an einen alphanumerischen Schlüssel vs Linke Strg vs Return-Taste). Sie können diesen Code hier ansehen: https://gist.github.com/daniellandau/7679741bf8bbc5c345591593ca05e9f6. Es ist nicht robust genug, um irgendeine Makroerweiterung durchzuführen, daher würde ich empfehlen, den Erkennungscode aus der Autokey-Funktion wiederzuverwenden.

Im Allgemeinen sind die Dokumente unter https://people.gnome.org/~gcampagna/docs der Ort, um API-Referenzen für Bibliotheken zu finden, die von Gnome Shell-Erweiterungen verwendet werden können. Ich hoffe, Sie kommen mit Ihrem Projekt voran. Es ist frustrierend, mit dem Schreiben von Erweiterungen zu beginnen, aber letztendlich macht es sehr viel Spaß, wenn man einmal den Dreh raus hat.

+0

Hey! Danke dafür. Ich werde die Links überprüfen, sobald ich etwas Zeit für persönliche Projekte habe, denn jetzt danke ich dafür. Ich werde darauf zurückkommen und Fragen beantworten. :) – mac