Jaki jest najprostszy sposób (globalnego) powiązania kombinacji klawiszy (np. <Super>+A
) Z funkcją w rozszerzeniu powłoki gnome?
Sprawdzając kilka rozszerzeń, natrafiłem na następujący kod:
global.display.add_keybinding('random-name',
new Gio.Settings({schema: 'org.gnome.shell.keybindings'}),
Meta.KeyBindingFlags.NONE,
function() { /* ... some code */ });
Rozumiem, że kombinacja klawiszy jest określona przez parametr schematu i że można utworzyć plik XML opisujący kombinację. Czy istnieje prostszy sposób na zrobienie tego?
linux
keyboard-shortcuts
hotkeys
shell-extensions
gnome-shell
Mark Jones
źródło
źródło
Odpowiedzi:
TL; DR
Oto klasa:
I tak to wykorzystujesz:
Będziesz potrzebował importu:
Aby przestać słuchać:
Wyjaśnienie
Mógłbym się bardzo mylić, ale o tym dowiedziałem się w ciągu ostatnich kilku dni.
Przede wszystkim to Mutter jest odpowiedzialny za słuchanie skrótów klawiszowych. Mutter jest strukturą do tworzenia menedżerów okien, nie jest nim sam. Gnome Shell ma klasę napisaną w JS o nazwie „Window Manager” - jest to prawdziwy Window Manager, który używa Mutter wewnętrznie do robienia wszystkich rzeczy na niskim poziomie. Mutter ma obiekt MetaDisplay. Jest to obiekt, którego używasz do żądania nasłuchiwania skrótu. Ale! Ale Mutter będzie wymagał Menedżera okien, aby zatwierdził użycie tego skrótu. Co dzieje się po naciśnięciu klawisza skrótu? - MetaDisplay generuje zdarzenie „kluczowanie filtrów”. - Menedżer okien w Gnome Shell sprawdza, czy ten skrót klawiszowy może zostać przetworzony. - Menedżer okien zwraca odpowiednią wartość do MetaDisplay - Jeśli przetwarzanie tego skrótu jest dozwolone, MetaDisplay generuje zdarzenie „aktywowane akceleratorem”
źródło
gconf-editor
może zrobić, co chcesz: linkźródło