如何在没有 xmodmap/XKBOPTIONS 的情况下实现 Capslock 控制?

如何在没有 xmodmap/XKBOPTIONS 的情况下实现 Capslock 控制?

xmodmap已贬值,并且无法使用gsettings,这样做这里禁用我的xmodmapsudo vi /etc/default/keyboard>XKBOPTIONS="ctrl:nocaps"sudo setxkbmap dvorak '' ctrl:nocaps

gsettings set org.gnome.desktop.input-sources xkb-options "['compose:ralt']"

我想通过 将 Capslock 更改为 Ctrl gsettings。但是,我在设置中找不到这种可能性。我认为可以通过Keyboard> Shortcuts> Custom Shortcuts>实现此更改+,但我不确定如何使用 gnome 实现。


如何通过 gnome-settings 将 capslock 改为 Ctrl?

答案1

在 gsettings 中添加'caps:ctrl_modifier'的值org.gnome.desktop.input-sources xkb-options,例如

 gsettings set org.gnome.desktop.input-sources xkb-options "['compose:ralt', 'caps:ctrl_modifier']"

您可以使用

gsettings set org.gnome.desktop.input-sources xkb-options "$(gsettings get org.gnome.desktop.input-sources xkb-options | sed "s/]/, 'caps:ctrl_modifier']/")"

附加到 的当前值上xkb-options。您可以在xkeyboard-config 手册页

要更改键盘布局,您需要设置的值org.gnome.desktop.input-sources sources,例如

gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+dvorak')]"

如果你只想使用 Dvorak 或

gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+dvorak'), ('xkb', 'us')]"

如果您希望能够在 Dvorak 和标准布局之间切换。

请参阅“布局”部分xkeyboard-config 手册页了解更多布局。您需要替换父级,以便例如us(dvorak)变为us+dvorak

gsettings 中的 XKB 设置由 GNOME 在启动时加载并覆盖任何以前的设置。要使用,setxkbmap您需要确保setxkbmap在应用 GNOME 设置后运行。我不知道该怎么做。

答案2

@florian-diesch 的回答很棒,但我认为值得添加一个在用户配置为空的情况下也能工作的版本:

# Map Caps Lock to Ctrl.
XKB_OPTIONS="$(gsettings get org.gnome.desktop.input-sources xkb-options)"
[ "$(echo ${XKB_OPTIONS} | grep -v '\[\]')" ] && gsettings set org.gnome.desktop.input-sources xkb-options "$(echo ${XKB_OPTIONS} | sed "s/\[\]/['caps:ctrl_modifier']/")"
[ "$(echo ${XKB_OPTIONS} | grep -v 'caps:ctrl_modifier')" ] && gsettings set org.gnome.desktop.input-sources xkb-options "$(echo ${XKB_OPTIONS} | sed "s/\]/, 'caps:ctrl_modifier']/")"

相关内容