Тема: Глобальный хук клавиатуры.
Как написать скрипт отлавливающий все нажатия, и добавляющий их в массив?
Мой криво работающий код:
#SingleInstance force
#SingleInstance, force
#NoEnv
Process, Priority, , H
SetBatchLines, -1
global key_seq := []
global pressed_keys := {}
ih := InputHook("L0")
ih.KeyOpt("{All}", "NS")
ih.OnKeyDown := Func("OnKey").bind("Down")
ih.OnKeyUp := Func("OnKey").bind("Up")
ih.OnEnd := Func("OnEnd")
ih.Start()
return
OnKey(direction, InputHook, vk) {
key_code := Format("vk{:X}", vk)
key_name := GetKeyName(key_code)
key_with_direction := "{" . key_name . " " . direction . "}"
i := key_seq.MaxIndex()
if (direction == "Down" and key_with_direction != key_seq[i] and not pressed_keys[key_name])
{
key_seq.Push(key_with_direction)
pressed_keys[key_name] := true
}
else if (direction == "Up")
{
key_seq.Push(key_with_direction)
pressed_keys[key_name] := false
}
InputHook.Stop()
Send {%key_code% %direction%}
i := key_seq.MaxIndex()
tooltip % key_seq[i-2] . key_seq[i-1] . key_seq[i]
}
OnEnd(InputHook) {
InputHook.Start()
}