<?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="http://forum.script-coding.com/extern.php?action=feed&amp;tid=15926&amp;type=atom" />
	<updated>2020-12-16T20:29:34Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=15926</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144232#p144232" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2020-12-16T20:29:34Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144232#p144232</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144230#p144230" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2020-12-16T19:49:03Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144230#p144230</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144225#p144225" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[RacalCucumber]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41299</uri>
			</author>
			<updated>2020-12-16T18:02:38Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144225#p144225</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144224#p144224" />
			<content type="html"><![CDATA[<p>1) Какие у вас девайсы - глубоко побоку, все они имеют стандарт, который понимает комп и соответственно все программы. Т.е. можно не указывать - толку 0.<br />2) Составьте грамотное сообщение как должно получится при нажатии тех или иных клавиш. Больше вариантов. Тогда будет понятна суть.</p><p>Задачу я понял так: При отпуске любой из клавиш W/A/S/D - нажать M. Результат в 3 сообщении.</p>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2020-12-16T17:10:04Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144224#p144224</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144223#p144223" />
			<content type="html"><![CDATA[<p>Ну, на самом деле, я когда начал тред еще и сам не до конца сформулировал логику работы скрипта. Хотя вот как оказалось узнал что несколько хоткеев можно завязать на одно событие.... Сам бы я до такого не додумался бы...</p>]]></content>
			<author>
				<name><![CDATA[RacalCucumber]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41299</uri>
			</author>
			<updated>2020-12-16T17:04:12Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144223#p144223</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144222#p144222" />
			<content type="html"><![CDATA[<p><strong>RacalCucumber</strong></p><p>Если плохо поставлена задача - нет результата. Увы, у нас тут телепатов нет.</p>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2020-12-16T17:00:45Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144222#p144222</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144221#p144221" />
			<content type="html"><![CDATA[<p>мисс</p>]]></content>
			<author>
				<name><![CDATA[RacalCucumber]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41299</uri>
			</author>
			<updated>2020-12-16T16:46:42Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144221#p144221</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144220#p144220" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[RacalCucumber]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41299</uri>
			</author>
			<updated>2020-12-16T16:39:33Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144220#p144220</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144216#p144216" />
			<content type="html"><![CDATA[<p><strong>__Михаил__</strong><br />Что означает SendInput, {Blind} ?<br />И чем лучше SendInput от Send? Если SendInput лучше то какая польза от Send?</p>]]></content>
			<author>
				<name><![CDATA[Vsevolod]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40918</uri>
			</author>
			<updated>2020-12-16T12:56:18Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144216#p144216</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144215#p144215" />
			<content type="html"><![CDATA[<p><strong>RacalCucumber</strong><br />Полностью согласен</p>]]></content>
			<author>
				<name><![CDATA[Vsevolod]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40918</uri>
			</author>
			<updated>2020-12-16T12:55:15Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144215#p144215</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144214#p144214" />
			<content type="html"><![CDATA[<p><strong>RacalCucumber</strong></p><p>Нужно больше на форумах сидеть - там можно многому научиться.</p>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2020-12-15T19:19:23Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144214#p144214</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144213#p144213" />
			<content type="html"><![CDATA[<p>как же хреново быть тупым.... спасибо.</p>]]></content>
			<author>
				<name><![CDATA[RacalCucumber]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41299</uri>
			</author>
			<updated>2020-12-15T19:18:15Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144213#p144213</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144212#p144212" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[__Михаил__]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40928</uri>
			</author>
			<updated>2020-12-15T19:06:20Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144212#p144212</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144211#p144211" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Vsevolod]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40918</uri>
			</author>
			<updated>2020-12-15T18:59:34Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144211#p144211</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: реакция на отжатие кнопки, как сделать?]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=144210#p144210" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[RacalCucumber]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=41299</uri>
			</author>
			<updated>2020-12-15T17:41:29Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=144210#p144210</id>
		</entry>
</feed>
