Тема: AHK: Отключение при отжатии модификаторов shift, alt, ctrl в скрипте
Доброго времени суток. Купил у человека скрипт для игры. Функционал простой, он спамит зажатую мной кнопку. Почти сразу столкнулся с проблемой, при использовании модификаторов. Зажимаю кнопку 1, идет заспам, зажимаю 2 не отпуская 1, скрипт переключается и идет заспам 2, отпускаю 2, возвращается спам 1. Но если жать shift+1 и отпустить shift чуть раньше 1, то скрипт начинает спамить 1, и это полностью ломает смысл использования. Обратился к человеку, он сказал, что это работает так и никак иначе. Возможно ли сделать так, чтобы при отпускании shift, alt, ctrl кнопка в сочетании с которой они были нажаты не начинала заспам, а скрипт останавливался, до новой команды?
#InstallKeybdHook
#InstallMouseHook
isInUse = 0
delay = 80
RepeatPress( key ) {
global isInUse
global delay
loop {
if not GetKeyState( key, "P" ){
break
}
if not isInUse {
Send, {%key%}
}
sleep delay
}
return
}
RepeatPressCtrl( key ){
global isInUse = 1
global delay
loop {
if not GetKeyState( key, "P" ) {
isInUse = 0
break
}
if GetKeyState( "Ctrl", "P" ) {
Send, ^{%key%}
}
sleep delay
}
return
}
RepeatPressShift( key ) {
global isInUse = 1
global delay
loop {
if not GetKeyState( key, "P" ) {
isInUse = 0
break
}
if GetKeyState( "Shift", "P" ){
Send, +{%key%}
}
sleep delay
}
return
}
RepeatPressBlind( key, special_delay ) {
global delay
loop {
if not GetKeyState( key, "P" ) {
break
}
Send, {Blind}{%key%}
;sleep delay
sleep special_delay
}
return
}
RepeatPressRedirect( holdKey, sendKey ) {
global delay
loop {
if not GetKeyState( holdKey, "P" ) {
break
}
Send, {Blind}{%sendKey%}
sleep delay
}
return
}
#IfWinActive, World of Warcraft
~Enter::Suspend
#IfWinActive
*Pause::Suspend
;~Enter::Suspend
F1::RepeatPressBlind( "F1", delay )
F2::RepeatPressBlind( "F2", delay )
F3::RepeatPressBlind( "F3", delay )
F4::RepeatPressBlind( "F4", delay )
F5::RepeatPressBlind( "F5", delay )
F6::RepeatPressBlind( "F6", delay )
F7::RepeatPressBlind( "F7", delay )
F8::RepeatPressBlind( "F8", delay )
*1::RepeatPressBlind( "1", delay )
*2::RepeatPressBlind( "2", delay )
*3::RepeatPressBlind( "3", delay )
*4::RepeatPressBlind( "4", 10 )
*5::RepeatPressBlind( "5", delay )
*6::RepeatPressBlind( "6", delay )
*7::RepeatPressBlind( "7", delay )
; *8::RepeatPressBlind( "8", delay )
; *9::RepeatPressBlind( "9", delay )
; *0::RepeatPressBlind( "0", delay )
*q::RepeatPressBlind( "q", delay )
; *s::RepeatPressBlind( "s", delay )
*e::RepeatPressBlind( "e", delay )
*r::RepeatPressBlind( "r", delay )
*t::RepeatPressBlind( "t", 160 )
*y::RepeatPressBlind( "y", delay )
*f::RepeatPressBlind( "f", delay )
*g::RepeatPressBlind( "g", delay )
*h::RepeatPressBlind( "h", delay )
*z::RepeatPressBlind( "z", delay )
*x::RepeatPressBlind( "x", delay )
*c::RepeatPressBlind( "c", delay )
*v::RepeatPressBlind( "v", delay )
*b::RepeatPressBlind( "b", delay )
; *n::RepeatPressBlind( "n", delay )
