![在 Ubuntu 上将 CapsLock 绑定到 Control](https://linux22.com/image/121170/%E5%9C%A8%20Ubuntu%20%E4%B8%8A%E5%B0%86%20CapsLock%20%E7%BB%91%E5%AE%9A%E5%88%B0%20Control.png)
我在谷歌上搜索了这个话题,很多人建议
setxkbmap -option ctrl:nocaps
我把这一行放入我的.bashrc
.但是,此键绑定通常会自动禁用。当我做其他事情时,这种情况会随机发生。当我使用vim时,这是最烦人的,很多键映射都受到影响。我需要打开一个终端来重新运行之前的命令,这将使其在另一个随机时间段内工作,直到再次停用。
有没有人分享同样的经历?如何永久拥有这个映射?
我终于发现每次更改输入引擎时 ibus 都会重置键映射。
答案1
只是澄清一下:这只适用于 X11,对吗?
每次启动终端时,它不会映射密钥。它不是终端本身配置的一部分,而是 X 的配置的一部分。
创建文件~/.Xmodmap
并添加以下内容:
remove Lock = Caps_Lock
keysym Caps_Lock = BackSpace
这会将 CapsLock 映射到 Backspace。
当然,如果需要,您可以将其绑定到 Control。
来自评论:请注意,ibus 可以在更改输入时重置此配置。
答案2
供您参考,我正在尝试解决此问题,并在另一个线程中提出了我的解决方案 将 Caps Lock 映射到 Linux Mint 中的控制
答案3
是的,我也遇到了同样的问题,“setxkbmap -option ctrl:nocaps”突然停止工作。
以下命令永久地重新映射按键并在我的笔记本电脑上正常工作:
sudo setkeycodes 3a 29
如果扫描码 (3a) 或键码 (29) 不同,您可以使用以下方法找到正确的:
sudo evtest
但由于某种原因,这不适用于 USB 键盘。以下适用于 USB 键盘: https://github.com/stefansaraev/keytable
git clone https://github.com/stefansaraev/keytable.git
cd keytable/
make
sudo ./keytable -k 0x70039=29 --device /dev/input/event5
按照与之前相同的方式获取正确的设备、扫描码 (70039) 或键码 (29)。一些参考: