Тема: AHK: Длинная горячая клавиша
Следующий хоткей работает когда как или вообще залипает, не могу понять в чём проблема
RAlt::
Send,+^{Left}
Send,^!{1}
может синтаксис неправильный?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Следующий хоткей работает когда как или вообще залипает, не могу понять в чём проблема
RAlt::
Send,+^{Left}
Send,^!{1}
может синтаксис неправильный?
Return надо в конце поставить, а в остальном всё правильно.
Клавиша посылает сама себя ( Send,^!{1} ) и, возможно, зацикливается. Чтобы этого избежать, нужно перед названием горячей клавиши поставить префикс $:
$RAlt::
Send,+^{Left}
Send,^!{1}
Return
Заменил RAlt на F1, вообщем хоткей работает но теперь залипает Ctrl, добавил Send, {Ctrl} в конце, чтобы не залипало, вроде помогает.
F1::
Send,+^{Left}
Send,^!{1}
Send, {Ctrl}
Return
Но почему вообще залипает Ctrl, вроде ничего сложного?
У меня ничего не залипает, вроде, даже без Send, {Ctrl}.
Значит проблема как всегда с моей стороны, прошу прощения. Спасибо за внимание!
Попробуйте использовать SendInput либо SendPlay:
F1::SendInput +^{Left}^!{1}
FixBugUnpressKeys() {
Static ArrayKeys
ArrayKeys:=Object()
ArrayKeys:=["RCtrl", "LCtrl", "LShift", "RShift", "RAlt", "LAlt"]
i:= ArrayKeys.MaxIndex()
Loop %i%
{
Key:=ArrayKeys[A_Index]
GetKeyStatePhys := GetKeyState(Key, "P")
GetKeyStateLogi := GetKeyState(Key)
DiffKeyState := GetKeyStateLogi-GetKeyStatePhys
if DiffKeyState {
Direction := (DiffKeyState=1) ? "Up" : "Down"
SendInput {%Key% %Direction%}
MsgBox %Key% will be not %Direction%. I fix it.
}
}
}
Вставлять после Send.
stealzy, а если из 'функции проверки на залипание' убрать все лишние переменные и подсократить код?
Текст в MessageBox тоже весьма странный, наверное какое-то авторское видение англ. языка.
FixBugUnpressKeys() {
for key, key in ["RCtrl", "LCtrl", "LShift", "RShift", "RAlt", "LAlt"]
if Direction := ["Down",0,"Up"][2+GetKeyState(Key)-GetKeyState(Key, "P")]
SendInput {%Key% %Direction%}
}
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться