创建计算机解释为真的“假钥匙”?

创建计算机解释为真的“假钥匙”?

解释

好的,这是键盘总体布局的照片。

我想知道的是:是否可以模拟键盘上标准键以外的其他键?例如,我可以欺骗我的电脑,让它认为我的键盘也有3 个额外按键标记FK1、FK2 和 FK3。

这额外的三个键不是字母键,例如主页、插入、向上翻页等。
基本上它们什么都不做,除非被分配做某事。例如,如果我在程序中设置热键以使用FK1,它就会注册它。

为什么?

很高兴你问到这个问题。我玩的游戏叫武装突袭3很多,熟悉这款游戏的人都知道,它会消耗键盘上的几乎每个键。
为了与游戏中的好友交流,我使用 TeamSpeak。我有一个 TeamSpeak 音板,我希望能够使用热键而不是 Alt-Tab 和单击来激活不同的声音,但 ArmA 中我使用的所有模组几乎没有空闲的键。

即使您可以创建这些“假键”,如果它们不在真正的键盘上,您将如何在游戏中使用它们?

好问题
我的键盘是 Logitech G910 Orion Spark,上面有 27 个宏。我假设我可以设置每个宏以在使用过程中调用虚拟键盘按钮。

这读起来可能非常令人困惑,但我尽力了。

Windows 10 专业版(x64)

答案1

当您按下键盘上的某个键时,硬件会生成一个“扫描码”,然后软件会将其解释为某个特定的按键。

重新分配密钥

按键调整允许您通过添加适当的注册表项来重新分配 Windows 从每个扫描码解释的按键。

不幸的是,它不允许您添加额外的假按键。它最接近的功能是允许重新分配某些键盘具有的媒体/网络控制键。它也不允许您分配键盘通常不使用的键代码。因此,如果您使用的是美式键盘,它不会让您分配 Ó 或 £。因此,您仍然只能使用正常的按键字母,您说您已经用尽了。

作假

自动热键允许脚本生成扫描码和不寻常的符号。

每当按下 Win+p 时,此脚本就会生成 £(我从互联网上获取该符号,并将其粘贴到我用来创建脚本的文本编辑器中):

#p::
send, £

根据您的游戏,您可能能够使用这样的脚本将 £ 作为游戏中的键。但是,如果游戏正在等待实际的键盘扫描代码生成,则此方法不起作用。这取决于游戏如何与硬件交互。

幸运的是,AutoHotkey 还可以生成键盘扫描代码。此脚本将在按下 Win+p 时生成一个空格,因为扫描代码 39(十六进制)是空格(请参阅扫描代码列表)。

#p::
send, {sc39}

AutoHotkey 还有另一种生成虚拟键的方法。我还没有研究过它们的区别,但是这个脚本会在按下 win+p 时使用虚拟键生成空格:

#p::
send, {vk20}

该参考列出了所有虚拟键代码,包括许多您尚未使用的非标准键: https://autohotkey.com/board/topic/98757-how-to-create-a-new-virtual-keys/

您可以尝试创建一个脚本,将非标准虚拟键发送到您的游戏。如果游戏注册了它并允许您将其保存在其键盘设置页面中,那么您可能会让它工作。

难题的最后一部分是让 Logitech 宏调用生成虚拟键的 AutoHotkey 脚本。您需要创建一个没有热键的 AutoHotkey 脚本,这样它在运行时就会立即触发 - 例如

send, {vk7B}

或者

send, £

将 *.ahk 文件与 Autohotkey 程序关联,然后获取 Logitech 宏来打开已保存的脚本。

注意:我还没有在任何游戏中测试过这一点。在不同游戏中可能会有不同的结果 - 取决于它们接受的有效输入。在上面的虚拟键链接中,人们正在讨论如何做几乎完全按照你想要做的事情,并且似乎在使用 F13-F24 键时取得了一些成功,所以也许可以先试试这些键。

vk7B    sc58    F12
vk7C    sc64    F13
vk7D    sc65    F14
vk7E    sc66    F15
vk7F    sc67    F16
vk80    sc68    F17
vk81    sc69    F18
vk82    sc6A    F19
vk83    sc6B    F20
vk84    sc6C    F21
vk85    sc6D    F22
vk86    sc6E    F23
vk87    sc76    F24

编辑: 根据评论的要求;创建 F13 的简单脚本可能如下所示:

b::
send, {vk7C}

每次您在此脚本处于活动状态时(在时钟附近的托盘中)按下“b”,都会发送 F13。此脚本将保持活动状态并在您每次按下“b”时运行,直到您将其终止。一旦游戏在按键设置中注册了 F13,请终止此脚本,并制作一个如下脚本供 Logitech 调用:

send, {vk7C}

这个不会保持活动状态,每次调用时它都会运行一次然后结束。

答案2

抱歉回复迟了。我需要访问 F12 之后的功能键,目前的键盘制造商似乎没有考虑到这一点,但使用 AutoHotkey 很容易。我使用它将这些按键作为宏添加到我的鼠标中,否则不支持添加任意键。

z::
send, {F13}
return

x::
send, {F14}
return

c::
send, {F15}
return

v::
send, {F16}
return

b::
send, {F17}
return

n::
send, {F18}
return

m::
send, {F19}
return

l::
send, {F20}
return

k::
send, {F21}
return

j::
send, {F22}
return

h::
send, {F23}
return

g::
send, {F24}
return

相关内容