映射键盘——把 右 Ctrl 键与 Application 键交换位置
市面上的许多笔记本电脑产品的键盘,对于我来说消失了一个满重要的键位Application 键, 这个键的主要作用是弹出一个上下文快捷菜单,可以看作键盘上的鼠标右键。
缺少了这个键有什么影响呢? 一些软件按下 “Shift +F10” 无法弹出快捷菜单,必须按下 Application 键。 对于常用键盘的我来说,丢了这个键,可谓很不方便了。
所以这里介绍一种利用注册表更改键盘映射关系的方法,把键盘右侧的 Ctrl 替换成 Application 键,再把 Application 键替换成右侧 Ctrl 键。
至于为什么要把 Application 替换成右侧的 Ctrl 键呢? 主要考虑到插入 USB 键盘还想有一个右 Ctrl 键。
交换方法
- 把下面的注册表文件内容复制到一个记事本文档中;
- 在 “文件” 菜单中选择 “另存为” 一项, 在文件名 处写上一个名字,后面加上 “.reg”,在文件类型中选择 所有文件 (*.*) 并按下 “保存” 按钮;
- 打开保存的文件,根据提示导入到注册表中,接着重启计算机就可以应用更改了。
Windows Registry Editor Version 5.00
; Right Ctrl key and Application key exchange location.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,5D,E0,1D,E0,1D,E0,5D,E0,00,00,00,00
P.S.: 键盘映射会影响到所有插入的键盘。
原理解释
在 Windows 2000 /XP 以后的 Windows 系统中,自带了一个扫描码映射器。通过扫描码映射器可以把一个键修改成另外一个键。利用它可以纠正键盘上错误的布局、调换两个键位等功能。
关于 扫描码映射器 的配置存储在注册表中的以下项里面: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout。
新建一个名为 “Scancode Map” 的 REG_(little Endian 格式) 的值。 这里注意其类型是 REG_(little Endian 格式)的值, 想存储数值 1, 如果使用 4 字节存储的话,应该写成 01,00,00,00。具体可以查找有关于字节序的资料。
那么 00,00,00,00,00,00,00,00,03,00,00,00,5D,E0,1D,E0,1D,E0,5D,E0,00,00,00,00 又是什么含义呢?
这里我们把 4 字节看作一个组,可以分成下面的几个部分:
组号 | 值 | 含义 |
---|---|---|
1 | 00, 00, 00, 00 | 版本信息,直接全部填写 0 就可以了 |
2 | 00,00,00,00 | Flags 标志, 同上,填 0 |
3 | 03, 00, 00, 00 | 映射数目, 映射的组数 + 最后的一组 0 作为结束符标志 |
4 | 5D, E0, 1D, E0 | 一组映射, 0X5DE01DE0 就是 右 Ctrl (0X5DE0) -> Application 键 (0X1DE0) |
5 | 1D,E0, 5D,, E0 | 另一组映射, 0X1DE05DE0, 反过来, Application 映射到 右 Ctrl |
6 | 00, 00, 00, 00 | 最后一组映射,全部填写 0 作为结束标志 |
参考链接
键盘和鼠标类驱动程序 - Windows drivers | Microsoft Docs