最近更新于 2024-08-03 21:38
前言
2024.4.24
目前没有找到更有效的方法修改键盘映射,我用过微软官方的开源项目 PowerToys,确实设置很方便,但是只要重新启动电脑就会失效,手动退出再次运行才能恢复。我在 Issues 上也看到多个关于这个问题的报告,目前这个问题还没有修复。
测试环境
Windows 11 专业版 23H2 Beta 预览版
操作
步骤
打开注册表
地址栏复制粘粘回车进入路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
右侧空白处右键新建二进制值,命名为 Scancode Map
然后双击打开 Scancode Map,我这里是将 Number Lock
改为了 Backspace
,把 Caps Lock
和 Insert
设置为空。
下面解释一下怎么编写,每行有 8 列,第一行全部写 0
第 2 行开始,每行的前 4 列和后 4 列分别当作两个字段
第 2 行的第一个 4 列,表示要设置的映射个数,比如我设置了 3 个键的映射就写的 04 00 00 00,如果只映射 1 个键就写 02 00 00 00,即从 02 开始
从后面开始就是设置键盘映射,4 列中的前 2 列表示新的按键,后 2 列表示要修改的按键,即每个按键为两列,每个按键的扫描代码见后面表,设置的时候要逆序
比如 Number Lock
的的扫描代码是 0x0045,设置的时候要写 45 00,Backspace
的扫描代码是 0x000E,设置的时候要写 0E 00,所以要把 Number Lock
替换成 Backspace
就写 0E 00 45 00
后面设置一样的道理,如果设置成 00 00 就代表为空,按下不会做任何操作
设置完以后,最后要添加 4 列的 00
设置之后,重启系统生效
扫描代码
(1)可以使用 Keyboard Test Utility 研究,有些键有两个的,比如左 Alt
是0x38,那么右Alt
就是 0xE038,加上 E0 就行。
(2)可以参考微软文档:https://learn.microsoft.com/zh-cn/windows/win32/inputdev/about-keyboard-input
自用的键码映射
按顺序
- 禁用
Number Lock
(固定小键盘作为数字键) Caps Lock
改为Enter
(方便 AutoCAD 命令左手确认,因为空格在有些命令中会变成字符输入,用作确认不方便)- 右
Alt
改为HOME
应用程序键
(右 Alt 右侧)改为END