Тема: AHK: Как проверить, нажималась ли другая клавиша между хоткеями?
Есть скрипт, по двойному нажатию заменяющий латинские буквы на турецкие. Например, нажимаю быстро (менее 200 мс между нажатиями) "ss", появляется "ş". Работает, но проблема в том, что если быстро набираю "sos", то тоже срабатывает замена. Нужно отловить условие, что между хоткеями нажималась другая клавиша. Пробовал через A_PriorKey, но она почему-то всегда пустая, хотя по KeyHistory в логе есть промежуточные нажатия.
Код интересующей части скрипта такой:
#MaxThreadsPerHotkey 2
#InstallKeybdHook
#KeyHistory 2
$s::
lang := GetLang()
if (lang <> "English") {
send, ы
return
}
OutputDebug, A_PriorKey: %A_PriorKey%
OutputDebug, A_PriorHotkey: %A_PriorHotkey%
OutputDebug, A_ThisHotkey: %A_ThisHotkey%
KeyHistory
if (A_PriorHotkey <> A_ThisHotkey or A_TimeSincePriorHotkey > 200 or A_PriorHotkey <> A_PriorKey)
{
send, s
return
}
send, {BS}ş
return
Добавил условие A_PriorHotkey <> A_PriorKey, чтобы убеждаться, что не было промежуточных нажатий, но из-за того, что A_PriorKey пустое, вообще не заменяет ничего. Почему может не заполняться A_PriorKey?