あまりロジックの話をしても興味のない方が多いと思うのですが、少し詰まったので書いておきます。
意図しない同時押しを防ぐため、文字キーによる連続シフトを抑止したいと考えました。通常ahkでキーが離されたのを確認するには、KeyWaitを使用します。
KeyWait - AutoHotkey Wiki
複数のキーが指定の状態になるのを待たせたい場合は、複数のKeyWaitを連続して実行すればよい
と記載がありますが、これだと同時押しされた両者のキーが離されるのを待つことになります。どちらか一方を待つにはどうすればよいでしょうか。いくつかコードは見つかったのですが自分で書きました。実際に採用したコードよりシンプルにしています。
w & j:: If GetKeyState("w", "P") and GetKeyState("j", "P"){ Loop{ If GetKeyState("w", "P") and !GetKeyState("j", "P"){ Msgbox,1 Return } Else{ If !GetKeyState("w", "P") and GetKeyState("j", "P"){ Msgbox,1 Return } } } } Return