我正在寻找使用AutoHotKey来修改我的Shift键的功能。该功能在Steve Losh的Blog条目here中进行了描述。具体来说,我希望我的shift键能够执行以下操作:


如果在300毫秒内按下并释放LShift或RShift,并且之间没有按下其他键,请分别发送()
如果LShift和RShift在300ms内“滚动”在一起(按LShift,按RShift,释放LShift,释放RShift等),则发送())(
如果不正确使用Shift键(LShift和S,RShift和K等),则不会发生任何事情。


我一直对300ms要求和“滚动”功能有疑问。具体来说,由于热键组合,我只能检测何时释放键,这是一个问题:

LShift &  0:: return


这是我到目前为止的位置:

LShift::
    Send {LShift Down}
    KeyWait, LShift
    Send {LShift Up}
    if (A_TimeSinceThisHotkey < 300){
        if (A_PriorKey = "LShift")
        {
            Send {)}
        }
    }
return

最佳答案

无论如何,我都看不出使用300毫秒超时的理由,这似乎是不可靠和不必要的。
看一下这段注释过的代码,它简短高效,似乎可以满足您的所有要求:

LShift::Send, (
RShift::Send, )
LShift & RShift:: Send, ()
RShift & LShift:: Send, )(

/* Put your unwanted combinations here
 * and let them do nothing
*/
LShift & q::return
RShift & y::return


编辑:
由于LShift和RShift已经是前缀热键,因此我省略了here中描述的技巧。

10-07 18:27