如何在 AutoHotKey 中按下另一个键时暂时使键无效?

如何在 AutoHotKey 中按下另一个键时暂时使键无效?

我正在玩一款节奏游戏,你可以绑定两个键来敲击一个音符(在我的情况下是 LShift 和 LControl),但是它只会在单独敲击音符时记录该音符。我的意思是,如果我按下 LShift,它会保留该音符,但如果我在按下 LShift 的同时按下 LControl,它不会记录第二个音符按下,而是会继续保留第一个音符按下。我需要的是一个 AutoHotKey 脚本,当按下另一个键时,它会使按键无效,即如果按住 LShift,按下 LControl 将使 LShift 无效并按下 LControl。

答案1

尝试这样的操作:

LShift::
    if(GetKeyState("LControl")) {
        Send, {LControl up}
    }
    Send, {LShift down}
return

LShift up::
    if(GetKeyState("LShift")) {
        Send, {LShift up}
    }
return

LControl::
    if(GetKeyState("LShift")) {
        Send, {LShift up}
    }
    Send, {LControl down}
return

LControl up::
    if(GetKeyState("LControl")) {
        Send, {LControl up}
    }
return

我不知道您是否一定需要热键up,但我认为这将使您的脚本更加一致。如果您根本不需要按住这些键,您也可以重新映射相应的键以发送一次(从而产生准同时按下/抬起事件)。

附言:
您的游戏行为是错误还是功能?换句话说:它是否故意不接受新键,而另一个键被按住?如果是这样,您主要是想作弊 ;)

相关内容