交换 Escape 和 Caps_Lock
交换电脑的 Escape 和 Caps_Lock
我在平时操作电脑时候,Esc 比 Caps_Lock 要常用的多,但是手指按下 Caps_Lock 要更加方便,因此想要把键位修改
Windows
修改注册表来交换按键
1 | Windows Registry Editor Version 5.00 |
修复到没有更换的状态
1 | Windows Registry Editor Version 5.00 |
保存后更改后缀名为 .reg
双击重启即可交换
Linux
修改 ~/.Xmodmap
文件即可,如果没有这个文件可以手动新建
Xev
首先在命令行运行 xev
命令, 就会弹出一个窗口,这时按下任何键,在终端都会输出一串信息,里面包含了这个按键对应的编码(keycode)
通过执行命令可以查询到,Escape对应的编码是 9, Caps_Lock是66
Xmodmap
安装
xmodmap can be installed through the
xorg-xmodmap
package.Optionally, install
xkeycaps
, which is a graphical front-end to xmodmap.
安装 xorg-xmodmap
即可,也可以安装 xkeycaps
来进行图形化的配置。
之后运行命令即可生成当前映射的键盘布局(可选)
1 | xmodmap -pke > ~/.Xmodmap |
执行这条命令使配置文件生效
1 | xmodmap ~/.Xmodmaps |
新建~/.Xmodmap
,加入以下代码(编辑刚生成的文件的话,找到keycode分别为9和66的那一行更改)
1 | keycode 9 = Caps_Lock NoSymbol Caps_Lock |
每一个 keycode 后面配置的是按下这个键以及结合修饰键的效果,可以查看 Arch Wiki
每个键码后面都跟着映射到的键符。上面的例子意思是:键码
57
被映射到小写n
键符,而大写N
键符则对应按下Shift
输入的57
号键码。表中的每一列键符都对应着一个特定的修饰键组合,Key为键码所对应的按键:
Key
Shift+Key
Mode_switch+Key
Mode_switch+Shift+Key
ISO_Level3_Shift+Key
ISO_Level3_Shift+Shift+Key
并非所有的键符都必须设置,但如果要跳过一个键符,请将其值设为
NoSymbol
。
此时使配置生效发现,按下Esc和Caps_Lock之后都可以大写锁定,这是因为没有清除掉原有的Caps_Lock绑定的大写锁定功能
在重排之前,需要清除修饰键。原来的键和新的键都得清除。例如,如果您打算将
Caps_Lock
换到A键,将B
换成NumLock键,那么Caps_Lock
,Num_Lock
,A,B四个键都得清除,然后分配键位,最后再把他们加回来。
因此加上
1 | clear lock |
就可以完成更改,使配置生效即可
一般这样的键位在编辑文件时经常用到,可以将其加入 /etc/profile
或者.zshrc
1 | if [ -f ~/.Xmodmap ]; then xmodmap ~/.Xmodmap; fi |
这样每次打开 zsh 都可以自动设置键位
修改~/.Xmodmap
的方式对于 Minecraft 不生效,如果使用的是 KDE, 可以直接在系统设置里面对此进行设置,可以对 Minecraft 也生效