2つのキーのいずれかをリリースするためのAutohotkey Keywait


0

Autohotkeyでは、「KeyWait」を使用してキーが押されるか、リリースされるのを待つことができますが、2つのキーのいずれかがリリースされるのを待ちたい場合はどうすればよいですか?

私はこれをウェブで見つけましたが、2つのキーのいずれかが押されるのを待ちたいときです

LButton & XButton1::
Keywait, r
Keywait, LAlt
SendInput {ShiftDown}
SendInput {v Down}
SendInput {v Up}
SendInput {Shift Up}

Input, UserInput,v,{LButton}{XButton1}
;v is if you want input to be visible
if ErrorLevel=EndKey:LButton
{
    theFunctionIrunAlltheTime()
    Return
}
else if ErrorLevel=EndKey:XButton1
{
    theFunctionIrunAlltheTime()
    Return
}

どのボタンがリリースされても同じことをしたいのですが、上記の例はボタンではなく文字でのみ機能すると思いますが、ここで重要なことは、スクリプトが実行されるまでにLButton n XButton1がすでに押されていることですそして、それらのいずれかがリリースされたことをサブルーチンの途中で検出したいのですが、アイデアはありますか?おかげでadavanced。

回答:


0

これも試してください:

~LButton & XButton1::
SetTimer detect_key_released, 50
; do sth
return

    detect_key_released:
If !GetKeyState("LButton", "P")
{
    SetTimer detect_key_released, off
    MsgBox LButton released
    return
}
If !GetKeyState("XButton1", "P")
{
    SetTimer detect_key_released, off
    MsgBox XButton1 released
    return
}
return

はい、うまくいきましたが、これを確認してください。superuser.com/questions/1177548/...
litu16

2
While GetKeyState("LButton") && GetKeyState("XButton1")
    Sleep 10

; msg to user assumes only one or the other was released...
MsgBox % (GetKeyState("LButton") ? "XButton1" : "LButton") " Released"

おかげでJJohnston2、ループを使用してそれを行うことはできませんか?ところで、この質問を見てください。おかげで高度。superuser.com/questions/1177548/...
litu16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.