2012-12-06 114 views
3

我有两个键盘连接到我的电脑。普通的全尺寸键盘和数字小键盘。我想“重新映射”数字小键盘上的按键,但只留下全键盘。所以,当用户在键盘上按下“5”时,它将被重新映射到“媒体播放”键,但是如果在全键盘的键盘上按下相同的“5”,我会得到“5”。实质上,我想将单独的数字键盘变成媒体控制设备。你可以重新映射特定键盘的键吗?

不幸的是我不知道如何使这项工作。 Windows有一个“原始输入”功能,可以区分键盘,但只允许读取键 - 不能重新映射它们。键盘挂钩(低级别和高级别)可以重新映射按键,但不区分键盘。

我可以结合使用这两种方法吗?为此,我必须确保原始输入消息在键盘钩开始前处理。是这样吗?

另外,我读过Windows出于某种原因不允许在同一个进程中使用Raw Input和Keyboard Hooks。我可以通过创建2个不同的进程来解决这个问题,但由于通信延迟(键盘挂接的时间非常有限,他们必须完成他们的工作)而变得更加脆弱。

这样可以吗?

回答

2

最后事实证明,我需要一个自定义键盘驱动程序来实现这一点。幸运的是,我发现一个准备好 - Interception。该应用程序已准备好,并完美运作。 :)

+0

这是应用公开?这听起来非常有用 – Yary

+0

@Yary - 不,我没有发表过,但需要很多擦亮才能对其他人有用,我已经硬编码了我的键盘硬件ID和密钥映射。 ,如果你想适应自己的需要,你可能只需从头开始编写一个。 –

+1

@Yary - 如果你想要它,那么你可以去http://valts.21.lv/Mediaception.zip 。请记住,您还需要安装驱动程序,您可以从该驱动程序下载上面的拦截网站。 –

0

我觉得luamacros(以前hidmacros可以做你想做什么,有可用的源代码。

+0

我不太确定。我无法真正制作存储库的正面或反面,但我看到了键盘挂钩和原始输入的痕迹。如问题所述,这两种技术无法达到预期的效果。 –