1 (изменено: kna1703, 2015-10-05 14:14:25)

Тема: Непрерывное воспроизведение нажатия комбинации

Здравствуйте!
Как написать код, на примере моего, чтобы при нажатии кнопки "Q" (или "Shift + Q") происходило моментальное (без какой-либо задержки) и непрерывное воспроизведение кода, пока не отожмёшь клавишу.

$+vk51::
Send {vk41}{vk51}
return

При данном варианте выполняется только один пункт - непрерывное воспроизведение.
Моя задача сделать так, чтобы после 1-ого появления символов не было задержки (где-то 0.5 сек.), как и в дальнейшем варианте "Loop" режима.

2-ой вопрос: Как уменьшить или же увеличить задержку в воспроизведении кода?
Пример: Нажал на кнопку и пропечаталось 100 символов за 1 сек, вместо 10 - как по умолчанию.

2

Re: Непрерывное воспроизведение нажатия комбинации

Вроде как это максимальная скорость:

SetBatchLines -1
SetKeyDelay -1
$+vk51::
While GetKeyState(LTrim(A_ThisHotkey,"$+"),"p")
{
    tooltip % A_Index
    Send {vk41}{vk51}
}
return

3 (изменено: kna1703, 2015-10-07 01:18:30)

Re: Непрерывное воспроизведение нажатия комбинации

А как уменьшать?
Слишком скорострельный вариант

4

Re: Непрерывное воспроизведение нажатия комбинации

SetBatchLines -1
SetKeyDelay -1
$+vk51::
While GetKeyState(LTrim(A_ThisHotkey,"$+"),"p")
{
    tooltip % A_Index
    Send {vk41}{vk51}
    sleep 1
}
return

5 (изменено: kna1703, 2015-10-08 17:42:53)

Re: Непрерывное воспроизведение нажатия комбинации

Я сделал иначе и получилось в таком варианте:

SetBatchLines 1     ; Вот здесь поправил
SetKeyDelay -1
$+vk51::
While GetKeyState(LTrim(A_ThisHotkey,"$+"),"p")
{
    tooltip % A_Index
    Send {vk41}{vk51}
}
return

Тем самым, полностью убирается первоначальная задержка на ввод, с сохранением стандартной скорости набора.
Параметр "sleep 1" - это регулируемая скорость набора, равная 1 мс? Стандарт набора = 20 мс?

Одно большое НО, у меня с этим кодом отказываются работать другие (во время зажатия) и появляется набор цифр около курсора, а ещё иногда выскакивает эта табличка, когда отжимаю клавишу: (в красном прямоугольнике набор цифр, который появляется около курсора)

+ Мой общий список кода в 1-ом файле
$vk41::
Send {vk41}{vk51}
return

$vk45::
Send {vk45}
return

$vk31::
Send {vk31}
return

$vk57::
Send {vk57}
return

$vk32::
Send {vk32}
return

SetBatchLines -1
SetKeyDelay -1
$vk51::
While GetKeyState(LTrim(A_ThisHotkey,"$+"),"p")
{
    tooltip % A_Index               ; Решил здесь проблему с отображением цифр около курсора
    Send {vk41}{vk51}
    sleep 1                       
}
return

$vk53::
Send {vk41}
return

$vk5A::
Send {vk5A}
return

vk60:: Suspend
+ Скриншот таблички

http://i.imgur.com/E9jXMZS.png

Как избавиться от таблички и заставить работать другие модификаторы совместно с Вашим кодом?
Ещё раз повторюсь: "Когда зажимаю клавишу "Q", теряется возможность в воспроизведение другого кода."

p.s. Ваш вариант намного удобнее, и я могу сам регулировать скорость, в чём большой плюс.

6 (изменено: yalanne, 2015-10-09 12:55:22)

Re: Непрерывное воспроизведение нажатия комбинации

Вот так подходит?
В этом варианте можно настраивать задержку у каждой комбинации:

#MaxHotkeysPerInterval 1000
SetBatchLines -1
SetKeyDelay -1

Arr := []
Arr["$vk31"] :=  {Send:"{vk31}" , Time:50 }
Arr["$vk32"] :=  {Send:"{vk32}" , Time:1 }
Arr["$vk41"] :=  {Send:"{vk41}{vk51}" , Time:1 }
Arr["$vk45"] :=  {Send:"{vk45}" , Time:1 }
Arr["$vk53"] :=  {Send:"{vk41}" , Time:1 }
Arr["$vk57"] :=  {Send:"{vk57}" , Time:1 }
Arr["$vk5A"] :=  {Send:"{vk5A}" , Time:1 }
return

$vk31:: ; 1
$vk32:: ; 2
$vk41:: ; A
$vk45:: ; E
$vk53:: ; S
$vk57:: ; W
$vk5A:: ; Z
While GetKeyState((RegExMatch(A_ThisHotkey,"(vk..)",hk)+"") hk1,"p")
{
    Send %  Arr[A_ThisHotkey].Send
    Sleep % Arr[A_ThisHotkey].Time
}
return

7 (изменено: kna1703, 2015-10-11 21:27:12)

Re: Непрерывное воспроизведение нажатия комбинации

Всё работает отлично, только когда держишь зажатой "Q", потом нажимаешь "W" перестаёт работать зажатая "Q", приходится отжимать и снова нажимать на "Q". Это на самом деле не так плохо как кажется.., но мне интересно, можно ли сделать совместную работу при зажатии? (Точно также работает и по дефолту)

И ещё одно меня интересует.., как привязать к этому коду такое:

WheelDown::
Send {vk45}
Sleep, 1850
Send {vk45}
return

8 (изменено: kna1703, 2015-10-12 23:50:18)

Re: Непрерывное воспроизведение нажатия комбинации

Получится ли прикрутить данный код к Вашему?

WheelDown::
Send {vk45}
Sleep, 1850
Send {vk45}
return
+ Как прикрутить к этому коду?
#MaxHotkeysPerInterval 1000
SetBatchLines -1
SetKeyDelay -1

Arr := []
Arr["$vk31"] :=  {Send:"{vk31}" , Time:50 }
Arr["$vk32"] :=  {Send:"{vk32}" , Time:1 }
Arr["$vk41"] :=  {Send:"{vk41}{vk51}" , Time:1 }
Arr["$vk45"] :=  {Send:"{vk45}" , Time:1 }
Arr["$vk53"] :=  {Send:"{vk41}" , Time:1 }
Arr["$vk57"] :=  {Send:"{vk57}" , Time:1 }
Arr["$vk5A"] :=  {Send:"{vk5A}" , Time:1 }
return

$vk31:: ; 1
$vk32:: ; 2
$vk41:: ; A
$vk45:: ; E
$vk53:: ; S
$vk57:: ; W
$vk5A:: ; Z
While GetKeyState((RegExMatch(A_ThisHotkey,"(vk..)",hk)+"") hk1,"p")
{
    Send %  Arr[A_ThisHotkey].Send
    Sleep % Arr[A_ThisHotkey].Time
}
return

9

Re: Непрерывное воспроизведение нажатия комбинации

А в чем проблема?

+ открыть спойлер
#MaxHotkeysPerInterval 1000
SetBatchLines -1
SetKeyDelay -1

Arr := []
Arr["$vk31"] :=  {Send:"{vk31}" , Time:50 }
Arr["$vk32"] :=  {Send:"{vk32}" , Time:1 }
Arr["$vk41"] :=  {Send:"{vk41}{vk51}" , Time:1 }
Arr["$vk45"] :=  {Send:"{vk45}" , Time:1 }
Arr["$vk53"] :=  {Send:"{vk41}" , Time:1 }
Arr["$vk57"] :=  {Send:"{vk57}" , Time:1 }
Arr["$vk5A"] :=  {Send:"{vk5A}" , Time:1 }
return

$vk31:: ; 1
$vk32:: ; 2
$vk41:: ; A
$vk45:: ; E
$vk53:: ; S
$vk57:: ; W
$vk5A:: ; Z
While GetKeyState((RegExMatch(A_ThisHotkey,"(vk..)",hk)+"") hk1,"p")
{
    Send %  Arr[A_ThisHotkey].Send
    Sleep % Arr[A_ThisHotkey].Time
}
return

WheelDown::
Send {vk45}
Sleep, 1850
Send {vk45}
return

10 (изменено: kna1703, 2015-10-12 23:56:43)

Re: Непрерывное воспроизведение нажатия комбинации

Одновременно не могут функционировать, если зажимаешь "Q", то не срабатывает колёсико мыши или же не выполняется код до конца, после задержки.

То есть, код выполнится только в том случае, пока не отожмёшь "Q" (Он как бы лочит ввод).

p.s. Временно решил проблему, запуском 2-ух разных исполняемых файлов с кодом.

11

Re: Непрерывное воспроизведение нажатия комбинации

#MaxHotkeysPerInterval 1000
SetBatchLines -1
SetKeyDelay -1
SetTimer t,1
Arr := []

Arr["$vk31"] :=  {Send:"{vk31}" , Time:50 }
Arr["$vk32"] :=  {Send:"{vk32}" , Time:1 }
Arr["$vk41"] :=  {Send:"{vk41}{vk51}" , Time:1 }
Arr["$vk45"] :=  {Send:"{vk45}" , Time:1 }
Arr["$vk53"] :=  {Send:"{vk41}" , Time:1 }
Arr["$vk57"] :=  {Send:"{vk57}" , Time:1 }
Arr["$vk5A"] :=  {Send:"{vk5A}" , Time:1 }

for i, k in Arr
    Hotkey %i%,pressing,On
pressing:
return
t:
for i, k in Arr
    if GetKeyState((RegExMatch(i,"(vk..)",hk)+"") hk1,"p")
    and (A_TickCount > Arr[i].Timer) && (Arr[i].Timer := A_TickCount + k.Time)
        Send % k.Send
return

WheelDown::
Send {vk45}
Sleep, 1850
Send {vk45}
return

12 (изменено: 4esa33, 2015-10-14 16:16:05)

Re: Непрерывное воспроизведение нажатия комбинации

Всем привет!
Есть скрипт , но его надо дополнить , помогите пожалуйста.
Необходимо чтоб данный кусок кода выполнялся определенное время.

$F1::
switch := !switch
if switch
{
SetTimer, gogo, 100
}
else
{
SetTimer, gogo, off
}
return
gogo:
SENDINPUT {F1}
click
sleep 500
send {f2}
sleep 50
click
sleep,200
send {f3}
sleep,400
return

После  чего нажималась клавиша F8 и скрипт начинался сначала.
Помогите пожалуйста дополнить.
Заранее благодарен!