<?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>http://forum.script-coding.com/viewtopic.php?id=15926</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=15926&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: реакция на отжатие кнопки, как сделать?».]]></description>
		<lastBuildDate>Wed, 16 Dec 2020 20:29:34 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144232#p144232</link>
			<description><![CDATA[<p>Примерно такой код для отпуска W/A/S/D. +постоянного спама M клавиши при удержании ПКМ:</p><div class="codebox"><pre><code>*vk2::	; Полный перехват ПКМ.
SendInput, {W Up}{A Up}{S Up}{D Up}	; Отпустить все клавиши W/A/S/D.
KeyWait, vk2, T.3		; Ожидать отжатия клавиши 0.3 секунды.
If ErrorLevel = 0	; Если ПКМ отжата:
{
 SendInput, {Blind}{vk4D}	; Нажать M
 Return
}

; Если ПКМ зажата более 0.3 сек. то:
While, % GetKeyState(SubStr(A_ThisHotkey,2),&quot;p&quot;)	; Пока зажата ПКМ:
{
 Sleep, 100
 SendInput, {Blind}{vk4D}	; Нажать M
}
Return</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Wed, 16 Dec 2020 20:29:34 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144232#p144232</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144230#p144230</link>
			<description><![CDATA[<p><strong>RacalCucumber</strong></p><p>На сколько мне известно, не все клавиатуры могут обрабатывать несколько обычных клавиш (не модификаторов) за раз.<br />АХК хорошо перехватывает клавиши, но не стоит от него ожидать волшебства или чёрной магии.</p><div class="quotebox"><blockquote><p>- При нажатии на Правую Кнопку Мышки нажать-отпустить кнопку &quot;м&quot;.</p></blockquote></div><p>Выбрать одну строку из кода:</p><div class="codebox"><pre><code>;Нажать M после отжатия ПКМ (с сохранением нажатого модификатора).
*vk2 Up::SendInput, {Blind}{vk4D}	; Полный перехват ПКМ.

*~vk2 Up::SendInput, {Blind}{vk4D}	; &#039;Прозрачный&#039; перехват ПКМ.
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Wed, 16 Dec 2020 19:49:03 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144230#p144230</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144225#p144225</link>
			<description><![CDATA[<div class="quotebox"><cite>__Михаил__ пишет:</cite><blockquote><p>1) Какие у вас девайсы - глубоко побоку, все они имеют стандарт, который понимает комп и соответственно все программы. Т.е. можно не указывать - толку 0.</p></blockquote></div><p>Вы не поверите, но нет. Еще две найденных старых клавиатуры, обычные, работают так же, как и логитех. Похоже я сутки бился головой в криво работающую клавиатуру....</p><div class="quotebox"><cite>__Михаил__ пишет:</cite><blockquote><p>2) Составьте грамотное сообщение как должно получится при нажатии тех или иных клавиш. Больше вариантов. Тогда будет понятна суть.<br />Задачу я понял так: При отпуске любой из клавиш W/A/S/D - нажать M. Результат в 3 сообщении.</p></blockquote></div><p>В итоге оказалось требуется вот что:<br />- При нажатии на Правую Кнопку Мышки нажать-отпустить кнопку &quot;м&quot;.<br />- При удерживаемой Правой Кнопки Мышки отпускание {любой одиночно нажатой кнопки из WASD} или {последней удерживаемой кнопки из комбинации нескольких нажатых кнопок WASD } один раз нажать-отпустить кнопку &quot;м&quot;. <br />- Повторять нажатия-отпускания кнопки &quot;м&quot; в последующих случаях использования кнопок WASD при удерживаемой нажатой Правой Кнопки Мышки.</p>]]></description>
			<author><![CDATA[null@example.com (RacalCucumber)]]></author>
			<pubDate>Wed, 16 Dec 2020 18:02:38 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144225#p144225</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144224#p144224</link>
			<description><![CDATA[<p>1) Какие у вас девайсы - глубоко побоку, все они имеют стандарт, который понимает комп и соответственно все программы. Т.е. можно не указывать - толку 0.<br />2) Составьте грамотное сообщение как должно получится при нажатии тех или иных клавиш. Больше вариантов. Тогда будет понятна суть.</p><p>Задачу я понял так: При отпуске любой из клавиш W/A/S/D - нажать M. Результат в 3 сообщении.</p>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Wed, 16 Dec 2020 17:10:04 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144224#p144224</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144223#p144223</link>
			<description><![CDATA[<p>Ну, на самом деле, я когда начал тред еще и сам не до конца сформулировал логику работы скрипта. Хотя вот как оказалось узнал что несколько хоткеев можно завязать на одно событие.... Сам бы я до такого не додумался бы...</p>]]></description>
			<author><![CDATA[null@example.com (RacalCucumber)]]></author>
			<pubDate>Wed, 16 Dec 2020 17:04:12 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144223#p144223</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144222#p144222</link>
			<description><![CDATA[<p><strong>RacalCucumber</strong></p><p>Если плохо поставлена задача - нет результата. Увы, у нас тут телепатов нет.</p>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Wed, 16 Dec 2020 17:00:45 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144222#p144222</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144221#p144221</link>
			<description><![CDATA[<p>мисс</p>]]></description>
			<author><![CDATA[null@example.com (RacalCucumber)]]></author>
			<pubDate>Wed, 16 Dec 2020 16:46:42 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144221#p144221</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144220#p144220</link>
			<description><![CDATA[<p>Так. Все таки правильное (нет) сформулированное ТЗ половина дела. Все пошло не так...<br />Вопрос теперь уже наверное не по написанию программа в просто &quot;что вообще происходит?!&quot;.</p><p>Что требовалось изначально:<br />- При нажатии на правую кнопку мышки тапнуть кнопку &quot;m&quot;. &quot;м&quot; - это не именно именно мэ а просто некая кнопка. Вот у меня &quot;[&quot;<br />- Если ПКМ удерживается - то по отпусканию кнопок W\A\S\D тапнуть кнопку &quot;m&quot;.</p><p>Был написан вот такой говнокод:<br /></p><div class="codebox"><pre><code>~$*RButton:: 
;IfWinActive, tetris
{
	Sleep, 50
	SendInput, {Blind}{vkDB}
	restart:
	while (GetKeyState(&quot;RButton&quot;, &quot;p&quot;))
	{
		Sleep, 100
		if GetKeyState(&quot;w&quot;, &quot;p&quot;) 
		{
			KeyWait, w
			kps()
			Break	
		}
		if GetKeyState(&quot;s&quot;, &quot;p&quot;)
		{
			KeyWait, s
			kps()
			Break	
		}
		if GetKeyState(&quot;a&quot;, &quot;p&quot;)
		{
			KeyWait, a
			kps()
			Break	
		}
		if GetKeyState(&quot;d&quot;, &quot;p&quot;)
		{
			KeyWait, d
			kps()
			Break	
		}
	}
	if (GetKeyState(&quot;RButton&quot;, &quot;p&quot;))
	{
		Goto restart
	}
}
return

kps()
{
	Sleep, 200
	SendInput, {Blind}{vkDB}	
	return
}</code></pre></div><p>Странности касаются поведения одновременно нажимаемых кнопок WASD в произвольной комбинации: <br />- Клавиатура Logitech G13: <br />последняя, из произвольно одновременно ранее удерживаемых, отжатая кнопка вызывает тап &quot;[&quot; Типа &quot;как задумывалось&quot;. На самом деле нет, но именно так и должна работать по уму.&nbsp; </p><p>- Клавиатура Cherry, подключенная через ps\2-usb хаб: <br />1. нажимаю одну кнопку <br />2. Нажимаю вторую кнопку<br />3. Отпускаю вторую кнопку<br />4. тапается &quot;[&quot;. <br />5. Отпускаю первую кнопку<br />6. ничего не происходит...</p><p>Причем если я делаю отладочную закладку через msgbox в функции kps() - утверждается что после отпускания второй кнопки (п.3-п.4) статус первой уже U (отпущена). Несмотря на то, что физически она нажата. </p><p>Теперь вопрос. Где норма. А где отклонение? И попробуйте, пожалуйста, как у вас работает этот скрипт?</p>]]></description>
			<author><![CDATA[null@example.com (RacalCucumber)]]></author>
			<pubDate>Wed, 16 Dec 2020 16:39:33 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144220#p144220</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144216#p144216</link>
			<description><![CDATA[<p><strong>__Михаил__</strong><br />Что означает SendInput, {Blind} ?<br />И чем лучше SendInput от Send? Если SendInput лучше то какая польза от Send?</p>]]></description>
			<author><![CDATA[null@example.com (Vsevolod)]]></author>
			<pubDate>Wed, 16 Dec 2020 12:56:18 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144216#p144216</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144215#p144215</link>
			<description><![CDATA[<p><strong>RacalCucumber</strong><br />Полностью согласен</p>]]></description>
			<author><![CDATA[null@example.com (Vsevolod)]]></author>
			<pubDate>Wed, 16 Dec 2020 12:55:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144215#p144215</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144214#p144214</link>
			<description><![CDATA[<p><strong>RacalCucumber</strong></p><p>Нужно больше на форумах сидеть - там можно многому научиться.</p>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Tue, 15 Dec 2020 19:19:23 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144214#p144214</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144213#p144213</link>
			<description><![CDATA[<p>как же хреново быть тупым.... спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (RacalCucumber)]]></author>
			<pubDate>Tue, 15 Dec 2020 19:18:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144213#p144213</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144212#p144212</link>
			<description><![CDATA[<p><strong>Vsevolod</strong></p><p>О не надо постить портянки на 100500+ строк!</p><br /><p><strong>RacalCucumber</strong></p><p>С эмуляцией нажатия самой себя:</p><div class="codebox"><pre><code>*W::
*S::
*A::
*D::
S := SubStr(A_ThisHotkey, 2)
SendInput, {%S% Down}
KeyWait, %S%, U
SendInput, {%S% Up}
SendInput, {Blind}{vk4D}	;	M - клавиша.
Return</code></pre></div><br /><p>Без эмуляции - &#039;прозрачный перехват&#039; клавиш. Так даже правильнее:</p><div class="codebox"><pre><code>*~W Up::
*~S Up::
*~A Up::
*~D Up::
SendInput, {Blind}{vk4D}	;	M - клавиша.
Return
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (__Михаил__)]]></author>
			<pubDate>Tue, 15 Dec 2020 19:06:20 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144212#p144212</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144211#p144211</link>
			<description><![CDATA[<p><strong>RacalCucumber</strong><br />Что означает &quot;нажатие клавиши хоткея было прозрачным&quot; я не понимаю. Но вот скрипт который вам нужен. Есть более сложный способ, но это самый простой.<br /></p><div class="codebox"><pre><code>*~$A UP:: ; Если отпущена то...
Sleep, 30 ; Подождать 30 миллисекунд.
Send, {M down} ; Зажать кнопку M.
Sleep, 5 ; Подождать 5 миллисекунд.
Send, {M up} ; Отпустить кнопку M.
return ; Ждать следующего действия пользователя.

*~$S UP:: ; Если отпущена то...
Sleep, 30 ; Подождать 30 миллисекунд.
Send, {M down} ; Зажать кнопку M.
Sleep, 5 ; Подождать 5 миллисекунд.
Send, {M up} ; Отпустить кнопку M.
return ; Ждать следующего действия пользователя.

*~$D UP:: ; Если отпущена то...
Sleep, 30 ; Подождать 30 миллисекунд.
Send, {M down} ; Зажать кнопку M.
Sleep, 5 ; Подождать 5 миллисекунд.
Send, {M up} ; Отпустить кнопку M.
return ; Ждать следующего действия пользователя.

*~$W UP:: ; Если отпущена то...
Sleep, 30 ; Подождать 30 миллисекунд.
Send, {M down} ; Зажать кнопку M.
Sleep, 5 ; Подождать 5 миллисекунд.
Send, {M up} ; Отпустить кнопку M.
return ; Ждать следующего действия пользователя.</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Vsevolod)]]></author>
			<pubDate>Tue, 15 Dec 2020 18:59:34 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144211#p144211</guid>
		</item>
		<item>
			<title><![CDATA[AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=144210#p144210</link>
			<description><![CDATA[<p>Задача:<br />При отпускании одной из перечисленной кнопки, A\S\D\W кратковременно нажать кнопку m</p><p>Я как то жил на логитехе и там это решалось простыми строчками на LUA:<br />	if (event == &quot;G_RELEASED&quot; and (arg == 4 or arg == 11 or arg == 10 or&nbsp; arg == 12)) then ---если отпущена одни из перечисленных кнопка<br />		Sleep(30) ---подождать остановки персонажа<br />		PressKey(&quot;m&quot;) --- нажать<br />		Sleep (5) ---подождать<br />		ReleaseKey(&quot;m&quot;) ---отпустить<br />	end</p><p>где arg == 4\11\10\12 это внутренние имена кнопок у девайсов логитеха, которым присвоены соответствующие кнопки обычной клавиатуры.</p><p>А как это перенести на AHK? </p><p>Если я пытаюсь сделать это через hotkeys типа <br />W:: <br />;-код-<br />return </p><p>соответствующая кнопка то, указанная в строке хоткея, свое значение то дальше AHK не передает...</p><p>Есть какая то возможность у AHK сделать так, что бы нажатие клавиши хоткея было &quot;прозрачным&quot;?</p>]]></description>
			<author><![CDATA[null@example.com (RacalCucumber)]]></author>
			<pubDate>Tue, 15 Dec 2020 17:41:29 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=144210#p144210</guid>
		</item>
	</channel>
</rss>
