使用命令行切换 alt 和 win 键

使用命令行切换 alt 和 win 键

我知道我可以使用 来交换 alt 和 win 键gnome-tweak-tool。但是,我必须经常这样做,因为我经常在键盘之间移动,所以有一个脚本解决方案会很好。

有一个简单的方法可以找出给定更改对应的 dconf 设置,方法是使用dconf watch /终端中的命令,然后发出更改,这会导致终端打印出相应的更改。[参见 https://itectec.com/ubuntu/ubuntu-how-to-script-the-settings-made-by-gnome-tweak-tool/]

通过这种方式,我发现我需要的改变是切换(删除或添加)'altwin:swap_alt_win'中的条目

/org/gnome/desktop/input-sources/xkb-options 
  ['ctrl:aa_ctrl', 'grp:shift_caps_toggle', 'altwin:swap_alt_win']

链接的网页建议使用gsettings,但我不清楚如何做到这一点。运行gsettings get org.gnome.desktop.input-sources xkb-options确实会返回设置,但我不知道现在如何切换选项'altwin:swap_alt_win'。我认为应该使用set,但我必须在列表中搜索该术语并添加或删除它,具体取决于它是否存在?还有其他方法吗?

顺便说一句,gsettings set org.gnome.desktop.input-sources xkb-options ['ctrl:aa_ctrl', 'grp:shift_caps_toggle']不起作用。

答案1

我知道有点晚了,但是我在使用类似 Mac 的外接键盘时也遇到了同样的问题,在两种设置之间切换的快速解决方案可以是 .bashrc 中的两个别名,我知道切换可能更优雅,但这对我来说没问题。

alias swaplap="gsettings set org.gnome.desktop.input-sources xkb-options \"['caps:ctrl_modifier', 'lv3:ralt_switch']\""
alias swapkb="gsettings set org.gnome.desktop.input-sources xkb-options \"['caps:ctrl_modifier', 'lv3:ralt_switch', 'altwin:swap_alt_win']\""

就我而言,使用外部键盘时,我只需启动swapkb终端,swaplap然后恢复设置即可。另外,请注意,我已将控制权映射到大写锁定上,就您而言,您的别名可能如下所示:

alias swaplap="gsettings set org.gnome.desktop.input-sources xkb-options \"['ctrl:aa_ctrl', 'grp:shift_caps_toggle']\""
alias swapkb="gsettings set org.gnome.desktop.input-sources xkb-options \"['ctrl:aa_ctrl', 'grp:shift_caps_toggle', 'altwin:swap_alt_win']\""

答案2

尝试

gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:aa_ctrl', 'grp:shift_caps_toggle']"

要打开和关闭,您需要创建一个小的 bash 脚本来测试当前设置,然后设置其他设置。您可以使用以下方式读取密钥:

gsettings get org.gnome.desktop.input-sources xkb-options

然后您可以将脚本绑定到热键以便快速切换。

该脚本可能如下所示:

#!/bin/bash
STATUS=$(gsettings get org.gnome.desktop.input-sources xkb-options)
case $STATUS in
    "@as []" )
        gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:aa_ctrl', 'grp:shift_caps_toggle']"
    ;;
    "['ctrl:aa_ctrl', 'grp:shift_caps_toggle']" )
        gsettings reset org.gnome.desktop.input-sources xkb-options
    ;;
esac

相关内容