windows中互换CapLock和Ctrl键位

2019-12-21  本文已影响0人  redher

前言

在使用软件的时候,快捷键最常用的组合键就是Ctrl,而qwerty键盘的Ctrl位置比较反人类,如果你经常使用vim Emacs这样的编辑器的时候,Ctrl的位置导致小拇指抽筋不是梦。而CapsLK的用处不大但是占用了非常好的位置,这就需要我们来互换他们的键位映射。

更改方法

在win7及以后的windows操作系统中,可以直接通过修改注册表的方式来修改键位。

更改

新建一个文本文件将其改名为capslk_leftctrl_switch.reg (注意一定要将txt后缀名给删除了,默认情况下windows会隐藏常用类型的后缀名),将以下内容复制进去,然后双击执行就可以了。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,1d,00,3a,00,3a,00,1d,00,00,00,00,00

恢复

如果你想要恢复这个设置就创建如下的reg注册表脚本:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Control\Keyboard Layout]
"Scancode Map"=-

当然聪明如你一定也发现了,我们可以直接打开注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Control\Keyboard Layout删除其中的Scancode Map键就可以了。

总结

如果还是不知道怎么操作,下面直接奉上脚本供君食用,要注意呦以上所有操作都重启后生效:
CapLock与Ctrl互换
恢复键位互换

P.S.
最直接的还是直接上HHKB键盘,一步到位不纠结,就是钱包惹不起。

HHKB键位图

原理说明

如果你仅仅是为了互换CapLock和Ctrl键位到就不需要看以下内容了,但是你想更加深入的了解windows下键盘映射的原理以及其他需求,那么这部分内容就是你的菜了。

键盘映射

在windows中通过在注册表中添加Scancode Map项来达到键盘映射的目的,Scancode Map项位于注册表的[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Control\Keyboard Layout]中(默认是不存在的)固定格式如下:

hex:[填充八个 00] [映射项数] [填充3个 00] [映射后ScanCode 原ScanCode] [填充4个00]
映射项数:02 表示只映射一组,03表示映射两组,以此类推
映射后ScanCode 原ScanCode码:例如CapsLock的ScanCode为3A 00而Ctrl为1D 00那么为了将他们互换就使用1D 00 3A 00,当然还需要让Ctrl映射成CapsLock就是 3A 00 1D 00
终上所述即:00,00,00,00,00,00,00,00,03,00,00,00,1D,00,3A,00,3A,00,1D,00,00,00,00,00

举例

现在提出更高级的将F9和F10映射为音乐的开始暂停键即Play Stop键。他们的Code分别对应:

按键 ScanCode
F9 43 00
F10 44 00
Play/Pause 22 E0
Stop 24 E0

所以修改的结果就是:

"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,43,00,22,E0,44,00,23,E0,00,00,00,00

ScanCode码

好事做到底,送人送到家,你一定会要的 键盘映射之ScanCode码

上一篇 下一篇

猜你喜欢

热点阅读