如何找出快捷方式组合上执行了哪个命令/操作?

如何找出快捷方式组合上执行了哪个命令/操作?

我创建了一个自定义快捷方式并将其绑定shutter -s到它:

在此处输入图片描述

然后我尝试找出这个命令存储在哪里,并通过 检查设置dconf-editor。但没有关于shutter -s绑定命令和Shift+Print组合的信息:

在此处输入图片描述

因此,问题

  1. 关于按键绑定的完整信息存储在哪里?有没有办法说:这个组合键正在使用这个命令?例如,我想查看按下时执行的默认屏幕截图命令Print
  2. 当我按下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>'

这也适用于namebinding

要“清除”自定义键绑定,您可以使用: 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'

相关内容