用热键在自动热键中切换键
所以我试图在一个游戏中自动运行,地图很大,而且我必须跑英里。我想在切换热键(按Ctrl +移+一个或别的东西),请按运行(在比赛,我可以运行W¯¯)。 我试过代码,如:用热键在自动热键中切换键
Pause On
Loop
Send w
+^a::Pause
(也可以按W,但它不能释放)和这样的:
+^a::
toggle := !toggle
while toggle
Send {w down}
(同样的问题)。 这只是我的问题,或者这些代码是错误的?
这是我的股票功能。我通常将它映射到^ W或Q.按w或s将取消它。十分简单。
HoldW(){
SendInput {w up}{w down}
Loop
{
Sleep 100
GetKeyState state, w
if state = u
return
If GetKeyState("s")
{
SendInput {w up}
return
}
}
}
这并不坏,但它有一个可以避免的循环!它也有点过于复杂。 :) – Isti115
嗨Isti115,我同意它似乎过于复杂。我发现没有什么能够让我知道我以后的精确细微行为(主要是它如何关闭)。幸运的是,我没有遇到性能问题,它适用于我尝试的每一款游戏,因此我只需要映射功能的热键。也就是说,我一直在GetKeystate上苦苦挣扎,所以我相信在保持行为的同时还有改进的空间。 –
我也早些时候使用了GetKeyState,但不知何故,我意外地发现,如果按住autohotkey的按键再次被按下并释放,autohotkey将不再尝试按住它。这是一个非常幸运的发现,因为我不再需要编写发布部分! :d – Isti115
+^vk41:: ; shift+ctrl+a
SetTimer, % "SomeLable", % (bToggle:=!bToggle) ? 25:"Off"
KeyWait, % "vk41"
Return
SomeLable:
SendInput, % "{vk57}" ; w
Return
它不起作用。问题是一样的:它开始持有“W”,但它不释放它。 –
我有一个(至少我认为)更简单的解决:)
#NoTrayIcon
ScrollLock::
Input, Key, ,{Enter}
Send, {%Key% Down}
return
按ScrollLock键(我怀疑你使用为别的,否则将其设置到一个免费的关键),然后输入要按下的按钮的名称。
- 如果你想降低单个字符,你只是把它写在
- 对于其他按键,你可以在这里找到的名字:http://www.autohotkey.com/docs/KeyList.htm
- 鼠标:LButton左,RButton右和MButton中间
您用Enter键结束输入,之后程序将按住输入的键。
如果您想“抬起”钥匙,只需按一次,它就不会再被按住。 :)
ps.:I有#NoTrayIcon,因为我在后台运行永久的,但如果你希望能够退出,然后简单地添加这样的事情:
F12::
ExitApp
return
一个傻noob示例,其中F10是切换热键,并且向上/向下状态是变量。变量需要预先声明以给出初始值。
老实说,我期待一个错误消息,但它似乎运行良好。
keystate=down
F10::
Send {w %keystate%}
if keystate = down
SetEnv, keystate, up
else if keystate = up
SetEnv, keystate, down
return
Toggle := 1
Q::Send, % Toggle = 1 ? ("0", Toggle := 0) : ("9", Toggle := 1)
变化q到您的首选热键,并改变“0”和“9”到要通过切换键。确保将你的能力或武器设置为你在“0”和“9”中替换的键。
所以,可以说我有一个主要和次要武器。我将它们绑定到9和0.
我按Q在它们之间循环以进行快速武器切换。或者w/e其他你想要的。
是的代码是错误的,你可能想从这里学习:http://www.autohotkey.com/docs/Tutorial.htm。当在编程环境中使用时,复数代码是“代码”,而不是“代码”。 – this