如何重新映射Caps Lock和Ctrl键?


77

我想重新映射我的键,使其CtrlCaps Lock键一样,反之亦然。另外,如果可能的话,我希望这些设置仅在当前登录的用户中可用。我该如何实现?

我是vim用户,与使用此计算机的其他人不同,因此我只希望为我的帐户提供这些设置。


1
难道帮助?
米奇


4
我感到震惊的是,在当今时代,这不是Linux设置中的标准功能。
Edward Falk 2015年

Answers:


59

13.10+:

安装和使用gnome-tweak-tool> Keyboard & Mouse> Keyboard> Additional Layout Options> Caps Lock behavior

13.10之前的版本:

打开键盘偏好设置对话框(System -> Preferences -> Keyboard)。在布局选项卡上,单击Options...按钮。展开该Ctrl key position部分,然后选择Swap Ctrl and Caps Lock

这些设置应该在您每次登录时应用,并且只会影响您的用户帐户。


2
此选项已在Ubuntu Saucy中消失。我不确定如何解释这一点,但根本就不存在。键盘首选项没有“布局”选项卡,但是有一个“布局设置”按钮,当我单击它时,将我带到“区域和语言”面板的“输入源”选项卡,它神秘地缺少任何种类“选项”按钮。唯一的按钮将打开一个虚拟的屏幕键盘,该键盘向我显示损坏的键盘布局,而无法更改哪个键的行为方式。
robru 2013年

4
对于Ubuntu 13.10,您需要使用gnome-tweak-tool。
杰里米·毕查

1
Pre 13.10选项在14.04中对我有效
-JeremyKun

与@JeremyKun相同。就我而言,使用14.04,13.10之前的版本可以工作,但13.10+不能解决
matiascelasco

感谢您的回答!将gnome-tweak-tool是非常好的; 您还可以将其用于诸如“使用Caps Lock切换键盘布局”(个人喜好)和“切换Alt / Win”(如果您是Mac的长期用户...非常有用)之类的精美工具
每隆德伯格

63

以图形方式完成此操作的最佳方法之一是安装Gnome Tweak Tool

sudo apt-get install gnome-tweak-tool

  • 打开调整工具,然后单击左列中的键入部分。
  • 现在,您应该在左侧看到行Caps Lock键的行为
  • 在下拉列表中选择“ 使Caps Lock锁定其他Ctrl键”而不是“ 禁用 ”,您应该会很好。

此外,设置面板不需要花费很多时间来安装我的机器,所以我不知道问题出在哪里。

享受您的新Ctrl钥匙!


我想使用CAPS键关闭屏幕。我之前在系统设置>键盘窗口中对此进行了设置,但是CAPS仍然切换了CapsLock状态和LED。因此,我使用了您推荐的工具禁用了该键(该工具在显示时出现一些显示错误-透明的窗口背景),这也使我的自定义快捷方式无法正常工作。禁用后,我必须再次设置快捷方式才能正常工作。它设置为值0xff或类似的值,而不是CAPS。我认为此程序可能会帮助一些有类似愿望的未来读者。
字节指挥官

当我从命令行运行gnome-tweak-tool时,出现有关外壳未运行DBus的错误消息,然后我进行的任何更改设置的尝试均无效。
Edward Falk 2015年

1
更新:gnome-tweak-tool仅在gnome外壳内有效
Edward Falk 2015年

1
我的左栏中没有“键入”部分:仅台式机,字体,Shell,Shell扩展,主题,Windows。
Reb.Cabin's

2
请注意,gnome-tweak-tool中要交换的选项位于“ Ctrl键位置”下,而不是“ Caps Lock键行为”下。
Phil Goetz

58

这是一种无需安装额外软件即可实现的方法:

setxkbmap -layout us -option ctrl:nocaps

资源:


3
重新启动后,这种方法将无法生存。我如何使它永久化?我宁愿不要将其放在启动脚本中(例如.bashrc)。
nic

8
@nic您还需要更改文件sudo vi /etc/default/keyboard并进行更改XKBOPTIONS="ctrl:nocaps"。在那之后运行Jorge的命令,但是setxkbmap -option ctrl:nocaps这样就不会更改您的默认键盘布局。
莱奥波德·赫兹(LéoLéopoldHertz),2016年

43

打开以下内容进行编辑:

sudo vi /etc/default/keyboard

然后编辑 XKBOPTIONS="ctrl:swapcaps"

然后,重新配置:

sudo dpkg-reconfigure keyboard-configuration

要么

/usr/bin/setxkbmap -option "ctrl:swapcaps"

问题是“我只想为我的帐户设置那些设置”。编辑/ etc / default / keyboard将为每个人更改它。
skierpage

1
您有3个步骤(1、2、3)。您是指[(1和2)或3]还是[1和(2或3)]?
jgomo3 '16

大!跑了sudo dpkg-reconfigure keyboard-configuration,然后按几次进入,它就起作用了!!!编辑:但是,我注销并重新登录后,设置消失了。:(
LeOn-韩立

24

永久更改行为:

  1. dconf-editor

  2. 选择 org.gnome.desktop.input-sources

  3. 更改xkb-options['ctrl:nocaps'](或将其添加到任何现有选项中)

或在命令行上(警告-这会覆盖您现有的设置!):

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

也可以将这一衬板添加到〜/ .profile中以实现便携性。
jthetzel

即使在重启后,这在Kubuntu 16.04上对我也不起作用。
zplizzi

3
dconf设置可立即应用并且是永久性的,因此将其放入〜/ .profile中是没有意义的,并且无需重新启动。此特定设置仅适用于Gnome / Unity,不适用于Kubuntu中使用的KDE。
安东·埃里亚森

4

一旦您知道如何做,这将是一件容易的事。

1)检查您的钥匙的密码。在终端上运行该程序。

Xev


在此示例中,终端显示my的键码为k“ 45”。

2)根据需要创建它们,然后更改它们:

gedit〜/ .Xmodmap

它的内容应类似于以下示例:

键码37 = Caps_Lock NoSymbol Caps_Lock
键码66 = Control_L NoSymbol Control_L

(根据需要更改键码编号-查看步骤“ 1”)

说明:(提示
:如果要更改我的代码k,则应使用“键代码45”,如步骤“ 1”所示)。

4)注销并重新登录或重新启动或运行以下命令:

xmodmap〜/ .Xmodmap

希望你喜欢 ;-)


2
请注意,除了最简单的键盘映射,此解决方案可能会导致其他问题。较新的xkb系统中的xmodmap兼容性不是完美的,因此,如果可能的话,最好还是坚持使用xkb。
James Henstridge

@James您想解释一下我们该怎么做吗?
desgua 2011年

查看此问题的其他答案。标准键盘控制面板将根据您选择的基本布局以及启用的选项来构造和xkb键映射。
James Henstridge

1
好了,您可以使用命令行setxkbmap程序来设置相同的键盘映射。可以编写新的键映射,但是比Xmodmap键代码映射要复杂得多。一件很高兴的事情是,您想要的大多数选项变体已经可用。
James Henstridge

1
@詹姆士。我一直在搜索和学习setxkbmap。但是我找不到答案:是否可以将密钥重新映射到我们想要的任何内容?例如,有些古怪的东西:“键码51 =括号右括号括号右括号”?
desgua 2011年

4

这是通过XKB(这是最近的Ubuntu的默认密钥管理器)手动执行(无需其他工具)的方法。修改/usr/share/X11/xkb/symbols/pc部分xkb_symbols "pc105"

//key <CAPS> {  [ Caps_Lock     ]   };
//key <LCTL> {  [ Control_L     ]   };
key <CAPS> {    [ Control_L ]   };
key <LCTL> {    [ Caps_Lock     ]   };

登录/注销或重新启动。有关更多详细信息,请参见此处

或者,您可以在这些按钮发出的键控代码级别进行交换。Modify /usr/share/X11/xkb/keycodes/evdev

<CAPS> = 64; //66;
<LCTL> = 66; //64

您需要sudo rm -rf /var/lib/xkb/*应用更改。


关于在键码级别上工作的重点。在运行Kubuntu Bionic的笔记本电脑上,仅在符号级别进行更改并不令人满意,因为按下物理Caps键仍会切换内部Caps状态。更改键码有效!顺便说一句,我将其扩展到三个键(大写,Meta和RAlt),并想指出您实际上需要编写<CAPS> = *orig code of the physical key you want to act **as** CAPS*而不是<CAPS> = *orig code of the key you want physical CAPS to act **as**(我希望区别清楚)。在这种情况下需要区别对待。
jamadagni

3

可接受的答案令人困惑,因为gnome-tweak-tools没有显示任何“ typing”部分。

而是单击“键盘和鼠标”部分,然后选择“其他布局选项”。在那里,您将看到“大写锁定行为”,该功能允许将大写锁定转换为不同的键。

调整工具的屏幕截图


2

在基于KDE的发行版(如KDE Neon或Kubuntu)上,可以在常规系统设置中配置此行为。打开系统设置,选择“输入设备” =>“键盘” =>“高级”。在类别“ Ctrl键位置”中,选择“交换Ctrl和Caps Lock”。

KDE系统设置的键盘模块的屏幕截图


0

gnome-tweaks 3.28.1没有任何Typing部分。
因此,setxkbmap -layout us -option ctrl:nocaps还是setxkbmap -layout us -option ctrl:swapcaps可行的选择。

要使其永久化,可以参考@name的答案。


键盘和鼠标->其他布局选项
旅行者
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.