我尝试根据 Microsoft 的文档在 win10 中将我的 A4Tech kv-300 USB 键盘上的总共十二个Fn
+组合键(如+ )映射到其他键(如键),但失败了,尽管其他映射(如映射到)可以工作。Fx
Fn
F12
enter
alt
enter
根据微软的文档关于键盘和鼠标类驱动程序的配置,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout\Scancode Map
可以使用注册表值来重新映射键。我测试了该文档中的演示,一切正常。
然后我尝试将Fn
+映射Fx
到enter
。作为示例,我将按顺序解释我对Fn
+所做的尝试。F12
Fn
识别+的扫描码F12
。Fn
A4Tech kv-300键盘上的+键功能F12
是在IE浏览器中打开/关闭收藏夹,而微软的文档中关于收藏夹的条目只有一个USB HID 到 PS/2 扫描码转换表,列于关于 RAWKEYBOARD 结构的备注根据该表,的扫描码WWW Favorites
为 0xE066。我还通过Fn
+进行了测试F12
AutoHotkey 脚本,显示Fn
+的扫描码F12
为 0x166,在 AutoHotkey 中表示为 0xE066。编辑注册表
Scancode Map
。我将注册表项更改
Scancode Map
为这Fn
。重启后,没有任何变化。 +的功能F12
仍然是在IE浏览器中打开/关闭收藏夹。上面的AutoHotkey脚本显示Fn
+的扫描码F12
仍然是0xE066。
Fn
我还尝试了其他 11 个组合键+的相同方法Fx
。在所有这些情况下,更改注册表项Scancode Map
都没有任何区别。所有这些组合键仍然执行与以前相同的工作,而不是执行enter
工作。
然后我得到了几个问题。
是否可以通过注册表将
Fn
+映射Fx
到enter
Win10 中 A4Tech kv-300 键盘上的任何其他键?如果可以,怎么做?如果不可能,为什么?有没有独立于第三方应用程序的替代方案?Fn
A4Tech kv-300 键盘上的+扫描码F12
是否仍为 0xE066?根据其功能和上面的 AutoHotkey 脚本,我猜是的。如果是,为什么更改注册表没有区别?或者 A4Tech kv-300 键盘可能根据以下说明在我的 win10 操作系统上安装了某些特殊驱动程序微软的文档?
编辑:
Fn
我终于明白了我的 USB 键盘 kv-300 上的+发生了什么Fx
,以及为什么注册表对它们不起作用。
我猜。
根据微软的文档键盘和鼠标 HID 客户端驱动程序USB键盘传输的HID Usage ID有两种可能的流向,一种是
hidclass.sys --> kbdhid.sys --> kbdclass.sys
标有“键盘”,另一个是
hidclass.sys --> hidserv.dll
标有“热按钮”。只有通过
kbdhid.sys
,即第一种方式,HID 使用 ID 才能转换为 PS/2 Set 1 代码,即可以通过上述注册表重新映射的扫描代码。所以我认为我的键盘传输的Fn
+的 HID 使用 IDFx
可能以第二种方式流动并被处理为“热按钮”,这意味着它们hidserv.dll
直接流向而不被转换为扫描代码,导致上述注册表无法干预并且不起作用。印证了我的猜测。
在设备管理器中,我找到了我的 kv-300 键盘设备,
Keyboards\HID Keyboard Device
其“驱动程序详细信息”显示两个依赖驱动程序kbdhid.sys
和kbdclass.sys
。卸载此设备后,我键盘上的所有键(包括组合键)都不再起作用,除了所有Fn
+Fx
组合键。这意味着所有Fn
+Fx
组合键都不能像上面那样以第一种方式流动,因此它们只能以第二种方式流动。
所以我的问题改为:
- 如何无需任何第三方应用程序将以前以第一种方式传输的键盘信号重定向至上述第二种路径?
- 如果这不可能,那么是否有可能像上面一样在没有任何第三方应用程序的情况下手动操作“热键”路径?如果可以,那么如何将组合键
Fn
+映射Fx
到其他键?