2

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

[编辑/]
@MCL 好的。我查看了您发布的论坛主题,并尝试了下面的代码,该代码可以正常工作。它以我想要的方式发送键,但每个快捷方式都会触发它后面的所有快捷方式。例如空格+e 触发空格+e、空格+r 和空格。

此外,空格键仍然不起作用。我后来添加了 Space::Space,我只能通过使用 Space+(q, w, e or 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

[/编辑]

4

2 回答 2

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
于 2013-06-02T03:31:31.343 回答
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. 

-来自 SendPlay 的文档

如需进一步了解发送模式设置、权衡和能力,请查看SendMode 的文档


关于 :SetKeyDelay

SendMode Input不会受到以下影响SetKeyDelay

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

--来自 SendInput 的文档


附加信息 :

使用自定义组合(文档) 时需要注意的一件事
(即使用非修饰键进行热键组合):

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

Space:: 
     Send {Space}
return

注意事项:此热键(恢复前缀键的功能)在释放Space时触发。如果在和之间按下任何其他键,它不会触发。Space downSpace up


您的脚本在 Notepad++ 中按预期工作(将发送行替换MsgBox为调试)。

所以这可能是游戏获取 AHK 发送的空格键的问题。

Space尝试通过制作一个简单的脚本进行调试,该脚本除了使用不同的 s 发送到游戏之外什么都不做SendMode

于 2020-08-25T21:16:24.203 回答