我创建了一个自定义快捷方式并将其绑定shutter -s
到它:
然后我尝试找出这个命令存储在哪里,并通过 检查设置dconf-editor
。但没有关于shutter -s
绑定命令和Shift+Print组合的信息:
因此,问题:
- 关于按键绑定的完整信息存储在哪里?有没有办法说:这个组合键正在使用这个命令?例如,我想查看按下时执行的默认屏幕截图命令Print。
- 当我按下Print按键时会发生什么?此按键如何实现屏幕截图功能?例如:
- 一些人
tty
得到这把钥匙 - GNOME Shell 与此相连
tty
,因此它获取密钥作为输入。 - 然后 GNOME Shell 查看一些数据库(
dconf
?)并执行与该键绑定的命令Print。
- 一些人
我读过类似的问题,例如
但没有找到我的问题的答案。
答案1
好的,经过多次反复的评论后,我相信我找到了查找设置的正确方法:
它描述于https://wiki.ubuntu.com/Keybindings
要查找所有(系统)键绑定:
让我们添加所有提到的三个命令:
gsettings list-recursively org.gnome.desktop.wm.keybindings ; gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys ; gsettings list-recursively org.gnome.settings-daemon.plugins.power
要找到一个特殊的键,你需要通过管道传输每个命令的输出grep -i <what you're looking for>
(-i 标志是忽略字母的大小写) - 所以如果你查找打印,它将看起来像这样:
gsettings list-recursively org.gnome.desktop.wm.keybindings | grep -i print ; gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys | grep -i print ; gsettings list-recursively org.gnome.settings-daemon.plugins.power | grep -i print
使用一些 bash-magic 显然可以看起来更漂亮 - 但它有效 ;)
关于自定义快捷方式
自定义快捷方式
自定义快捷键使用“可重定位架构”存储在 dconf 中。架构名称为“org.gnome.settings-daemon.plugins.media-keys.custom-keybinding”。每个自定义键绑定都有三个属性:名称、命令和绑定。由于可重定位架构,使用自定义快捷键时“gsettings”会比较困难。以下是获取第一个自定义键绑定名称的示例:
gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name
请注意,最后一部分custom0/
是指第一个自定义设置键绑定。
使用以下命令gsettings list-recursively org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/
你会得到类似的结果:
org.gnome.settings-daemon.plugins.media-keys.custom-keybinding 命令“libreoffice” org.gnome.settings-daemon.plugins.media-keys.custom-keybinding 名称“libreoffice” org.gnome.settings-daemon.plugins.media-keys.custom-keybinding 绑定“l”
为了找到正确的条目,您可能需要增加中的数字custom0
。
例如要更改命令的使用:
gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command '<your command>'
这也适用于name
或binding
。
要“清除”自定义键绑定,您可以使用:
gsettings reset-recursively org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/
- 这将清除里面的条目,但该条目仍将作为空条目存在于 Gnome-Settings 中,但处于“停用”状态,有点像。
如何与 gsettings 配合使用——第二个问题: 请看这里:https://developer.gnome.org/gio/stable/GSettings.html
晚安,好运! ;)
答案2
对于自定义键绑定,命令是:
for i in $(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings | awk -F"'" '{ for (i=2;i<=NF;i+=2) print $i }'); do
echo "$(dconf read ${i}binding) $(dconf read ${i}command)"
done
对于特定的自定义键绑定,请尝试:
for i in $(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings | awk -F"'" '{ for (i=2;i<=NF;i+=2) print $i }'); do
echo "$(dconf read ${i}binding) $(dconf read ${i}command)"
done | grep -i '<Super>A'
对于其他键绑定,命令是:
for schema in $(gsettings list-schemas | grep -E 'keybindings|media-keys')
do
gsettings list-recursively $schema
done
要找出特定键绑定的内容(不是自定义命令),请运行:
for schema in $(gsettings list-schemas | grep -E 'keybindings|media-keys')
do
gsettings list-recursively $schema
done | grep -i '<Primary><Super>Up'