<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11210&amp;type=atom" />
	<updated>2016-01-22T13:17:09Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=11210</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100600#p100600" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Hollisch пишет:</cite><blockquote><p>полностью сделать через виртуальные коды</p></blockquote></div><p>Зачем...<br /></p><div class="quotebox"><cite>Hollisch пишет:</cite><blockquote><p>так нормально? Или...</p></blockquote></div><p>Если работает как надо и без глюков, то вполне нормально.</p><p>Теперь можно заняться сокращением:<br /></p><div class="codebox"><pre><code>  if CtrlActivate
  {
  Send,{LCtrl Down}{RButton}
  }
  else 
  {
  Send, {RButton} ; посылаем нажатие
  }
</code></pre></div><p>-&gt;<br /></p><div class="codebox"><pre><code>  if CtrlActivate
    Send,{LCtrl Down}{RButton}
  else 
    Send, {RButton} ; посылаем нажатие
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2016-01-22T13:17:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100600#p100600</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100599#p100599" />
			<content type="html"><![CDATA[<p><strong>Alectric</strong><br />1) Спасибо.</p><p>2) Дело было не в бобине...</p><p>Изначально, я все это проверял, как реагирует приложение на столько частый посыл ПКМ, с ctrl и без него, но по всей видимости, в этот момент я где-то ошибся, возможно запустил не тот скрипт и решил, что все хорошо.&nbsp; <br />Всему виной само приложение, даже с обычным лупом из первого поста и sleep 100 (да и любым другим) клавиша ctrl срабатывает с задержкой, через пол-секунды после нажатия. <br />Самое интересное, что в самом приложение есть подобная штука - повтор ПКМ, (выдает примерно 20 нажатий в секунду) и оно нормально дружит с ctrl... но его недостаток как раз в том, что цикл не прерывается при нажатии на qweasd. <br />Так что выходит - я просил найти ошибку которой нет, прошу прощения.</p><p>Пошел другим путем и на примере вашего скрипта сделал так:<br /></p><div class="codebox"><pre><code>SetFormat,IntegerFast,h ; устанавливаем формат чисел в HEX

; исключения
except=0x11`,0x1`,0x2`,0x4`,0x5`,0x6`,0x51`,0x57`,0x45`,0x41`,0x53`,0x44

Global CtrlActivate

Loop,0x91 ; перечисляем все виртуальные коды, убавил до 0x91 (может глюк с ctrl пропадет)
{
  if instr(except,A_Index) ; за исключением списка
    continue ; продолжаем, не выполняя последующие строки
  Hotkey,% &quot;~*vk&quot; . A_Index,Label,On ; добавляем горячую клавишу на метку Label
}

; перечисляем дополнительные клавиши, которые, почему-то, не добавляются по вирткоду, туда же
Hotkey,~*del,Label,On
Hotkey,~*up,Label,On
Hotkey,~*Down,Label,On
Hotkey,~*left,Label,On
Hotkey,~*right,Label,On
Hotkey,~*ins,Label,On
Hotkey,~*home,Label,On
Hotkey,~*end,Label,On
Hotkey,~*pgup,Label,On
Hotkey,~*pgdn,Label,On

Label: ; тут все понятно, думаю
AnyKey=1
return

; делаем нужные клавиши &quot;однокликовыми&quot;(одно зажатие - один посыл), как ты описывал
$vk51::
$vk57::
$vk45::
$vk41::
$vk53::
$vk44::
k:=regexreplace(a_thishotkey,&quot;\$&quot;)
send,{%k% down}
keywait,%k%,L ; ждем отпускания
return

$vk51 up::
$vk57 up::
$vk45 up::
$vk41 up::
$vk53 up::
$vk44 up::
k:=regexreplace(a_thishotkey,&quot;\$&quot;)
send,{%k%}
return

*$Rbutton::
AnyKey=0 ; обнуляем переменную (&quot;либо ПКМ, новое нажатие на которую возобновляет цикл&quot;)
while GetKeyState(&quot;RButton&quot;,&quot;P&quot;) ; пока зажата кнопка - цикл работает
{
  if AnyKey ; если в AnyKey единица
  {
    if GetKeyState(&quot;LButton&quot;,&quot;P&quot;)
    {
      sleep,390
      AnyKey=0
    }
    sleep,10 ; спим чтобы не нагружать проц
    continue ; продолжаем, не выполняя последующие строки
  }
  if CtrlActivate
  {
  Send,{LCtrl Down}{RButton}
  }
  else 
  {
  Send, {RButton} ; посылаем нажатие
  }
;  tooltip,% A_Index ; для отладки
  Sleep, 15 ; спим чтобы не нагружать проц
}
return

esc:: ; аварийный выход, можно убрать
exitapp

*$LCtrl::
 CtrlActivate=1
return

*$LCtrl Up::
 Send,{LCtrl Up}
 CtrlActivate=0
return</code></pre></div><p>Теперь все работает как надо, но осталось пара вопросов:<br />1) Хотелось бы полностью сделать через виртуальные коды, но с ctrl у меня недопонимание, как лучше его обозначаеть vka2 или vk11, и в чем разница между ними? (Срабатывают то оба, если просто сделать 2 скрипта с тултипами на этих хоткеях и нажать ctrl)</p><p>2) Насчет алгоритма, а именно: <br /></p><div class="codebox"><pre><code>  if AnyKey
      ....
  if CtrlActivate
      ....</code></pre></div><p>Как бы это банально не прозвучало, но - так нормально? Или можно более &quot;разумно&quot; расположить мое условие? (&nbsp; if CtrlActivate=1 )</p>]]></content>
			<author>
				<name><![CDATA[Hollisch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33563</uri>
			</author>
			<updated>2016-01-22T10:46:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100599#p100599</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100583#p100583" />
			<content type="html"><![CDATA[<p>1)<br /></p><div class="codebox"><pre><code>SetFormat,IntegerFast,h ; устанавливаем формат чисел в HEX

; исключения
except=0x11`,0x1`,0x2`,0x4`,0x5`,0x6`,0x51`,0x57`,0x45`,0x41`,0x53`,0x44

Loop,0x91 ; перечисляем все виртуальные коды, убавил до 0x91 (может глюк с ctrl пропадет)
{
  if instr(except,A_Index) ; за исключением списка
    continue ; продолжаем, не выполняя последующие строки
  Hotkey,% &quot;~*vk&quot; . A_Index,Label,On ; добавляем горячую клавишу на метку Label
}

; перечисляем дополнительные клавиши, которые, почему-то, не добавляются по вирткоду, туда же
Hotkey,~*del,Label,On
Hotkey,~*up,Label,On
Hotkey,~*Down,Label,On
Hotkey,~*left,Label,On
Hotkey,~*right,Label,On
Hotkey,~*ins,Label,On
Hotkey,~*home,Label,On
Hotkey,~*end,Label,On
Hotkey,~*pgup,Label,On
Hotkey,~*pgdn,Label,On

Label: ; тут все понятно, думаю
AnyKey=1
return

; делаем нужные клавиши &quot;однокликовыми&quot;(одно зажатие - один посыл), как ты описывал
$vk51::
$vk57::
$vk45::
$vk41::
$vk53::
$vk44::
k:=regexreplace(a_thishotkey,&quot;\$&quot;)
send,{%k% down}
keywait,%k%,L ; ждем отпускания
return

$vk51 up::
$vk57 up::
$vk45 up::
$vk41 up::
$vk53 up::
$vk44 up::
k:=regexreplace(a_thishotkey,&quot;\$&quot;)
send,{%k%}
return

*$Rbutton::
AnyKey=0 ; обнуляем переменную (&quot;либо ПКМ, новое нажатие на которую возобновляет цикл&quot;)
while GetKeyState(&quot;RButton&quot;,&quot;P&quot;) ; пока зажата кнопка - цикл работает
{
  if AnyKey ; если в AnyKey единица
  {
    if GetKeyState(&quot;LButton&quot;,&quot;P&quot;) ; если нажали на ЛКМ
    {
      sleep,390 ; ждем 400 ms
      AnyKey=0 ; обнуляем anykey и цикл продолжается
    }
    sleep,10 ; спим чтобы не нагружать проц
    continue ; продолжаем, не выполняя последующие строки
  }
;  Send, {RButton} ; посылаем нажатие
  tooltip,% A_Index ; для отладки
  Sleep, 15 ; спим чтобы не нагружать проц
}
return

esc:: ; аварийный выход, можно убрать
exitapp
</code></pre></div><p>2) Немного изменил добавление хоткеев, попробуй может глюк пропадет... кстати, с tooltip вместо RButton этот глюк тоже есть?<br />Такой проблемы не смог воспроизвести у себя, возможно программа так странно реагирует; возможно поможет увеличение задержи между посылами RButton; возможно стоит попробовать более старую версию AHK.</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2016-01-21T18:41:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100583#p100583</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100576#p100576" />
			<content type="html"><![CDATA[<p><strong>Alectric</strong><br />1) Хорошо.<br />2) Если добавить только 0x11 - цикл все равно прерывается, если добавить 0xa2 - аналогично, но если добавить оба, то работает, но есть одно но(!):<br />При нажатии на контрол (ПКМ в этот момент зажата и выполняется цикл) - клик с учетом модификатора происходит не сразу, а спустя примерно полсекунды. <br />И далее если удерживать контрол и ПКМ - ситуация повторяется, только один-два клика за секунду отправляются так, как будто контрол зажат, все остальные - просто повтор ПКМ.<br />Ранее я уже столкнулся с этой проблемой, но решить не сумел, возможно, Вы что-нибудь подскажите.</p>]]></content>
			<author>
				<name><![CDATA[Hollisch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33563</uri>
			</author>
			<updated>2016-01-21T12:21:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100576#p100576</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100567#p100567" />
			<content type="html"><![CDATA[<p>1) Вечером.<br />2) Добавь вирткод в список &quot;except&quot;, для ctrl - 11.</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2016-01-21T02:49:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100567#p100567</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100558#p100558" />
			<content type="html"><![CDATA[<p><strong>Alectric</strong>, не знаю как скрыть свое удивление, но в данном варианте основную задачу скрипт выполняет на &#039;ура&#039;, в каком порядке и с какой-бы скоростью я не кликал. Спасибо Вам огромное.<br />Код и алгоритм я конечно внимательно изучу, все таки хочется понять как это работает, за сим есть две просьбы: <br />1) Могли бы вы оставить комментарии к коду? <br />2) В вашем варианте клавиши модификаторы (ctrl, alt, space и др.) прерывают цикл повтора ПКМ, как мне сделать, что бы ctrl данный цикл не прерывала?</p>]]></content>
			<author>
				<name><![CDATA[Hollisch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33563</uri>
			</author>
			<updated>2016-01-20T20:36:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100558#p100558</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100556#p100556" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>SetFormat, IntegerFast, h

except=0x1`,0x2`,0x4`,0x5`,0x6`,0x51`,0x57`,0x45`,0x41`,0x53`,0x44

Loop, 0xFF
{
  if instr(except,A_Index)
    continue
  Hotkey,% &quot;~*vk&quot; . A_Index,Label,On
}
Hotkey,~*del,Label,On
Hotkey,~*up,Label,On
Hotkey,~*Down,Label,On
Hotkey,~*left,Label,On
Hotkey,~*right,Label,On
Hotkey,~*ins,Label,On
Hotkey,~*home,Label,On
Hotkey,~*end,Label,On
Hotkey,~*pgup,Label,On
Hotkey,~*pgdn,Label,On

Label:
AnyKey=1
return

$vk51::
$vk57::
$vk45::
$vk41::
$vk53::
$vk44::
k:=regexreplace(a_thishotkey,&quot;\$&quot;)
send,{%k% down}
keywait,%k%,L
return

$vk51 up::
$vk57 up::
$vk45 up::
$vk41 up::
$vk53 up::
$vk44 up::
k:=regexreplace(a_thishotkey,&quot;\$&quot;)
send,{%k%}
keywait,%k%,L
return

*$Rbutton::
AnyKey=0
while GetKeyState(&quot;RButton&quot;,&quot;P&quot;)
{
  if AnyKey
  {
    if GetKeyState(&quot;LButton&quot;,&quot;P&quot;)
    {
      sleep,390
      AnyKey=0
    }
    sleep,10
    continue
  }
;  Send, {RButton}
  tooltip,% A_Index
  Sleep, 15
}
return

esc::
exitapp
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2016-01-20T18:40:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100556#p100556</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100553#p100553" />
			<content type="html"><![CDATA[<p>Спасибо вам большое за ваши труды и уделенное мне время, но к сожалению должного результата я так и не добился, ни самостоятельно, ни с вашей помощью.<br />В целом скрипт рабочий, но в некоторых случаях алгоритм допускает сбои, что ваш, что мой. Так же клавиша контрол срабатывает с задержкой.</p><p>Проще плюнуть и забыть как страшный сон, сил уже нет каждый вечер на это время тратить.</p>]]></content>
			<author>
				<name><![CDATA[Hollisch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33563</uri>
			</author>
			<updated>2016-01-20T16:35:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100553#p100553</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100501#p100501" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>Global vkHK
OnExit, Exit
hHookKeybd := DllCall(&quot;SetWindowsHookEx&quot;, Int, WH_KEYBOARD_LL := 13
   , Ptr, RegisterCallback(&quot;LowLevelKeyboardProc&quot;, &quot;Fast&quot;)
   , Ptr, DllCall(&quot;GetModuleHandle&quot;, UInt, 0, Ptr)
   , UInt, 0, Ptr)
Return

Exit:
   DllCall(&quot;UnhookWindowsHookEx&quot;, Ptr, hHookKeybd)
   ExitApp

LowLevelKeyboardProc(nCode, wParam, lParam)
{
   vkHK := format(&quot;vk{:x}&quot;, NumGet(lParam + 0, &quot;UInt&quot;) )  
   Return DllCall(&quot;CallNextHookEx&quot;, Ptr, 0, Int, nCode, Ptr, wParam, Ptr, lParam)
}

*RButton::
rest_loop:
StatusKey := 0
vkHK := &quot;&quot;
While GetKeyState(&quot;RButton&quot;,&quot;p&quot;)
 {
   if vkHK and (vkHK != &quot;vka2&quot;)
   {
     if vkHK ~= &quot;^(vk51|vk57|vk45|vk41|vk53|vk44)$&quot;
	  StatusKey := 1
	 else
	  StatusKey := 2
	 break
   }
	
   ToolTip {RButton}
   vkHK := &quot;&quot;
   Sleep, 15
   
 }
 
E := 0
 if (StatusKey = 2)
   return
 if (StatusKey = 1)
   loop
   {
     KeyWait,LButton,T0.01
	 % (ErrorLevel = 1) and (E:=1)
	 KeyWait,RButton,D T0.01
	 % (ErrorLevel = 1) and (E:=2)
   } Until E
   
if E = 1
{
  sleep 400
  goto rest_loop
}
return</code></pre></div><p>Tooltip надо будет на send заменить.</p>]]></content>
			<author>
				<name><![CDATA[yalanne]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32850</uri>
			</author>
			<updated>2016-01-19T09:32:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100501#p100501</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100360#p100360" />
			<content type="html"><![CDATA[<p>Спасибо Вам большое <strong>yalannne</strong> за быстрый ответ. Скрипт опробовал, работает, но не в полной мере.<br />1) Возобновление повтора правой клавиши происходит только единожды, пока зажата правая клавиша, при последующих нажатиях q-d + ЛКМ цикл не возобновляется. Это скорее моя ошибка, я не уточнял этот момент, хотя алгоритм-то верный...<br />Решил проверить на значение WhileRB на всех этапах, первое что пришло в голову tooltip %WhileRB%, получилось, что при повторном нажатии на q-d и ЛКМ (при зажатой ПКМ) значение остается 2. </p><p>2) При нажатии на контрол появилась непонятная задержка, примерно секунда до того, как действие контрол+клик ПКМ (а в данном случае наш цикл) будет применено.</p>]]></content>
			<author>
				<name><![CDATA[Hollisch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33563</uri>
			</author>
			<updated>2016-01-15T12:35:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100360#p100360</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100351#p100351" />
			<content type="html"><![CDATA[<p>Вроде все учел:</p><div class="codebox"><pre><code>Global WhileRB := 0
OnExit, Exit
hHookKeybd := DllCall(&quot;SetWindowsHookEx&quot;, Int, WH_KEYBOARD_LL := 13
   , Ptr, RegisterCallback(&quot;LowLevelKeyboardProc&quot;, &quot;Fast&quot;)
   , Ptr, DllCall(&quot;GetModuleHandle&quot;, UInt, 0, Ptr)
   , UInt, 0, Ptr)
Return

Exit:
   DllCall(&quot;UnhookWindowsHookEx&quot;, Ptr, hHookKeybd)
   ExitApp

LowLevelKeyboardProc(nCode, wParam, lParam)
{
   static vk
   vk := format(&quot;vk{:x}&quot;, NumGet(lParam + 0, &quot;UInt&quot;) )  
   
   SetTimer, EventHandling, -1
   Return DllCall(&quot;CallNextHookEx&quot;, Ptr, 0, Int, nCode, Ptr, wParam, Ptr, lParam)
   
EventHandling:
if (vk = &quot;vka2&quot;)
 return
if (WhileRB=1)
 if (vk ~= &quot;^(vk51|vk57|vk45|vk41|vk53|vk44)$&quot;)
  WhileRB := 2
 Else
  WhileRB := 0
return 
}


#if (WhileRB=0)
*RButton::
rest_loop:
WhileRB := 1
While GetKeyState(&quot;RButton&quot;,&quot;p&quot;) and (WhileRB=1)
 {
   tooltip { RButton }
   Send, { RButton }
   Sleep, 15
 }
KeyWait RButton
WhileRB := 0
return

#if (WhileRB=2)
~LButton::
sleep 400
Gosub rest_loop
KeyWait LButton
return
#if</code></pre></div>]]></content>
			<author>
				<name><![CDATA[yalanne]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32850</uri>
			</author>
			<updated>2016-01-14T20:15:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100351#p100351</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100345#p100345" />
			<content type="html"><![CDATA[<p><strong>yalanne</strong> <br />Да, мне стоило более подробно расписать задачу, но время было позднее, а после битвы с ahk &#039;думалка&#039; была похожа на плавленный сырок. Итак:</p><p>По поводу контрола: в контексте скрипта написанного Вами выше я пытался добавить его в список &quot;клавиш исключений&quot;, которые не прерывали бы скрипт. что собственно у меня не вышло. <br />А по логике - выходит, что мы его просто не трогаем, он работает в обычном режиме и не прерывает скрипт.</p><br /><p>Попробую объяснить работу приложения, возможно так будет проще.<br />Действие в приложении выполняется нажатием клавиш q-d и последующим нажатием на ЛКМ,<br />ПКМ - отвечает на &quot;навигацию&quot;, положение курсора. <br />Условия таковы, что если я нажимаю на q-d, но потом жму на ПКМ для перемещения курсора, то при последующем нажатии на ЛКМ действие не будет произведено, так как ПКМ отменяет нажатия на q-d, и нужно заново нажимать на них и далее на ЛКМ.<br />И второе условие, двойное нажатие на любую из клавиш q-d вызывает другое действие.<br />(Последнее условие в работе скрипта не участвует, важно только что бы двойных нажатий на q-d скрипт не производил ни при каких условиях).</p><p>Мне нужно, что бы я мог держать зажатой правую клавишу, управляя положением курсора посредством цмкла повтора нажатий ПКМ, но при нажатии на q-d, этот цикл бы прекращался, и возобновлялся только после нажатия на ЛКМ или нового нажатия на ПКМ. <br />( И соответственно, если ни была нажата ни одна из клавиш q-d, то просто отжатие ПКМ привет к остановке цикла тоже )</p><p>Алгоритм таков: ( на примере клавиши &#039;q&#039; )<br />Если ПКМ удерживается в нажатом состоянии (выполняется цикл повтора нажатий), то:<br /> - Нажатие на &#039;q&#039; вызывает сначала остановку этого цикла, а затем отправляет сама себя, далее идет ожидание:<br />&nbsp; &nbsp;а) либо ЛКМ, нажатие на которую приведет к действию в приложении и затем, через 	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; небольшой промежуток времени, например 400мс, возобновит повтор цикла нажатий ПКМ, <br />при условии, что ПКМ все еще находится в нажатом состоянии). <br />&nbsp; &nbsp;б) либо ПКМ, новое нажатие на которую возобновляет цикл, если он приостановлен. (само же нажатие q-d отменяется приложением, так что здесь все просто)<br />&nbsp; &nbsp;г) если после нажатия на q-d ПКМ была отпущена, то это ничего не меняет, цикл на уже находится в режиме паузы, а скрипт ожидает нажатия на ЛКМ или ПКМ.</p><br /><p>Нужен ли какой нибудь лимит времени ожидания левой кнопки мыши?<br />Нет, лимит не нужен, ожидаем нажатие на ЛКМ или ПКМ.</p><p>Правая кнопка мыши должна быть зажата все это время?<br />Или же во время ожидания левой кнопки мыши правую можно отпустить?<br />Во время ожидания - ПКМ может быть как отпущена, так и все еще зажата (просто в случае, если она зажата, чисто физически можно будет нажать только ЛКМ, но это не имеет значения).</p><br /><br /><p>Вроде как все, тяжко совмещать процесс обучения, с процессом написания, сначала нужно продумать алгоритм, а потом пытаться его воспроизвести, но что бы его написать - нужно знать возможности ahk, как и что реализовать лучше.</p><p>Пока пробовал разобраться самостоятельно с коррекцией кода возник один вопрос, как сымитировать обычное нажатие на клавишу? Т.е. назначить клавишу хоткеем выполняющую тоже, что она бы выполняла на будучи им. (Нужно для того, к примеру, что бы добавить ей изменение какой-нибудь глобальной переменной, но при этом не теряя ее оригинальной функции).</p>]]></content>
			<author>
				<name><![CDATA[Hollisch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33563</uri>
			</author>
			<updated>2016-01-14T14:56:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100345#p100345</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100335#p100335" />
			<content type="html"><![CDATA[<p>1) </p><ul><li><p>А вот если например во время цикла отпустить ctrl, то какое действие должно произойти? Полная остановка цикла?</p></li><li><p>Должно это как то повлиять на второй пункт?</p></li></ul><p>2) </p><ul><li><p>После нажатия клавиш q-d должно идти ожидание левой кнопки. После того как л.кнопка нажата скрипт должен повторно отправить ту клавишу которая вызвала ожидание л.кнопки, затем как клавиша от q-d отправлена ждать отжатие левой кнопки?</p><p>Или же пока не нажмется левая кнопка и будет нажиматься клавиши из белого списка, то после нажатия л.кнопки скрипт должен воспроизвести в том же порядке нажатые клавиши и подождать отжатие левой?</p></li><li><p>Нужен ли какой нибудь лимит времени ожидания левой кнопки мыши?</p></li><li><p>Правая кнопка мыши должна быть зажата все это время?<br />Или же во время ожидания левой кнопки мыши правую можно отпустить?</p></li><li><p>И связанный вопрос из певого пункта,второго подпункта. Если отжать ctrl то все просто должно отключится? Не чего не будет ждать все просто перейдет в стандартное положение?</p></li></ul>]]></content>
			<author>
				<name><![CDATA[yalanne]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32850</uri>
			</author>
			<updated>2016-01-14T09:43:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100335#p100335</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100328#p100328" />
			<content type="html"><![CDATA[<p>Добрый вечер, не стал создавать новую тему, так как возникшие трудности с корректировкой кода касаются скрипта <a href="http://forum.script-coding.com/viewtopic.php?pid=100201#p100201">опубликованного выше</a> уважаемым <strong>yalanne</strong>.</p><br /><p>1) Мне нужно, что бы повтор правой клавиши мыши работал при зажатом контроле(левом). Я пытался добавить его в список &quot;клавиш исключений&quot;, но по непонятной мне причине скрипт не воспринимает его виртуальный код и все равно прерывает цикл.</p><p>2) И второе, посложнее. Касательно самого цикла повтора правой клавиши:<br />Как сделать, что бы при нажатии на q,w,e,a,s,d цикл бы приостанавливался, но при нажатии на левую кнопку мыши - возобновлялся. При том, что бы данные клавиши и левый клик отправляли бы сами себя, единожды за нажатие, без повтора при зажатии. </p><p>Если смотреть в контексте данной темы - этот вопрос выглядит глупо, ведь есть пример, по аналогии с которым можно добиться нужного результата, но нет, у меня не выходит, сколько бы я не пытался, за сим прошу помощи в данном вопросе.</p>]]></content>
			<author>
				<name><![CDATA[Hollisch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33563</uri>
			</author>
			<updated>2016-01-13T21:47:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100328#p100328</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Остановка цикла при нажатии на любые клавиши кроме определенных]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=100215#p100215" />
			<content type="html"><![CDATA[<p>Премного благодарен, это даже больше, чем то на что я надеялся. Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Hollisch]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33563</uri>
			</author>
			<updated>2016-01-08T18:32:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=100215#p100215</id>
		</entry>
</feed>
