问题场景:最近在用Colabeler做数据集标注,但是发现了一些不方便的地方:工具选择键“R”、翻页键“Right、Left”、保存键“Ctril+S”这些键离得太远了,不方便一套连续操作做下来,而Colabeler又不能修改这些对快捷键的映射,因此只能考虑直接对系统修改键盘映射表了~
关于修改方法,可以用第三方软件来做,不过我这里就直接用最根本的方法,即修改注册表中的扫描码映射来解决~
本文部分参考自:https://zhuanlan.zhihu.com/p/29581818
Windows键值对照表:百度文库
(1)寻找扫描码
根据需求结合前文给出的“Windows键值对照表”,找到你需要修改的键值的扫描码
比如,我希望:“A”映射为“Left”,“F”映射为“Right”,“W”映射为“Ctrl”,“E”映射为“S”
那么,通过查表,可以得到如下结果:
A:1E 00
Left:4B E0
F:21 00
Rgiht:4D E0
W:11 00
Left Ctrl:1D 00
E:12 00
S:1F 00
(2)创建ScanCode Map
“Win+R”打开cmd,然后输入“regedit”回车打开注册表编辑器
找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout”
右键新建名为“ScanCode Map”的“二进制值”
(3)修改ScanCode Map
修改时需要遵从ScanCode Map的规则
(3.1)先填充8组00表示版本号和头部字节
(3.2)填充“xx 00 00 00”,其中"xx"代表映射数目
(3.3)按“目标字节码在前,源字节码在后”的原则继续填充
(3.4)最后填充4组00作为结束标志
PS:我下面的映射部分,重复调换地写了两遍,是为了实现两个键值功能的交换,而不是单纯用一个键去覆盖另一个键~
(4)重启计算机生效
由于我们是通过注册表在底层修改的映射表,因此需要重启计算机才能生效~
(5)取消设置
从注册表中删除创建的ScanCode Map这个键,或者用"hex:00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00"覆盖掉原来的值即可~