我的问题:
^space & c::
send {F2}
send {Escape}
但它不起作用,我如何模拟 Ctrl + Space + AlphabeticaklKey?
答案 0 :(得分:6)
正如我之前的发言者所说,它不能轻易完成。这是我的建议,似乎工作正常:
^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
答案 1 :(得分:1)
据我所知,您只能将两个非热键与语法结合使用:
space & c:: msgbox space and c
您可以阅读here
您可以定义两个键的自定义组合(操纵杆除外) 按钮)使用&它们之间。在下面的例子中,你会持有 按下Numpad0,然后按第二个键触发热键:
Numpad0& Numpad1 :: MsgBox按住Numpad1的同时按下了Numpad1 NUMPAD0。 Numpad0& Numpad2 ::运行记事本
尝试使用控件以及:space & c & control
或space & ^c
或任何其他组合都会导致编译错误。
我的建议是你不要将这三个键组合在一起。寻找纯热键组合或使用其他或多或少无用的键。
#!c::
windows + alt + c AppsKey & c::
请记住,如果您使用普通键作为修改器,则必须将其重新映射到自身以保留原始功能,例如使用菜单键(appskey):
AppsKey:: Send {Appskey}
AppsKey & c:: ;do what you want
答案 2 :(得分:1)
实际上有几种方法可以获得帮助。首先,该语言的作者已转移到新域ahkscript.org。欢迎在我们的论坛中提出类似这样的问题。我今天碰巧正在挖掘这个网站并偶然看到了这个。
当您在热键之后有多行代码时,您需要返回一个代码:
^space & c::
send {F2}
send {Escape}
return
希望有所帮助