<?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=10916&amp;type=atom" />
	<updated>2015-12-13T11:41:29Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=10916</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=99660#p99660" />
			<content type="html"><![CDATA[<p>Доброго времени суток нужна помощь. Теперь нужно обратное. Т.Е. из iCarDS отправить команду (CF_NEXT) на программу AVerTV. Все что мог извлечь из iCarDS на кнопке переключения трека ((((( <br />ahk_class TSkinForm<br />ahk_exe iCarDS.exe)))))))</p>]]></content>
			<author>
				<name><![CDATA[evgen_dev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33324</uri>
			</author>
			<updated>2015-12-13T11:41:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=99660#p99660</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97385#p97385" />
			<content type="html"><![CDATA[<p>Вечер добрый.&nbsp; Работает&nbsp; при запуске скрипта, нажали</p>]]></content>
			<author>
				<name><![CDATA[evgen_dev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33324</uri>
			</author>
			<updated>2015-09-12T18:14:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97385#p97385</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97115#p97115" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Подскажите как определить крестовину джойстика</p></blockquote></div><p>С джойстиком сложнее, крестовина и аналоги определяются стандартными командами только в цикле:<br /></p><div class="codebox"><pre><code>
JoyPOVState := {0:&quot;Up&quot;, 18000:&quot;Down&quot;, 27000:&quot;Left&quot;, 9000:&quot;Right&quot;
    , 4500:&quot;UpRight&quot;, 13500:&quot;RightDown&quot;, 22500:&quot;LeftDown&quot;, 31500:&quot;UpLeft&quot;}

Loop
{ 
    Sleep 20 
    State := GetKeyState(&quot;1JoyPOV&quot;), i := 0
    If State = -1
        Continue 
    JoyPOVWait(State, &quot;Up&quot;, 700) 
    If !ErrorLevel 
        Loop  {
            JoyPOVWait(State) 
            JoyPOVWait(State, &quot;Down&quot;, 200) 
        } Until !(++i) || ErrorLevel   
    Try Gosub % &quot;Joy&quot; JoyPOVState[State] &quot;_&quot; i    
}

JoyUp_0:  
    MsgBox удержали
    Return 
    
JoyUp_1:  
    MsgBox нажали
    Return
    
JoyUp_2:  
    MsgBox нажали 2 раза
    Return
    
JoyUp_3:  
    MsgBox нажали 3 раза
    Return
     
JoyPOVWait(State, Mode = &quot;Up&quot;, Time = 0) {
    Start := A_TickCount
    Loop
    {
        _State := GetKeyState(&quot;1JoyPOV&quot;)  
        If (Mode = &quot;Up&quot; ? _State != State : _State = State)
            Return ErrorLevel := 0
        If (Time &amp;&amp; A_TickCount - Start &gt;= Time)
            Return ErrorLevel := 1 
        Sleep 10
    }
}
</code></pre></div><p>Проверено на хвох 360. Для первого джойстика (1JoyPOV) крестовина вверх (JoyUp). Правильнее это на HID сделать, но у меня альтруизма на такое не хватит.</p><p>ОФФ:<br /></p><div class="quotebox"><blockquote><p>Разобрались, может или нет.</p></blockquote></div><p>Так вы же сами сказали что может, и я у вас в личке спрашивал каким кодом вы это делаете, и вы не ответили.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-09-05T16:02:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97115#p97115</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97113#p97113" />
			<content type="html"><![CDATA[<p>Уважаемый, serzh82saratov.<br /></p><div class="codebox"><pre><code>ОФФ: А iCarDuino может принимать сигналы от ардуино, и отправлять в скрипт АНК? Ведь обычно из програмной среды с ардуино работают через сом порт.</code></pre></div><p>Разобрались, может или нет.</p>]]></content>
			<author>
				<name><![CDATA[evgen_dev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33324</uri>
			</author>
			<updated>2015-09-05T14:00:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97113#p97113</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97112#p97112" />
			<content type="html"><![CDATA[<p>Уважаемый, serzh82saratov. Подскажите как определить крестовину джойстика. Если кнопки joy1-joy10 работают а крестовина нет.&nbsp; Пробывал&nbsp; joy11 не работает.&nbsp; GetKeyState что за команда. Форум помоги.</p>]]></content>
			<author>
				<name><![CDATA[evgen_dev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33324</uri>
			</author>
			<updated>2015-09-05T13:52:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97112#p97112</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97072#p97072" />
			<content type="html"><![CDATA[<p>Уважаемый, serzh82saratov! Все превосходно работает. Sendкью, то есть СПАСИБО!!! Оба Работают.</p>]]></content>
			<author>
				<name><![CDATA[evgen_dev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33324</uri>
			</author>
			<updated>2015-09-04T09:19:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97072#p97072</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97066#p97066" />
			<content type="html"><![CDATA[<p><a href="http://pccar.ru/showthread.php?t=16718">http://pccar.ru/showthread.php?t=16718</a> Здесь.</p>]]></content>
			<author>
				<name><![CDATA[evgen_dev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33324</uri>
			</author>
			<updated>2015-09-03T20:29:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97066#p97066</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97065#p97065" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>ОФФ: А iCarDuino может принимать сигналы от ардуино? Ведь обычно из програмной среды с ним работают через сом порт</code></pre></div><p> Вроде да.</p>]]></content>
			<author>
				<name><![CDATA[evgen_dev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33324</uri>
			</author>
			<updated>2015-09-03T20:23:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97065#p97065</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97064#p97064" />
			<content type="html"><![CDATA[<p>ОФФ: А iCarDuino может <span class="bbu">принимать</span> сигналы от ардуино, и отправлять в скрипт АНК? Ведь обычно из програмной среды с ардуино работают через сом порт.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-09-03T20:21:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97064#p97064</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97063#p97063" />
			<content type="html"><![CDATA[<p>Я сам сразу не понял, в чем ппроблема. Джойстик&nbsp; или программа Xpadder вина.&nbsp; С клавиатуры все работает.</p>]]></content>
			<author>
				<name><![CDATA[evgen_dev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33324</uri>
			</author>
			<updated>2015-09-03T20:17:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97063#p97063</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97062#p97062" />
			<content type="html"><![CDATA[<p>Я извеняюсь. Все работает. Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[evgen_dev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33324</uri>
			</author>
			<updated>2015-09-03T20:15:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97062#p97062</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97061#p97061" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Не сработал, все команды идут как одна.</p></blockquote></div><p>Да ладно:<br /></p><div class="codebox"><pre><code>#UseHook 
  
+^vk51:: ;  &quot;Q&quot;
    HK := RegExReplace(A_ThisHotkey, &quot;S)[\Q+^!#&lt;&gt;~*$\E]&quot;), i := 0
    KeyWait, %HK%, T0.7
    If !ErrorLevel 
        Loop  {
            KeyWait, %HK%
            KeyWait, %HK%, D T0.3
        } Until !(++i) || ErrorLevel 
    Try Gosub % A_ThisHotkey &quot;_&quot; i 
    Return

+^vk51_0:  
    MsgBox удержали
    Return
    
+^vk51_1:  
    MsgBox нажали
    Return
    
+^vk51_2:  
    MsgBox нажали 2 раза
    Return</code></pre></div><div class="quotebox"><blockquote><p>а пока воспользуюсь кодом от YMP он работает без проблем.</p></blockquote></div><p>Так вам же удержание нужно, нет?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-09-03T20:09:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97061#p97061</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97060#p97060" />
			<content type="html"><![CDATA[<p>serzh82saratov, спасибо за Ваш труд. Не сработал, все команды идут как одна. Буду искать,а пока воспользуюсь кодом от YMP он работает без проблем.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>+^vk51::
    N:=0
    Loop {
        N++
        LastKey := SubStr(A_ThisHotkey, -3)
        KeyWait, %LastKey%
        KeyWait, %LastKey%, D T0.3
    } Until ErrorLevel
    Gosub % IsLabel(L := A_ThisHotkey . &quot;_&quot; . N) ? L : &quot;NoCombo&quot;
Return

NoCombo:
Return

+^vk51_1:
    MsgBox, 1 нажатие.
    Return
+^vk51_2:
    MsgBox, 2 нажатия.
    Return
+^vk51_3:
    MsgBox, 3 нажатия.
    Return
+^vk51_4:
    MsgBox, 4 нажатия.
    Return
; И так далее...</code></pre></div></div></div><p>Цитата:Теперь при нажатии F1 и F2, в икар передадутся нажатия кнопок в ардуино duino_11111111 и duino_11111112. То есть надо, не включая загрузку плагина, зайти в настройки iCarDuino и настроить на эти кнопки нужные команды.<br /><a href="http://pccar.ru/showthread.php?t=14151&amp;page=10">http://pccar.ru/showthread.php?t=14151&amp;page=10</a><br />А у меня передается только duino_11111111. Все равно большое человеческое спасибо!</p>]]></content>
			<author>
				<name><![CDATA[evgen_dev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33324</uri>
			</author>
			<updated>2015-09-03T19:44:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97060#p97060</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97059#p97059" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>Помогите, пожалуйста вставить в этот код</p></blockquote></div><p>В этот не помогу.<br /></p><div class="codebox"><pre><code>#UseHook 

icar := ComObjCreate(&quot;RideRunner.SDK&quot;)

+^vk51:: ;  &quot;Q&quot;
    HK := RegExReplace(A_ThisHotkey, &quot;S)[\Q+^!#&lt;&gt;~*$\E]&quot;), i := 0
    KeyWait, %HK%, T0.7
    If !ErrorLevel 
        Loop  {
            KeyWait, %HK%
            KeyWait, %HK%, D T0.3
        } Until !(++i) || ErrorLevel 
    Try Gosub % A_ThisHotkey &quot;_&quot; i 
    Return

+^vk51_0:  
    icar.Execute(&quot;SetVar;duino_key;duino_11111113||OnDuinoKeyPress&quot;)
    Return
    
+^vk51_1:  
    icar.Execute(&quot;SetVar;duino_key;duino_11111111||OnDuinoKeyPress&quot;)
    Return
    
+^vk51_2:  
    icar.Execute(&quot;SetVar;duino_key;duino_11111112||OnDuinoKeyPress&quot;)
    Return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-09-03T18:31:05Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97059#p97059</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97047#p97047" />
			<content type="html"><![CDATA[<p>Помогите, пожалуйста вставить в этот код комбинацию клавиш +^vk51.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>;==============Подпрограмма - Три действия/клавиши в одной======================
;  сBaseKey              :=         ; Нажимаемая клавиша
;  cAloneKey             :=         ; 1-я Виртуальная клавиша
;  cDoubleKey            :=         ; 2-я Виртуальная клавиша
;  cHoldingKey           :=         ; 3-я Виртуальная клавиша
;--------------Оптимальное значение для игр и мышки на опыте игры &quot;The Witcher 2 - Assassins of Kings&quot;
;  сPause_PressKey       := 350    ; Если пауза меньше этого количества миллисекунд, то нажатие двойное. Если больше, то оно расценивается как 2 одиночных
;  cWaitHoldingBaseKey   := 2      ; Время ожидания в цикле определения удержания за каждый шаг, при больших значениях блокирует одиночное/двойное нажатие.
;  cCountHoldingBaseKey  := 25     ; Число шагов цикла для определения удержание клавиши/кнопки, при больших значениях блокирует одиночное/двойное нажатие.
;  cWaitVirtualKey       := 10     ; Время задержки между эмуляцией нажатия на клавиши/кнопки подмены реально нажатой клавишей/кнопкой.
;  fAutoRepeat           := false  ; Автоповтор реально нажатой клавиши/кнопки - включён/выключен True/False

;------------Начало работы      
#UseHook, On
sbTrioProcessingKeys:
; Требуется реализация блокировки от входа с разных клавиш, т.е. защита от множественного входа на време отработки этой подпрограммы.
  vCountHoldingBaseKey:=cCountHoldingBaseKey
  ;Проверка на удержание нажатия/клика клавиши/кнопки
  while ((GetKeyState(сBaseKey, &quot;P&quot;)) &amp;&amp; vCountHoldingBaseKey &amp;&amp; (!сSecond_PressKey)) 
      {
        sleep %cWaitHoldingBaseKey%   
        vCountHoldingBaseKey--
      }
  if (!vCountHoldingBaseKey)
      { 
  ; Нормальное удержание не работает, нужно не посылать код отжатия, пока нажата реальная клавиша - в подпрограмме sbAutoRepeat треуется корректировка.
  ; Надо сделать режим удерживать или нет клавишу, а это ввод второго флага, может быть для всех трёх клавиш.        
        Send, {%cHoldingKey% Down}  ;Удержание нажатия/клика клавиши/кнопки
        Sleep %cWaitVirtualKey%    
        Send, {%cHoldingKey% Up}
        Gosub sbAutoRepeat
        return
      } 
     else 
        Gosub, sbPressCountKeys
return            ; Конец обработки подпрограммы sbStartProcessingKeys


;Одиночное нажатие/клик клавиши/кнопки
sbAloneKey:
  Send, {%cAloneKey% Down}
  Sleep %cWaitVirtualKey%    
  Send, {%cAloneKey% Up}
  Gosub sbAutoRepeat
Return

;Двойное нажатие/клик клавиши/кнопки
sbDoubleKey:
  Send, {%cDoubleKey% Down}
  Sleep %cWaitVirtualKey%    
  Send, {%cDoubleKey% Up}  
  Gosub sbAutoRepeat
Return

;Без/С автоповтором основной клавиши/кнопки
sbAutoRepeat:
  if (!fAutoRepeat)
      {
        Send, {%сBaseKey% Down}   ; Без автоповтора
        ;while (GetKeyState(сBaseKey, &quot;P&quot;))
        KeyWait, %сBaseKey%  ;Sleep %cWaitBaselKey% 
        Send, {%сBaseKey% Up}      
      }
Return                            ; C автоповтором

#UseHook, Off

sbPressCountKeys:
  If not сSecond_PressKey
      {
        сSecond_PressKey := 1
        SetTimer, sbDoublePressKey, -%сPause_PressKey%
      }
    Else
      {
        сSecond_PressKey := 0
        SetTimer, sbDoubleKey, -1
      }
Return

sbDoublePressKey:
  If not сSecond_PressKey
        Return
  сSecond_PressKey := 0
  SetTimer, sbAloneKey, -1
Return
;-----------------------------------------------------------------</code></pre></div></div></div><p>Чтоб нажатие отправляла эту команду:</p><div class="codebox"><pre><code>icar := ComObjCreate(&quot;RideRunner.SDK&quot;)
icar.Execute(&quot;SetVar;duino_key;duino_11111111||OnDuinoKeyPress&quot;)</code></pre></div><p>Двойное нажатие:</p><div class="codebox"><pre><code>icar := ComObjCreate(&quot;RideRunner.SDK&quot;)
icar.Execute(&quot;SetVar;duino_key;duino_11111112||OnDuinoKeyPress&quot;)</code></pre></div><p>А удержание:</p><div class="codebox"><pre><code>icar := ComObjCreate(&quot;RideRunner.SDK&quot;)
icar.Execute(&quot;SetVar;duino_key;duino_11111113||OnDuinoKeyPress&quot;)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[evgen_dev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33324</uri>
			</author>
			<updated>2015-09-03T11:38:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97047#p97047</id>
		</entry>
</feed>
