如何永久切换Caps Lock和Esc


116

如何在Saucy中永久切换Caps LockEsc键功能?我可以临时使用此命令(直到重新启动):

/usr/bin/setxkbmap -option "caps:swapescape"

我尝试将该命令添加为“启动应用程序”,但似乎没有任何作用。


1
我将该命令放入我的命令中,~/.bashrc因此它在系统重新启动之间仍然存在。(ctrl:nocaps不过,对于我而言tmux
鸦片(2014年

2
@opyate我将该命令放在〜/ .profile中,以便在交互式登录后仅运行一次。
suzanshakya

Answers:


125

另一种方法是通过dconf-editor。此方法从开始有一些额外的步骤gnome-tweak-tool,但是如果您不想从调整工具中获取依赖项,则该方法很有用。

这将允许您使用caps:swapescape语法并自动使更改永久生效。

sudo apt-get install dconf-tools

启动后dconf-editor,导航至org >> gnome >>桌面>> input-sources

在中添加所需的选项xkb-options。选项字符串用单引号引起来,并用逗号分隔。注意不要删除两端的括号。

dconf编辑器中的xkb-options

您可以使用此方法输入系统设置>>文本输入中不再可用的大多数传统xkb选项。例外是用于切换键盘布局的设置,由于存在错误,该设置目前无法使用。

有关选项和语法的列表,请man 7 xkeyboard-config在终端中使用。

可以使用的另一个常见选项是terminate:ctrl_alt_bksp允许ctrl+ alt+ backspace结束X会话。


5
+1引用keyboard-config(7),这就是我想要的。
ulidtko

61
您也可以从命令行执行此操作,而无需安装dconf-editor:dconf write /org/gnome/desktop/input-sources/xkb-options "['caps:escape']"
Pi

4
不要使用“ sudo”运行以上命令,因为此设置似乎针对每个用户。
布尔2014年

11
请注意,'caps:swapescape'如果您需要交换两个密钥(而不是仅分配EscCaps Lock),则需要使用。
thameera 2014年

1
或者您可以做gsettings set org.gnome.desktop.input-sources xkb-options "['caps:escape']"
ACyclic 2014年

50

适用于大多数Linux发行版的解决方案:

setxkbmap -option caps:swapescape

其他选项是可能的:

  • caps:none 停用
  • caps:escape 使它成为额外的逃生
  • caps:super 使其成为附加的超级(Windows)键。

要使此功能在启动时起作用,您需要将其放入,~/.profile因为它仅在交互式登录后才能运行。


1
这可在Ubuntu 14.04,Unity中使用。
乍得

2
在Ubuntu 16.04中也为我工作过
Jesse Chan

4
从18.04开始,放置setxkbmap命令~/.xsessionrc并且~/.profile不再显示使设置在登录/重新启动之间保留的时间
Conrad.Dean

2
@ Conrad.Dean我在基于18.04 LTS的Mint 19中使用它:这里没有问题。这些设置不应保留,而是在登录时加载。
jojo

~/.profile这是一个很糟糕的地方-在每个登录Shell上都读取该文件。将其放在启动X11时使用的文件中,例如~/.xinitrc~/.xsession
萨尔诺德

39

好的,找到了一种使用gnome-tweak-tool进行此操作的方法。

从终端运行

sudo apt-get install gnome-tweak-tool -y && gnome-tweak-tool

您可以在“键入-> Caps Lock键的行为”中找到交换Caps Lock和Esc的选项。


5
在Ubuntu 14上,窗口的布局非常麻烦,但仍然可以使用。
uvasal 2014年

1
是的,我认为gnome-tweak-tool不应将其用于此任务,因为有默认工具可以执行此任务。
莱奥列奥波尔德赫兹준 영

到目前为止,这是最好的解决方案。
杰森·麦维塔

2
对于Ubuntu的> 18.04它可以发现Keyboard & Mouse> Additional Layout Options>Caps Lock Behavior
Adracus

这对我来说在19.04上有效。我不能得到任何的xmodmapsetxkbmap解决方案,坚持在19.04。
ahmorris

23

您可以使用xmodmap的终端交换Caps LockEsc

xmodmap -e "keycode 9 = Caps_Lock NoSymbol Caps_Lock"   #this will make Esc to act as Caps Lock
xmodmap -e "keycode 66 = Escape NoSymbol Escape"        #this will make Caps Lock to act as Esc

为了对每个会话进行此更改,请在运行先前的命令后.xmodmap使用以下命令创建一个名为新键盘映射的文件:

xmodmap -pke > ~/.xmodmap

然后,.xinitrc在您的主目录中创建一个名为的文件,其中包含以下行/命令:

xmodmap .xmodmap

6
这在Ubuntu 14.04下不起作用。我还尝试了一个.xsessionrc文件,它也没有起作用。
miguel.martin 2014年

您如何撤消设置?
hlin117

@ hlin117只需清除~/.xmodmap文件内容(仅> ~/.xmodmap在终端中运行),然后重新启动会话即可。
RaduRădeanu'15

2
在Ubuntu 14.04上,这使Escape映射到Caps_Lock,但Caps_Lock不映射到Escape。
user1691145

1
嗨,我做到了,而且有效。但是,除了将esc绑定到capslock之外,caps-lock现在还绑定到caps-lock 转义符。桌面环境是否仍可能以某种方式替代此设置?我使用KDE
xor

18

与@Radu的答案类似,但与14.04兼容(另请参见此答案)。

xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "keycode 9 = Caps_Lock NoSymbol Caps_Lock"
xmodmap -e "keycode 66 = Escape NoSymbol Escape"
xmodmap -pke > ~/.xmodmap

如果不起作用,请更换:

xmodmap -e "remove Lock = Caps_Lock"

与:

xmodmap -e "clear Lock"

在Linux Mint 17.1(基于Ubuntu)中
不起作用

3
必须将“删除锁定= Caps_Lock”更改为“清除锁定”才能正常工作
Sofia

13

转到屏幕右上角的齿轮图标,然后:

  • 单击系统设置
  • 键盘布局
  • 选项...(右下角)
  • 大写锁定键行为(第四下)
  • 向下滚动并选择“交换ESC和Caps Lock”。

做完了!


:欢迎来问Ubuntu!;-)能否请您查看我的编辑内容,并同时查看编辑帮助内容,以提高将来答案的可读性... ;-)
Fabby 2015年

2
这应该是ubuntu和mint的最佳答案
prasad

除了这里提到的脚本更新之外,这还做什么?最好在脚本中执行此操作。
Ben Creasy

7

在终端中运行一次此命令。 dconf应该已经与gnome 3一起安装了。

dconf write "/org/gnome/desktop/input-sources/xkb-options" "['caps:swapescape']"

这种解决方案只是在红帽企业Linux测试OK 7
乍得Skeeters



2

我来不及回答,但通常的方式交换Esc,并Ctrl与下面几行~/.Xmodmap的文件:

clear Lock
keysym Caps_Lock = Escape
keysym Escape = Caps_Lock
add Lock = Caps_Lock

这应该适用于大多数常见发行版(Ubuntu和Debian系列,Fedora和RH系列)上的所有桌面环境(KDE,Gnome)。


它在ubuntu 16.04上不起作用,请您详细说明一下?
MaikoID

@MaikoID:这几乎是交换CapsLock和Esc的统一方法。我了解到,具有Unity的较新Ubuntu版本打破了许多“规范的统一性”,这就是为什么所有其他答案都针对某些特定于版本或DE特定(Unity)方法的原因。就其价值而言,这确实适用于我个人使用的Kubuntu。
dotancohen '16

2

对于Ubuntu 18.04和Gnome 3.30,这对我有效:

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

仍在19.04上工作。
Exeleration-G

1

在KDE GUI(图形用户界面)上,可以通过“系统设置”中的“键盘布局”完成此操作。点击“输入设备”。在左上角,单击键盘。然后单击“高级”选项卡。在“大写锁定键行为”下,选择“切换转义和大写锁定”。


您提供了这个问题的答案,太好了。一旦选择“交换ESC和Caps Lock”,您是否可以编辑问题以扩大一点,可能会达到预期的结果。被选中。
菲尔英国

您好,欢迎问问Ubuntu!在目前的状态下,此答案确实还不完整,因此有被删除的风险。请阅读我们的“ 如何回答”帮助页面,然后返回并编辑您的答案以包括更多详细信息,特别如何解决OP的问题。此外,请阅读我们的旅行以获取徽章,并更好地了解我们网站的工作方式。再见!
卡兹·沃尔夫

多亏您的建议。我希望此编辑是您想要的。
farhad goodarzi

仅供参考,与您的域的链接似乎无效(至少对我而言),但是以前的IP地址域有效。
安德鲁T.18年

1

上面带有“ switch Escape and Capslock”开关的“ Keyboard Layout”在Ubuntu 16.04及更高版本上不再有效(以前是吗?dunno)。答案:为了避免拥有权限等的麻烦,只需在开始所有操作之前通过su输入root密码切换到root 。然后:

    cd /etc/default/
    vim keyboard

在那里,您将看到以下行:

    XKBOPTIONS=""

更改为:

    XKBOPTIONS="caps:swapescape"

使用保存退出vim:

    :wqa

重启。

我保证,那将是永久的。:)


0

注意:这不会交换,仅将大写锁定映射到esc。(这对于我的vim用例已经足够了。)

对于ubuntu 16:04(在i3环境中):创建的文件〜/ .xessionrc及其内容

xmodmap -e "clear lock" #disable caps lock switch
xmodmap -e "keysym Caps_Lock = Escape" #set caps_lock as escape

1
尽管此答案确实可以解决1/2的问题,但由于(我认为)长度,OP询问它出现在低质量答案队列中的问题。您可以考虑进一步扩展它。它可能如何以及为什么起作用。
极客长老'18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.