AHK Script иногда пропускает комбинацию нажатий клавиш, если нажимается слишком быстро - PullRequest
1 голос
/ 01 марта 2012

У меня есть скрипт autohotkey, который обрабатывает (h, j, k, l) кнопки как (влево, вниз, вверх, вправо), когда нажата CAPSLOCK.

Однако, когда я нажимаю заглавные буквы и кнопку (h, j, k, l) слишком быстро, она просто выводит букву.

Есть ли способ уменьшить это "отставание"?Может ли это быть легко сделано на другом языке, таком как c или c ++?

Я также не уверен, что весь этот код делает, поскольку часть его вырезана из Интернета.

#Persistent
#SingleInstance, Force
SetKeyDelay, -1
CoordMode, Tooltip, Screen
modal =
context =
num =

SetTimer, vim, 100

; Disable CAPSLOCK
$CAPSLOCK::
return

$+CAPSLOCK::
return


vim:
While GetKeyState("CAPSLOCK", "P")
{
    vimize()
    if modal !=
      Tooltip, %context%: %num%, 60, 10
    else if num !=
      Tooltip, %num%, 60, 10
    else
      Tooltip
    SetTimer, vim, off
} 
modal =
num =
unvimize()
SetTimer, vim, on
Tooltip
Return

vimize()
{
  Gui 11:Show, Minimize, vimOn ; Hide,
}

unvimize()
{
  Gui 11:Destroy
}   

#IFWinExist vimOn

h::Send, {Left}
j::Send, {Down}
k::Send, {Up}
l::Send, {Right}

; ===== SubRoutines =====

GetLineSelection:
   Send, {Home}{Shift Down}{End}{DOWN %num%}{Home}{Shift Up}
Return

Run_Mode:
   Send, ^%modal%
   ;Send {Left}{RIGHT}
   num =
   modal =
return

1 Ответ

0 голосов
/ 04 марта 2012

Я не смог найти способ улучшить производительность, но я переписал весь скрипт, и теперь он работает без нареканий.

В этот раз я использовал suspend.

Suspend On

;===Navigate
h::Left
j::Down
k::Up
l::Right

; === Другие функции и полный код здесь

CapsLock::Suspend Off
CapsLock Up::Suspend On

Это сделало его намного быстрее и плавнее.

...