你能重新映射特定键盘的按键吗?

14
我有两个键盘连接到我的电脑上:一个标准的全尺寸键盘和一个数字键盘。我想“重新映射”数字键盘上的按键,但不影响整个键盘。因此,当用户在数字键盘上按下“5”时,它会被重新映射为“媒体播放”键,但如果在全尺寸键盘上按下相同的“5”,我将得到一个“5”。实质上,我想把那个单独的数字键盘变成一个媒体控制设备。
不幸的是,我不知道如何做到这一点。Windows 有一个“原始输入”功能,可以区分键盘,但只能读取按键 - 不能重新映射它们。有键盘钩子(低级和高级)可以重新映射按键,但它们不能区分键盘。
我可以让这两种方法结合起来吗?为此,我必须确保原始输入消息在键盘钩子启动之前被处理。是这样吗?
此外,我已经了解到,由于某种原因,Windows 不允许在同一进程中使用原始输入和键盘钩子。我可以通过创建两个不同的进程来解决这个问题,但这会因通信延迟而变得更加脆弱(键盘钩子必须在非常有限的时间内完成它们的工作)。
这真的可行吗?
3个回答

8

最终结果表明,我需要一个自定义的键盘驱动程序才能实现这一点。幸运的是,我找到了一个可供使用的 - Interception。该应用程序已经准备就绪,并且工作得非常完美。 :)


1
@Yary - 如果您还需要,这是链接:http://valts.21.lv/Mediaception.zip。请记住,您还需要安装驱动程序,您可以从上面提到的Interception网站下载。 - Vilx-
2
我发现了另一个使用Interception驱动程序的项目,并发现它需要编写.ini样式配置所需的信息,非常方便,我只用了大约半个小时就可以运行起来了。拦截器多键盘重映射二进制和源代码在这个_Orbiter_论坛帖子上,下载需要在他们的论坛上注册。 - Yary
2
这些孩子们啊!你需要使用命令行并运行 install-interception.exe /install - Vilx-
1
@5Diraptor - 这就是我想要在PC上使用软件解决方案的原因 - 因为我认为这是最简单的方法。原则上已经有足够的信息来完成这个任务 - 问题只是操作系统是否支持这种方式。也许Linux有更好的设施?我不知道。 - Vilx-
1
@5Diraptor,我实际上放弃了这种方法,但我仍然认为它是可行的。我只是没有时间再投入其中了。其背后的想法是拥有一个驱动程序,可以覆盖特定UID的USB设备的默认浏览器。在中间加入一个设备也是一个有效的解决方案,但需要硬件支持。 - Rodrigo Borba
显示剩余19条评论

4
我想要扩展Vilx的答案,因为我多次回顾了这篇文章,直到现在我才成功地重新映射了我的第二个键盘,使键位独立。这是使用Interception和Intercept一起完成的,这是我目前唯一能够成功实现的解决方案。
我还在研究使用树莓派来重新映射第二个键盘。虽然现在还处于早期阶段,但我认为这是可以实现的:将键盘插入Pi,将Pi插入PC,并编写脚本将输入键码转换为自定义输出命令/键码。测试后会进行更新。
我的可行Intercept解决方案完全基于TaranVH的Github教程,迄今为止这是最好的过程。我复制了他的解决方案并进行了一些修改。
下载Interception:
1.导航到此页面:https://github.com/oblitum/Interception 2.单击“下载最新版本”。
3.单击Interception.zip以下载它。
4.将文件解压缩到计算机上的一个文件夹中-我建议使用永远不会移动的文件夹位置。我将我的Interception文件夹放在C:\ Program Files \中,我将在我的示例中使用此位置。
安装Interception:
1.以管理员身份打开终端,然后键入“cd” C:\ Program Files \ Interception \命令行安装程序“。
2.按Enter键。
3.现在,正如所示,键入以下文本行:install-interception.exe / install
4.按Enter键。
一旦程序成功安装,您仍然必须重新启动计算机才能完成安装。
(如果您想要卸载拦截,请观看此视频):https://www.youtube.com/watch?v=Hn18vv--sFY 安装Intercept-(这与拦截不同!)
  1. 从以下位置之一下载Kamaz的intercept.exe zip文件:

    1. http://octopup.org/img/code/interception/intercept.zip
    2. https://github.com/TaranVH/2nd-keyboard/blob/master/Intercept/intercept.exe
  2. 如果是.zip文件,请解压缩并找到intercept.exe

  3. 为了将这些文件放在一个地方,我将intercept.exe移动到C:\Program Files\Interception\中

  4. 重新启动系统。

设置Intercept

  1. 插入第二个键盘并确保其正常工作。
  2. 转到保存intercept.exe的位置,并双击打开。
  3. Intercept将作为终端打开,在那里您应该有基本的说明来开始重新映射键盘。

  1. 输入a以添加按键。

  2. 在SECONDARY键盘上,按一次Q键。(这是您要重新映射的键)

  3. 您将收到“为此触发器输入组合键,以ESC结束”的提示。

  4. 仔细执行以下按键(不管哪个键盘):Win + E (即:按住Windows键并同时按字母E。我发现您需要快速而准确地执行此操作,如果按住时间过长,将添加额外的按键)

  5. 当我这样做时,终端中会显示:[左Windows]↓ [E]↓ [E]↑ [左Windows]↑

  6. 按Esc,您将被提示标记脚本

  7. 我将其标记为Q->WinE,以便知道它在做什么。

  8. 按Enter接受标签

  9. 按S保存过滤器,或按C取消(如果出错)

  10. 添加更多过滤器或关闭终端。

使用Intercept

现在您已经设置了自定义键命令,您需要应用过滤器才能使用它。

  1. 打开 intercept.exe
  2. 按下 Y 应用过滤器,你会收到过滤器已激活的确认信息。
  3. 现在,当你在你的第二个键盘上按下 Q,Intercept 将把命令更改为 Win+E,这将打开文件浏览器。

注意:


-3

不幸的是,这会重新映射所有连接的键盘的键。完全不是我想要的。 :( - Vilx-

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接