※ 引述《eight0 (octō)》之銘言:
: ※ 引述《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
我主要用keywait是因為希望主體只執行一次 因為要按住o 所以沒有keywait的話
會重複執行 又希望不要影響到其他key的長指令輸入
我現在想用外部宣告flag=1來當判斷式 然後執行後flag=0 這樣按住也不會重複執行
就可以不使用keywait 但是問題來了 flag似乎無法在key::之外獨立先行宣告
我找不到方法可以在開autohotkey時 不用按其他多餘的key 就自動宣告這個變數
ahk有辦法直接初始化宣告變數嗎? 就是在使用任何熱鍵之前
我找到的相關說明 都是在函式 或是{}執行中才宣告 這樣要多按一個"宣告鈕"-.-