Re: [AHK-] 請問如何解決keywait中斷卡住key的狀況?

作者: eight0 (欸XD)   2015-06-01 23:32:51
※ 引述《bodhi (????)》之銘言:
: 舉例: i就是123 o是5 快速按下i o時 i的123只出來12
: 然後就被5中斷 由於o是keywait 所以o沒放開 不但3出不來
: 而且i無法再輸入 完全卡住 請問要如何解決這種衝突狀況?
: 1. 能不能讓3照預定程序輸入 或是有沒有辦法直接取消掉?
: 2. keywait按住之下 如何讓卡住的key恢復功能?
AHK 的 threads 並不是真的 multithread
https://www.autohotkey.com/docs/misc/Threads.htm
當你按下 i 鍵,執行到一半時,再按下 o 鍵,
這時 i 鍵的 thread 會被暫停,並進入 o 鍵的 thread;
必須等到 o 鍵的 thread 結束後,才會返回剛才 i 鍵的中斷點
所以 12 印一半被 o 中斷後,必須等 o 放開才會印出 3
並且因為 i 鍵的 thread 還沒結束,你再按下 i 鍵也不會再印出 123
推文提到的 #MaxThreadsPerHotkey 2 是讓每個熱鍵 thread 上限變成 2
若加上了,會變成 5 鍵多送出一次,然後又在 KeyWait 的地方卡住
假設你的需求是
* 按住 i 鍵時重覆送出 123
* 按住 o 鍵時送出一次 5 down,直到放開再送出 5 up
我會這樣寫︰
i::
while (GetKeyState("i")) {
sleep 10
send {1 down}
sleep 10
send {1 up}
sleep 10
send {2 down}
sleep 10
send {2 up}
sleep 10
send {3 down}
sleep 10
send {3 up}
}
return
o::
if (!GetKeyState("5")) {
send {5 down}
}
return
o up::
send {5 up}
return
作者: bodhi (????)   2015-06-02 15:45:00
我直接COPY 但是i按了沒有反應...

Links booklink

Contact Us: admin [ a t ] ucptt.com