基于注册表修改键盘映射(修改按键功能或禁用按键)

最近更新于 2024-08-03 21:38

前言

2024.4.24
目前没有找到更有效的方法修改键盘映射,我用过微软官方的开源项目 PowerToys,确实设置很方便,但是只要重新启动电脑就会失效,手动退出再次运行才能恢复。我在 Issues 上也看到多个关于这个问题的报告,目前这个问题还没有修复。

测试环境

Windows 11 专业版 23H2 Beta 预览版

操作

步骤

打开注册表
file

地址栏复制粘粘回车进入路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout
右侧空白处右键新建二进制值,命名为 Scancode Map
file

然后双击打开 Scancode Map,我这里是将 Number Lock 改为了 Backspace,把 Caps LockInsert 设置为空。
file

下面解释一下怎么编写,每行有 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 00Backspace 的扫描代码是 0x000E,设置的时候要写 0E 00,所以要把 Number Lock 替换成 Backspace 就写 0E 00 45 00
后面设置一样的道理,如果设置成 00 00 就代表为空,按下不会做任何操作
设置完以后,最后要添加 4 列的 00
设置之后,重启系统生效

扫描代码

(1)可以使用 Keyboard Test Utility 研究,有些键有两个的,比如左 Alt 是0x38,那么右Alt就是 0xE038,加上 E0 就行。
file

(2)可以参考微软文档:https://learn.microsoft.com/zh-cn/windows/win32/inputdev/about-keyboard-input

自用的键码映射

按顺序

  • 禁用 Number Lock(固定小键盘作为数字键)
  • Caps Lock 改为 Enter(方便 AutoCAD 命令左手确认,因为空格在有些命令中会变成字符输入,用作确认不方便)
  • Alt 改为 HOME
  • 应用程序键(右 Alt 右侧)改为 END
    file
基于注册表修改键盘映射(修改按键功能或禁用按键)
Scroll to top