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

看板EzHotKey作者 (octō)時間10年前 (2015/06/01 23:32), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/4 (看更多)
※ 引述《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 -- (* ̄▽ ̄)/‧★*"`'*-.,_,.-*'`"*-.,_☆,.-*` http://i.imgur.com/oAd97.png
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.78.17 ※ 文章網址: https://www.ptt.cc/bbs/EzHotKey/M.1433172775.A.676.html

06/02 15:45, , 1F
我直接COPY 但是i按了沒有反應...
06/02 15:45, 1F
文章代碼(AID): #1LR7idPs (EzHotKey)
討論串 (同標題文章)
文章代碼(AID): #1LR7idPs (EzHotKey)