※ 引述《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有办法直接初始化宣告变量吗? 就是在使用任何热键之前
我找到的相关说明 都是在函式 或是{}执行中才宣告 这样要多按一个"宣告钮"-.-