web-dev-qa-db-ja.com

名前から特定のカスタムキーバインディングを見つけるにはどうすればよいですか?

カスタムキーバインディングのリストは、次の方法で取得できます。

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

私は1つの単純だが便利ではないアプローチを考え出しました:

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
e-cloud

名前でキーバインドを見つけるための小さなスクリプト

以下のスクリプトは、ショートカットのnameを引数として実行すると、キーバインドを出力します。例:

$ 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'

ご覧のとおり、2行上の行が必要です

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
Jacob Vlijm