【发布时间】:2013-12-15 12:27:29
【问题描述】:
我的问题:
^space & c::
send {F2}
send {Escape}
但它不起作用,我该如何模拟 Ctrl+Space + AlphabeticaklKey ?
【问题讨论】:
标签: autohotkey
我的问题:
^space & c::
send {F2}
send {Escape}
但它不起作用,我该如何模拟 Ctrl+Space + AlphabeticaklKey ?
【问题讨论】:
标签: autohotkey
正如我之前的演讲者所说,这并非易事。这是我的建议,它似乎工作正常:
^space::
Loop {
if(GetKeyState("c")) {
break
}
if(!GetKeyState("CTRL") || !GetKeyState("SPACE")) {
return
}
Sleep, 50
}
msgbox, You have pressed CTRL+SPACE+C
return
代码是不言自明的。当 CTRL + SPACE 被按下时,它会等待直到两者之一被释放或 C 被按下。后者触发实际功能,否则将返回。
我实际上不太喜欢它,因为理论上它在某些情况下可能会失败(例如,当按下 CTRL + SPACE + C 并在执行到达检查 C 状态之前释放;虽然这似乎不太可能)。
还有一种使用#If 的方法。我建议使用它,因为它更复杂和可靠。这是因为它不需要任何循环:
#If GetKeyState("SPACE")
^c::Msgbox, You have pressed CTRL+SPACE+C
#If GetKeyState("c")
^space::Msgbox, You have pressed CTRL+SPACE+C
【讨论】:
据我所知,您只能将两个非热键键与语法组合:
space & c:: msgbox space and c
你可以阅读here
您可以定义两个键的自定义组合(除了操纵杆 按钮)通过在它们之间使用 &。在下面的示例中,您将持有 按下 Numpad0 然后按第二个键触发热键:
Numpad0 & Numpad1::MsgBox 你在按住 Numpad1 的同时按下 小键盘0。 Numpad0 & Numpad2::运行记事本
尝试在space & c & control 或space & ^c 或任何其他组合中使用控件将导致编译错误。
我的建议是不要将这三个键组合在一起。寻找一个纯粹的热键组合或使用另一个或多或少无用的键。
#!c:: windows + alt + cAppsKey & c::请记住,如果您使用普通键作为修饰符,则必须将其重新映射到自身以保留原始功能,例如使用菜单键 (appskey):
AppsKey:: Send {Appskey}
AppsKey & c:: ;do what you want
【讨论】:
实际上有几种方法可以获得帮助。首先,这种语言的作者已经转移到一个新的域ahkscript.org。欢迎在我们的论坛中提出此类问题。我今天正好在浏览这个网站,无意中看到了这个。
如果热键后面有多行代码,则需要在其后面加上回车:
^space & c::
send {F2}
send {Escape}
return
希望有帮助
【讨论】: