1 (изменено: gmxardas, 2012-11-09 21:08:24)

Тема: AHK: Пауза в повторе.

Переделал простенький скрипт для спама кнопки

*F::
Loop
{
GetKeyState, state, F, p
if state = U
break
; Otherwise:
Send, {F}
Sleep, 25
}

Как сделать так, чтобы при зажатом Shift или Ctrl спам прекращался, и кнопка считалась удерживаемой?

2

Re: AHK: Пауза в повторе.

Попробуй использовать это:

+vk46:: ; Shift+F
^vk46:: ; Ctrl+F
SendInput,{vk46 down} ; нажать и держать кнопку F
Return
Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

3

Re: AHK: Пауза в повторе.

gmxardas, ознакомься с этой темой, отредактируй заголовок.

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

4

Re: AHK: Пауза в повторе.

Alectric пишет:

Попробуй использовать это:

+vk46:: ; Shift+F
^vk46:: ; Ctrl+F
SendInput,{vk46 down} ; нажать и держать кнопку F
Return

Возможно я сделал что-то неверно, но с запуском скрипта:

*F::
Loop
{
GetKeyState, state, F, p
if state = U
break
; Otherwise:
Send, {F}
Sleep, 25
+vk46:: ; Shift+F
^vk46:: ; Ctrl+F
SendInput,{vk46 down} ; нажать и держать кнопку F
Return
}

Время повтора нажатия очень увеличилось, то есть даже визуально видно что спамится кнопка реже (или медленней), в чем может быть проблема?

5

Re: AHK: Пауза в повторе.

Как сделать так, чтобы при зажатом Shift или Ctrl спам прекращался, и кнопка считалась удерживаемой?

Лично мне не понятен вопрос.

6 (изменено: gmxardas, 2012-11-09 21:54:52)

Re: AHK: Пауза в повторе.

Malcev пишет:

Как сделать так, чтобы при зажатом Shift или Ctrl спам прекращался, и кнопка считалась удерживаемой?

Лично мне не понятен вопрос.

Если я просто нажимаю F с запущенным скриптом, мне нужно чтобы эта кнопка спамилась, то есть многократно нажималась с указанным интервалом (для прокрутка списка), но если я нажимаю, к примеру, Shift+F то это считалось еденичным нажатием (для выведения списка на большой экран нужно чтобы клавиша удерживалась, пока я держу, я вижу увеличенный список). Так понятнее? Я сам не понял просто, что ты не понял

7

Re: AHK: Пауза в повторе.

*vk46:: ; F
Loop
{
   Send, {vk46 down}
   KeyWait Ctrl
   KeyWait Shift
   Send, {vk46 up}
   if !GetKeyState("vk46", "P")
	 break
   Sleep, 25
}

8

Re: AHK: Пауза в повторе.

Irbis пишет:
*vk46:: ; F
Loop
{
   Send, {vk46 down}
   KeyWait Ctrl
   KeyWait Shift
   Send, {vk46 up}
   if !GetKeyState("vk46", "P")
	 break
   Sleep, 25
}

Большое спасибо, почти то, что нужно, за небольшим исключением, если при зажатом шифте я нажимаю F, и после этого пытаюсь снова её нажимать, то ничего не происходит, нажатие не считается, то есть приходится отпускать и зажимать шифт по новой, этого исправить как-нибудь можно?

9

Re: AHK: Пауза в повторе.

…чтобы при зажатом Shift или Ctrl спам прекращался, и кнопка считалась удерживаемой

…если при зажатом шифте я нажимаю F, и после этого …

Выполнение первого условия подразумевает обеспечение невозможности начала «спама» при нажатии F с модификатором Shift или Ctrl.

10 (изменено: Irbis, 2012-11-10 15:07:56)

Re: AHK: Пауза в повторе.

creature.ws, это немного другое, ТС пытался объяснить (вроде бы), что при зажатом Shift или Control кнопка F считалась зажатой до отпускания модификатора, а не посылалась многократно.

Скрипт ниже при нажатии Ctrl+F или Shift+F зажимает клавишу F, отпуская ее только при отпускании и самой клавиши,  и модификатора.
При повторном нажатии Shift+F (Ctrl+F), если модификатор не был отпущен, происходит отпускание и повторное зажатие клавиши F.
Если и этот вариант не устроит ТС, тогда "доктор, у нас проблема" (с)

$vk46:: ; F
Loop
{
   Send, {vk46 down}
   KeyWait Ctrl
   KeyWait Shift
   Send, {vk46 up}
   if !GetKeyState("vk46", "P")
     break
   Sleep, 25
}
return

$^vk46::
$+vk46::
   if Fdown
      Send, {vk46 up}
   Fdown = 1
   Send, {vk46 down}
   KeyWait vk46
return

~Shift up::
~Ctrl up::
   if Fdown
   {
      Send, {vk46 up}
	  Fdown =
   }
return

11

Re: AHK: Пауза в повторе.

Irbis пишет:

creature.ws, это немного другое, ТС пытался объяснить (вроде бы), что при зажатом Shift или Control кнопка F считалась зажатой до отпускания модификатора, а не посылалась многократно.

Скрипт ниже при нажатии Ctrl+F или Shift+F зажимает клавишу F, отпуская ее только при отпускании и самой клавиши,  и модификатора.
При повторном нажатии Shift+F (Ctrl+F), если модификатор не был отпущен, происходит отпускание и повторное зажатие клавиши F.
Если и этот вариант не устроит ТС, тогда "доктор, у нас проблема" (с)

$vk46:: ; F
Loop
{
   Send, {vk46 down}
   KeyWait Ctrl
   KeyWait Shift
   Send, {vk46 up}
   if !GetKeyState("vk46", "P")
     break
   Sleep, 25
}
return

$^vk46::
$+vk46::
   if Fdown
      Send, {vk46 up}
   Fdown = 1
   Send, {vk46 down}
   KeyWait vk46
return

~Shift up::
~Ctrl up::
   if Fdown
   {
      Send, {vk46 up}
	  Fdown =
   }
return

Да, я это и имел ввиду, возможно не так выразился, я просто совсем не понимаю в этом, что очевидно, я думаю
За скрипт спасибо, именно то, что мне было нужно, тему можно закрыть