Тема: AHK: Залипание клавиши после нажатия другой в теле одного скрипта.
Здравствуйте, подскажите, в чём причина "залипания" горячих клавиш при работе вот этого скрипта:
#UseHook, On
;---mode switcher
RAlt & F9::
If fmsw
{
fmsw = 0
fmode = 0
}
Else
{
fmsw = 1
fmode = 1
}
Exit
;---forward
vk57:: ; w
If (fmode = 1)
{
SendInput, {vk45 Down} ; e
KeyWait, vk57
SendInput, {vk45 Up}
}
Else
{
SendInput, {vk57 Down}
KeyWait, vk57
SendInput, {vk57 Up}
}
Return
;---back
vk53:: ; s
If (fmode = 1)
{
SendInput, {vk51 Down} ; q
KeyWait, vk53
SendInput, {vk51 Up}
}
Else
{
SendInput, {vk53 Down}
KeyWait, vk53
SendInput, {vk53 Up}
}
Return
;---turn right
vk45:: ; e
If (fmode = 1)
{
SendInput, {vk4e Down} ; n
KeyWait, vk45
SendInput, {vk4e Up}
}
Else
{
SendInput, {vk45 Down}
KeyWait, vk45
SendInput, {vk45 Up}
}
Return
;---turn left
vk51:: ; q
If (fmode = 1)
{
SendInput, {vk4d Down} ; m
KeyWait, vk51
SendInput, {vk4d Up}
}
Else
{
SendInput, {vk51 Down}
KeyWait, vk51
SendInput, {vk51 Up}
}
Return
;---right strafe
vk44:: ; d
If (fmode = 1)
{
SendInput, {vk42 Down} ; b
KeyWait, vk44
SendInput, {vk42 Up}
}
Else
{
SendInput, {vk44 Down}
KeyWait, vk44
SendInput, {vk44 Up}
}
Return
;---left strafe
vk41:: ; a
If (fmode = 1)
{
SendInput, {vk56 Down} ; v
KeyWait, vk41
SendInput, {vk56 Up}
}
Else
{
SendInput, {vk41 Down}
KeyWait, vk41
SendInput, {vk41 Up}
}
Return
#UseHook, Off
При включении одного из режимов на RAlt+F9 изменяются функции горячих клавиш, и всё вроде-бы работает, но если нажать и удерживать одну из горячих клавиш и нажимать другие, то первая (и все последующие) при её физическом отпускании продолжает работать пока не будет отпущена горячая клавиша нажатая последней. Как этого избежать?