1

Тема: AHK: Проблема с залипаниями клавиш

Здравствуйте. Не могли подсказать в чем проблема залипаний горячих клавиш, в частности shift, alt
Фрагмент скрипта:

#If B1
{
vkA2 & vk61:: SendInput  {Ctrl Down}{vk48 Down}                         ;Размер линейный
sleep 100
vkA2 & vk61 up:: SendInput  {Ctrl Up}{vk48 Up}                          ;Размер линейный

vkA2 & vk62:: SendInput  {Ctrl Down}{alt Down}{vk48 Down}               ;Размер паралельный
sleep 100
vkA2 & vk62 up:: SendInput  {Ctrl Up}{alt Up}{vk48 Up}                  ;Размер паралельный

vkA2 & vk63:: SendInput  {Ctrl Down}{shift Down}{vk48 Down}             ;Размер продлить
sleep 100
vkA2 & vk63 up:: SendInput  {Ctrl Up}{shift Up}{vk48 Up}                ;Размер продлить

vkA2 & vk64:: SendInput  {shift Down}{vk48 Down}		                  ;Размер открепить	
sleep 100
vkA2 & vk64 up:: SendInput  {shift Up}{vkР48 Up}		                  ;Размер открепить

vkA2 & vk65:: SendInput  {Ctrl Down}{alt Down}{shift Down}{vk48 Down}   ;Быстрый размер
sleep 100
vkA2 & vk65 up:: SendInput  {Ctrl Up}{alt Up}{shift Up}{vk48 Up} 	      ;Быстрый размер
}
#If
1:: 
B1 := 1
B2 := 0
B3 := 0
B4 := 0
B5 := 0
B6 := 0
B7 := 0
B8 := 0
B9 := 0

return

2

Re: AHK: Проблема с залипаниями клавиш

Например, у вас

vkA2 & vk61:: SendInput  {Ctrl Down}{vk48 Down}
sleep 100
...

Клавиши, которые были переведены в состояние Down так в нём и останутся. Следующая строчка sleep 100 не будет выполнена никогда.
Кроме того, фигурные скобки

#If B1
{
...
}

бесполезны. Использование vk-кодов почти во всех случаях тоже не оправдано, как и использование составной ГК. Вместо

vkA2 & vk61:: SendInput  {Ctrl Down}{vk48 Down}
sleep 100
vkA2 & vk61 up:: SendInput  {Ctrl Up}{vk48 Up}

лучше

^Numpad4::
   Send {Ctrl Down}{vk48 Down}
   KeyWait, Numpad4
   Send {Ctrl Up}{vk48 Up}
Return

или просто

^Numpad4:: Send ^h

И для всех остальных так же.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Проблема с залипаниями клавиш

teadrinker
Спасибо за ответ, исправил  фрагмент кода, так как Вы советовали, но проблема осталась.


#If B1

^Numpad1::
Send {Ctrl Down}{vk48 Down}
KeyWait, Numpad1
Send {Ctrl Up}{vk48 Up}
Return

^Numpad2::
Send {Ctrl Down}{alt Down}{vk48 Down}
KeyWait, Numpad2
Send {Ctrl Up}{alt Up}{vk48 Up}
Return

^Numpad3::
Send {Ctrl Down}{shift Down}{vk48 Down}
KeyWait, Numpad3
Send {Ctrl Up}{shift Up}{vk48 Up}
Return

^Numpad4::
Send {shift Down}{vk48 Down}
KeyWait, Numpad4
Send {shift Up}{vk48 Up}
Return

^Numpad5::
Send {Ctrl Down}{alt Down}{shift Down}{vk48 Down}
KeyWait, Numpad5
Send {Ctrl Up}{alt Up}{shift Up}{vk48 Up} 
Return


#If
1:: 
B1 := 1
B2 := 0
B3 := 0
B4 := 0
B5 := 0
B6 := 0
B7 := 0
B8 := 0
B9 := 0

return

4

Re: AHK: Проблема с залипаниями клавиш

Почему-то строчка KeyWait, NumpadNN в этом случае не срабатывает, точно не могу сказать, почему. Можно вместо этого использовать такой вариант:

^Numpad3::
Send {Ctrl Down}{Shift Down}{vk48 Down}
KeyWait, Ctrl
Send {Shift Up}{vk48 Up}
Return

То-есть, ждать не отжатия Numpad, а отжатия Ctrl.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Проблема с залипаниями клавиш

stealzy пишет:

*

Что за ребусы?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6

Re: AHK: Проблема с залипаниями клавиш

И как вы его используете?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Проблема с залипаниями клавиш

Поздравляю, но как это связано с данной темой?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Проблема с залипаниями клавиш

teadrinker пишет:

Почему-то строчка KeyWait, NumpadNN в этом случае не срабатывает

У меня вроде срабатывает, при отпускании numpad1 появляется msgbox.

^Numpad1::
Send {Ctrl Down}{vk48 Down}
KeyWait, Numpad1
msgbox
Send {Ctrl Up}{vk48 Up}
Return

9

Re: AHK: Проблема с залипаниями клавиш

Так да, а с шифтом нет:

^Numpad1::
Send {Ctrl Down}{Shift Down}{vk48 Down}
KeyWait, Numpad1
msgbox
Send {Ctrl Up}{Shift Up}{vk48 Up}
Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

10

Re: AHK: Проблема с залипаниями клавиш

Похоже на очередной баг.

Numpad1::
Send {Shift Down}
loop
   tooltip % getkeystate("sc4F")   ; Numpad1 or NumpadEnd

11

Re: AHK: Проблема с залипаниями клавиш

Да, странно работает, у меня, если удерживать Numpad1, сначала показывает 0, потом через какое-то время 1.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

12

Re: AHK: Проблема с залипаниями клавиш

А вот так всё время 0:

Numpad1::
loop
   tooltip % getkeystate("sc4F")   ; Numpad1 or NumpadEnd
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: Проблема с залипаниями клавиш

Там похоже NumpadEnd не сразу подхватывается почему-то.

Numpad1::
Send {Shift Down}
loop
   tooltip % getkeystate("Numpad1") "`n" getkeystate("NumpadEnd")

14

Re: AHK: Проблема с залипаниями клавиш

Тоже непонятно, у меня NumLock On, и NumpadEnd вообще не должен определяться.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: Проблема с залипаниями клавиш

Вот так можно:

Numpad1::
wait := 1
Send {Shift Down}
loop
{
   if !wait
      break
}
Send {Shift Up}
msgbox
return

NumpadEnd up::
wait := ""

16

Re: AHK: Проблема с залипаниями клавиш

Да, хорошая догадка, что если NumpadEnd определяется, можно его использовать. Но тогда можно и просто так:

^Numpad1:: Send {Ctrl Down}{Shift Down}{vk48 Down}
*NumpadEnd Up:: Send {Numpad1 Up}{Ctrl Up}{Shift Up}{vk48 Up}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder