Autohotkey AHK中的否定按键

Autohotkey AHK中的否定按键,autohotkey,Autohotkey,我在玩一个游戏,当我同时按下3个按钮时,它会表现出不稳定。我需要将“A S D”按下的结果输入仅为“S” 差不多 #SingleInstance if getkeystate("a") if getkeystate("s") if getkeystate("d") input "s" 一个简单但可能不是很短的热键和它们的up变体的组合就可以做到这一点。此脚本的工作方式与您预期的相同,但仅适用于按钮a和s。按住s时,a不执行任何操作。当未按下s时,a获取其先前状态 #Single

我在玩一个游戏,当我同时按下3个按钮时,它会表现出不稳定。我需要将“A S D”按下的结果输入仅为“S”

差不多

#SingleInstance 
if getkeystate("a") 
if getkeystate("s") 
if getkeystate("d") 
    input "s"

一个简单但可能不是很短的热键和它们的up变体的组合就可以做到这一点。此脚本的工作方式与您预期的相同,但仅适用于按钮
a
s
。按住
s
时,
a
不执行任何操作。当未按下
s
时,
a
获取其先前状态

#SingleInstance, Force
SetBatchLines, -1

global a_down = false
global s_down = false

a::
    a_down = true 
    if( %s_down% = true )
        return
    Send, {a down}
return

a up::
    a_down = false
    if( %s_down% = true )
        return      
    Send, {a up}        
return

s::
    s_down = true
    if( %a_down% = true )
        Send, {a up}
    Send, {s down}
return 

s up::
    s_down = false
    if( %a_down% = true )
        Send, {a down}
    Send, {s up}
return 
本着StackOverflow的精神,我不会发布使用所有三个键的完整脚本。这是留给读者的练习

我需要将“A S D”按下的结果输入仅为“S”

“输入”是指
Send
命令??请看

如果你的任务是像S一样表现A+S,你会使用

a & s::
    send s
return
但你要的是三把钥匙,这需要一些解决办法

#if getKeyState("d")
a & s::
    send s
return
#if

a & s::
    if getkeystate("d")
    {
         send s
    }
return