Как я могу найти определенную пользовательскую привязку клавиш через ее имя?

я могу получить список пользовательских привязок клавиш:

gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings

которые возвращают что-то как:

['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/']

Но я хочу знать целевую привязку клавиш через ее имя? т.е. shutter -> <primary><shift><alt>a

Я выяснил одно простое, но не удобный подход:

gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-  
keybinding:/org/gnome/settin‌​gs-daemon/plugins/media-keys/custom-  
keybindings/custom0/ name
// return the name like `shutter`


gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-  
keybinding:/org/gnome/settin‌​gs-daemon/plugins/media-keys/custom-  
keybindings/custom0/ binding
// return the binding like `<primary><shift><alt>a`

Какой-либо парень знает другие изящные решения?

1
задан 2 July 2016 в 01:09

1 ответ

Маленький сценарий для нахождения привязки клавиш по имени

Сценарий ниже произведет привязку клавиш при выполнении его с именем ярлыка как аргумент. пример:

$ python3 '/home/jacob/Bureaublad/find_keybinding.py' rename
> '<Primary><Alt>r'

Как настроить

  • Скопируйте сценарий ниже в пустой файл, сохраните его как find_keybinding.py
  • Выполните его командой:

    python3 '/path/to/find_keybinding.py' <shortcut_name>
    

Объяснение

Информация находится в выводе

dconf dump /

На пользовательских сочетаниях клавиш это произведет разделы как:

[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom9]
binding='<Primary><Alt>r'
command='/home/jacob/.local/share/nautilus/scripts/change_name'
name='rename'

Как Вы видите, нам нужны строка, две строки выше

name='rename'

... и так выводы сценария, что строка, разделенная от binding=

Сценарий

#!/usr/bin/env python3
import subprocess; import sys
key = "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/"
# read the output from dconf dump /, split into lines
ls = [l for l in subprocess.check_output(["dconf", "dump", key]).decode("utf-8").splitlines()]
# find line corresponding to searched name, print two lines higher
print(ls[ls.index([l for l in ls if "name='"+sys.argv[1] in l][0])-2].replace("binding=", ""))

Дополнительно

... Вы могли создать каталог ~/bin (если это еще не существует), и сохраните сценарий там без расширения и сделайте это исполняемым файлом. Выйдите из системы и въезжайте задним ходом, затем просто:

find_keybinding <name> 

сделаю

3
ответ дан 7 December 2019 в 12:39

Другие вопросы по тегам:

Похожие вопросы: