2017-09-29 9 views
0

J'utilise Ubuntu Gnome, gnome shell version 3.24.2. J'essaye de créer une extension de gnome, et j'utilise Javascript.Comment créer une liaison de clé globale dans une extension gnome-shell

Dans mon extension et en Javascript, comment créer une liaison de clé globale reconnue depuis n'importe quel endroit de Gnome? Je veux lier une fonction à cette liaison de touche de sorte que lorsque l'utilisateur appuie sur la combinaison de touches, la fonction est exécutée.

Il n'existe pratiquement aucune documentation sur le développement d'extension gnome-shell. Donc, demander ici est ma seule option. S'il vous plaît ne me réfère pas à la question stackoverflow suivante, étant donné que sa réponse est pour Gnome 3.22 et j'espère sincèrement qu'il ya un moyen plus facile de créer une liaison clé: Gnome Shell Extension Key Binding

Répondre

0

Il une réponse assez complète ici: How to handle keyboard events in gnome shell extensions?

Vous trouverez peut-être le plus simple est d'utiliser l'interface DBus de Gnome Shell, mais la gestion des conflits de raccourcis et la manipulation des callbacks de signal est inévitable:

Nom Bus: org.gnome.Shell -> chemin:/org/gnome/Shell -> Interface: org.gnome.Shell

Méthodes pertinentes:

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

signal:

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

+0

thx pour votre réponse. J'utilise maintenant la solution ci-dessous, mais je ne peux l'obtenir que pour " a" et non par exemple "" (notez qu'il n'y a pas de dernier caractère comme "a". n'a pas pu écouter cette liaison clé. savez-vous comment je peux créer bidning clé partielle comme « » ou « » à l'aide de la solution que j'ai lien ci-dessous ? https://superuser.com/ questions/471606/gnome-shell-extension-key-binding/1182899 # 1182899 –

+0

Autant que je sache, ce n'est pas possible, puisque ce sont les deux touches de modification et ne déclenchent pas un événement 'accelerator-activated'. doivent se lier à 'key-press-event' et décoder le nom de clé du keyval comme décrit dans la réponse Je suis lié à ci-dessus (aussi à la solution que vous avez liée à ci-dessus est un repost de la solution que vous avez demandé de ne pas être lié à ...) –