<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Отправить определенный код кнопки]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=10916</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10916&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Отправить определенный код кнопки».]]></description>
		<lastBuildDate>Sun, 13 Dec 2015 11:41:29 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=99660#p99660</link>
			<description><![CDATA[<p>Доброго времени суток нужна помощь. Теперь нужно обратное. Т.Е. из iCarDS отправить команду (CF_NEXT) на программу AVerTV. Все что мог извлечь из iCarDS на кнопке переключения трека ((((( <br />ahk_class TSkinForm<br />ahk_exe iCarDS.exe)))))))</p>]]></description>
			<author><![CDATA[null@example.com (evgen_dev)]]></author>
			<pubDate>Sun, 13 Dec 2015 11:41:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=99660#p99660</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97385#p97385</link>
			<description><![CDATA[<p>Вечер добрый.&nbsp; Работает&nbsp; при запуске скрипта, нажали</p>]]></description>
			<author><![CDATA[null@example.com (evgen_dev)]]></author>
			<pubDate>Sat, 12 Sep 2015 18:14:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97385#p97385</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97115#p97115</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Sat, 05 Sep 2015 16:02:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97115#p97115</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97113#p97113</link>
			<description><![CDATA[<p>Уважаемый, serzh82saratov.<br /></p><div class="codebox"><pre><code>ОФФ: А iCarDuino может принимать сигналы от ардуино, и отправлять в скрипт АНК? Ведь обычно из програмной среды с ардуино работают через сом порт.</code></pre></div><p>Разобрались, может или нет.</p>]]></description>
			<author><![CDATA[null@example.com (evgen_dev)]]></author>
			<pubDate>Sat, 05 Sep 2015 14:00:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97113#p97113</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97112#p97112</link>
			<description><![CDATA[<p>Уважаемый, serzh82saratov. Подскажите как определить крестовину джойстика. Если кнопки joy1-joy10 работают а крестовина нет.&nbsp; Пробывал&nbsp; joy11 не работает.&nbsp; GetKeyState что за команда. Форум помоги.</p>]]></description>
			<author><![CDATA[null@example.com (evgen_dev)]]></author>
			<pubDate>Sat, 05 Sep 2015 13:52:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97112#p97112</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97072#p97072</link>
			<description><![CDATA[<p>Уважаемый, serzh82saratov! Все превосходно работает. Sendкью, то есть СПАСИБО!!! Оба Работают.</p>]]></description>
			<author><![CDATA[null@example.com (evgen_dev)]]></author>
			<pubDate>Fri, 04 Sep 2015 09:19:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97072#p97072</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97066#p97066</link>
			<description><![CDATA[<p><a href="http://pccar.ru/showthread.php?t=16718">http://pccar.ru/showthread.php?t=16718</a> Здесь.</p>]]></description>
			<author><![CDATA[null@example.com (evgen_dev)]]></author>
			<pubDate>Thu, 03 Sep 2015 20:29:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97066#p97066</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97065#p97065</link>
			<description><![CDATA[<div class="codebox"><pre><code>ОФФ: А iCarDuino может принимать сигналы от ардуино? Ведь обычно из програмной среды с ним работают через сом порт</code></pre></div><p> Вроде да.</p>]]></description>
			<author><![CDATA[null@example.com (evgen_dev)]]></author>
			<pubDate>Thu, 03 Sep 2015 20:23:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97065#p97065</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97064#p97064</link>
			<description><![CDATA[<p>ОФФ: А iCarDuino может <span class="bbu">принимать</span> сигналы от ардуино, и отправлять в скрипт АНК? Ведь обычно из програмной среды с ардуино работают через сом порт.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 03 Sep 2015 20:21:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97064#p97064</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97063#p97063</link>
			<description><![CDATA[<p>Я сам сразу не понял, в чем ппроблема. Джойстик&nbsp; или программа Xpadder вина.&nbsp; С клавиатуры все работает.</p>]]></description>
			<author><![CDATA[null@example.com (evgen_dev)]]></author>
			<pubDate>Thu, 03 Sep 2015 20:17:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97063#p97063</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97062#p97062</link>
			<description><![CDATA[<p>Я извеняюсь. Все работает. Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (evgen_dev)]]></author>
			<pubDate>Thu, 03 Sep 2015 20:15:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97062#p97062</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97061#p97061</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 03 Sep 2015 20:09:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97061#p97061</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97060#p97060</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (evgen_dev)]]></author>
			<pubDate>Thu, 03 Sep 2015 19:44:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97060#p97060</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97059#p97059</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Thu, 03 Sep 2015 18:31:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97059#p97059</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Отправить определенный код кнопки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=97047#p97047</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (evgen_dev)]]></author>
			<pubDate>Thu, 03 Sep 2015 11:38:17 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=97047#p97047</guid>
		</item>
	</channel>
</rss>
