<?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=11356&amp;type=atom" />
	<updated>2016-05-29T12:00:28Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=11356</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Работа сценария в зависимости от нажатых клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=104383#p104383" />
			<content type="html"><![CDATA[<p><strong>Alectric</strong>, Спасибо, работает! Однако решил пойти несколько иным путем, используя подсказки из других тем, чтобы иметь возможность добавлять различные условия для различных действий:</p><div class="codebox"><pre><code>/*
[Section]
Undo=2
[End]
*/ 

IniRead, Undo, %A_ScriptFullPath%, Section, Undo

2::
Send, 1
Send, 2
IniWrite, % (Undo := 2), % A_ScriptFullPath, Section, Undo
return

3::
Send, 1
Send, 2
Send, 3
IniWrite, % (Undo := 3), % A_ScriptFullPath, Section, Undo
return

^vk5A:: ; z
SendInput ^{vk5A %Undo%}
Return

</code></pre></div><p>Т.е. если сценарий выполнет внутри программы, например, три действия, то при отмене совершается отмена трех действий. Но часто после вызова сценария могут последовать стандартные единичные действия внутри программы, после которых отмена действия должна работать в привычном режиме.</p><p>Поэтому, необходимо добавить условие, при котором значение Undo сбрасывается на &quot;1&quot;, если после вызова сценария последовало нажатие любых клавиш, кроме: <em>f1, f2, f3,</em> Space, но не кроме <em>+f1</em>, <em>^f2</em> <em>!Space </em>и т.д. Также значение должно сбрасываться при удержании <em>ЛКМ </em>и <em>ПКМ </em>более чем на 0,1 сек., но не при обычном нажатии <em>ЛКМ</em>.</p><p>Помогите, пожалуйста, реализовать данное условие.</p>]]></content>
			<author>
				<name><![CDATA[becauseim]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33149</uri>
			</author>
			<updated>2016-05-29T12:00:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=104383#p104383</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Работа сценария в зависимости от нажатых клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101395#p101395" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#SingleInstance,Force

#InstallKeybdHook
SetFormat,IntegerFast,h ; устанавливаем формат чисел в HEX
starttime:=a_tickcount

; исключения
except=0x10`,0x11`,0x12`,0x70`,0x71`,0x72`,0x7A`,0x4D`,0x20 ; виртуальные коды клавиш, для исключения из списка
;     shift  ctrl  alt    f1    f2    f3   f11    m   Space

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

Label:
a=1
return

^vk5A:: ; ^z
if a
  tooltip,1 ; send,^{vk5A}
else
  tooltip,2 ; send,^{vk5A 2}
return

~+F1::
~+F3::
tooltip,0
a=0
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-02-24T16:39:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101395#p101395</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Работа сценария в зависимости от нажатых клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=101393#p101393" />
			<content type="html"><![CDATA[<p>Необходимо назначить на нажатие сочентания клавиш <strong><span style="color: red">^{z}</span></strong> двойную команду Undo, т.е. <strong><span style="color: red">^{z 2}</span></strong>, но при условии, что перед этим было нажато сочетание клавиш <strong><span style="color: blue">+{f1}</span> </strong>или <strong><span style="color: blue">+{f3}</span></strong>, пропуская при этом ряд клавиш, а именно <span style="color: green"><strong>{f1}</strong>, <strong>{f2}</strong>, <strong>{f3}</strong>, <strong>{f11}</strong>, <strong>{m}</strong>, <strong>{Space}</strong></span>.</p><p>Т.е. если я, например, нажимаю на сочетание кавиш <strong><span style="color: blue">+{f3}</span></strong>, после чего нажимаю повторно одну клавишу <strong><span style="color: green">{f3}</span></strong>, либо не нажму ничего,&nbsp; то последующее нажатие на <strong><span style="color: red">^{z}</span></strong> вызовет двойной шаг назад. В любых других случаях Undo должен работать в привычном режиме.</p>]]></content>
			<author>
				<name><![CDATA[becauseim]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33149</uri>
			</author>
			<updated>2016-02-24T12:34:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=101393#p101393</id>
		</entry>
</feed>
