1

Тема: Глобальный хук клавиатуры.

Как написать скрипт отлавливающий все нажатия, и добавляющий их в массив?
Мой криво работающий код:

#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()
}