Windows用注册表修改键盘映射(扫描码)
序
使用C/C++代码方式修改可见下篇专栏《用C/C++(Win32API)写软件修改键位》
据说Qwerty键盘是为了降低打字员打字速度,防止打字机卡机所作出的妥协。那么现在的键盘是否降低了咱敲代码的速度?试试看换成其他的键盘布局吧。
注:注册表修改映射的方法比较麻烦,但适用性还挺高,不需要依靠其他软件,所以不会被软件或游戏认定为作弊。
注:常用快捷键Ctrl+Z、Ctrl+C等可能会变的不方便。

确定目标
首先明确要将键盘修改成什么样子,我以网上[1]找到的一种键盘布局为例。

注:这里的修改仅限于主键盘区26个字母(其实只修改了25个x)。
修改方法
首先打开注册表(Win+R输入regedit并运行),并且进入目录:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
在该目录下右键点击新建二进制值,名称为Scancode Map,并打开。
接下来按照如下格式[2]输入自己需要更改的键位:
00 00 00 00 00 00 00 00(固定格式)
XX 00 00 00(XX为修改的总键数+1的16进制数)
XX XX XX XX(修改后的按键扫描码(在前)+原按键的扫描码(在后))
XX XX XX XX(另一个要替换的按键,同上)
......
00 00 00 00(固定格式)
以上就是修改键位的格式,理论上可以修改254个键(包含键盘所有键有余)。
其中提到的扫描码是一个16进制数字,每个代表一个键,扫描码表如下(左列为高位、右列为低位):

例如1D 00 5B E0代表了用左Ctrl键(1D 00)替换左Win键(5B E0)
我替换26字母则需要打如下的码(此处U映射不变,所以共替换25个,25+1的16进制数为1A):
00 00 00 00 00 00 00 00
1A 00 00 00 2D 00 10 00
30 00 11 00 18 00 12 00
14 00 13 00 23 00 14 00
11 00 15 00 15 00 17 00
22 00 18 00 32 00 19 00
13 00 1E 00 26 00 1F 00
2E 00 20 00 17 00 21 00
1E 00 22 00 12 00 23 00
31 00 24 00 2C 00 25 00
24 00 26 00 25 00 2C 00
2F 00 2D 00 10 00 2E 00
20 00 2F 00 21 00 30 00
1F 00 31 00 19 00 32 00
00 00 00 00
一切准备妥当后,确定并关闭。

最后重启(或注销并重新登录)电脑就可以使用新的键盘映射啦。
注:若要回到默认映射,在注册表中删除本Scancode Map文件即可。

引用图片


参考资料
[1] 给中国人的键盘 —适合中英文双输入的键盘布局(http://www.docin.com/p-23672137.html)
[2] Windows10 修改键位映射(https://blog.csdn.net/lhdalhd1996/article/details/90741092)
QQ:2639914082

