关键修饰符的AutoHotKey键组合(重映射)

时间:2013-06-01 17:48:13

标签: keyboard-shortcuts autohotkey

我想在游戏中将三个命令的Ctrl改为空格键但不是因为我无法使用空间进行通信。正常命令是Ctrl + q,Ctrl + w,Ctrl + e,Ctrl + r和Control + RButton(右键)。现在我使用Space :: Ctrl,但是我尝试了不同的解决方案,没有结果。

[EDIT /]
@MCL好的。我查看了您发布的论坛帖子,并尝试了以下代码,其中sorta有效。它按照我想要的方式发送了密钥,但是每个快捷方式都触发了它后面的所有快捷方式。例如,空格+ e触发空格+ e,空格+ r和空格。

此外,Spacebar仍然无效。我稍后添加了Space :: Space,我只能通过使用Space +(q,w,e或r)快捷方式获得文本空间。

SendMode Input
SetKeyDelay ,0,30

#IfWinActive ahk_class RiotWindowClass

Space & q::
            Send {Ctrl down}
            Sleep 30
            Send {q down}
            Sleep 30
            Send {q up}
            Sleep 30
            Send {Ctrl up}

Space & w::
            Send {Ctrl down}
            Sleep 30
            Send {w down}
            Sleep 30
            Send {w up}
            Sleep 30
            Send {Ctrl up}

Space & e::
            Send {Ctrl down}
            Sleep 30
            Send {e down}
            Sleep 30
            Send {e up}
            Sleep 30
            Send {Ctrl up}

Space & r::
            Send {Ctrl down}
            Sleep 30
            Send {r down}
            Sleep 30
            Send {r up}
            Sleep 30
            Send {Ctrl up}

Space & RButton::
            Send {Ctrl down}
            Sleep 30
            Send {RButton down}
            Sleep 30
            Send {RButton up}
            Sleep 30
            Send {Ctrl up}

Space::Space

#IfWinActive

[/编辑]

2 个答案:

答案 0 :(得分:0)

找到它。我需要添加退货。

#NoEnv
SendMode Input
#InstallKeybdHook
#UseHook

#IfWinActive ahk_class RiotWindowClass

Space & q::
            Send {Ctrl down}
            Sleep 30
            Send {q down}
            Sleep 30
            Send {q up}
            Sleep 30
            Send {Ctrl up}
            return

Space & w::
            Send {Ctrl down}
            Sleep 30
            Send {w down}
            Sleep 30
            Send {w up}
            Sleep 30
            Send {Ctrl up}
            return

Space & e::
            Send {Ctrl down}
            Sleep 30
            Send {e down}
            Sleep 30
            Send {e up}
            Sleep 30
            Send {Ctrl up}
            return

Space & r::
            Send {Ctrl down}
            Sleep 30
            Send {r down}
            Sleep 30
            Send {r up}
            Sleep 30
            Send {Ctrl up}
            return

Space & RButton::
            Send {Ctrl down}
            Sleep 30
            Send {RButton down}
            Sleep 30
            Send {RButton up}
            Sleep 30
            Send {Ctrl up}
            return

Space::
            Send {Space}
            return

#IfWinActive

答案 1 :(得分:0)

关于:“空格只能用作文本​​,而不能用作将摄像机置于角色中央的快捷方式。”

尝试使用SendMode Play代替SendMode Input

SendPlay's biggest advantage is its ability to "play back"
keystrokes and mouse clicks in a broader variety 
of games than the other modes. 

-From the documentation for SendPlay

要进一步了解发送模式设置,权衡和功能,请查看the documentation for SendMode


关于:SetKeyDelay

SendMode Input不会受到SetKeyDelay的影响:

Note: SendInput ignores SetKeyDelay 
because the operating system does not support 
a delay in this mode.

-From the documentation for SendInput


其他信息:

使用Custom Combinations (docs)
时要注意的一件事(即,将非修饰键用于热键组合)

当您定义第一个Space & otherkey::时,Space键将成为“前缀键”,这意味着它将失去其本机功能。这需要您在示例中定义的最终热键:

Space:: 
     Send {Space}
return

请注意:发布Space 时,此热键(将功能恢复为前缀键)触发。如果在Space downSpace up之间按下任何其他键,则不会触发。


您的脚本可以在Notepad ++中正常工作(用MsgBox替换发送行以进行调试)。

因此,游戏可能会捡起AHK的已发送空格键。

尝试通过编写一个简单的脚本来尝试调试,该脚本除了使用不同的SpaceSendMode发送到游戏外没有其他作用。