<?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=8608&amp;type=atom" />
	<updated>2014-04-08T15:48:18Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8608</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81586#p81586" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Steve Key пишет:</cite><blockquote><p>Без ~ попробую.</p></blockquote></div><p>Без ~ работает, вроде, получше, но что-то не то?…<br />Попытаюсь понять, что не устраивает, отпишусь.</p>]]></content>
			<author>
				<name><![CDATA[Steve Key]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1104</uri>
			</author>
			<updated>2014-04-08T15:48:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81586#p81586</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81569#p81569" />
			<content type="html"><![CDATA[<p>Так это таймер без паузы, аналог команды GoSub. Сделано для того, чтобы не привязывать поток к хоткею. Это как раз и гарантирует перезапуск при каждом нажатии Shift.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-04-07T20:15:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81569#p81569</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81568#p81568" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>А Вы какой таймер имеете ввиду?</p></blockquote></div><p>ShiftUp<br />Без ~ попробую.</p>]]></content>
			<author>
				<name><![CDATA[Steve Key]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1104</uri>
			</author>
			<updated>2014-04-07T20:09:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81568#p81568</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81566#p81566" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>когда бы таймер перезапускался, то оно бы &quot;стояло&quot; в форме &quot;нажат шифт&quot;…</p></blockquote></div><p>А Вы какой таймер имеете ввиду?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-04-07T18:46:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81566#p81566</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81565#p81565" />
			<content type="html"><![CDATA[<p>Ну так это обработчик FAR реагирует на событие Shift Down, так как ему и положено, можете попробовать Shift без ~, событие Shift Up происходит только после последнего нажатия Shift через 1 секунду, смотрите:<br /></p><div class="codebox"><pre><code>
~Shift::   
    ToolTip % (Start := A_TickCount) &quot; {Shift Down}&quot; 
    Input
    SetTimer, ShiftUp, -1
    Return
     
ShiftUp:
    Input, v, L1 T1 V
    If ErrorLevel != NewInput
        ToolTip % A_TickCount - Start &quot; {Shift Up}&quot;
    Return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-04-07T17:32:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81565#p81565</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81564#p81564" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Ну он и перезапускается. А задержка 10 мс не может быть заметна.</p></blockquote></div><p>Заметил, вот запущен FAR, там меню нижнее меняется в зависимости от нажатого шифта, в частности.<br />Беру и &quot;долблю&quot; (с запущенной Вашей программой, ессно!) по шифту — и вижу, что меню периодически меняется, когда бы таймер перезапускался, то оно бы &quot;стояло&quot; в форме &quot;нажат шифт&quot;…</p>]]></content>
			<author>
				<name><![CDATA[Steve Key]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1104</uri>
			</author>
			<updated>2014-04-07T14:39:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81564#p81564</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81563#p81563" />
			<content type="html"><![CDATA[<p>Правильнее так:<br /></p><div class="codebox"><pre><code>
Shift::  
    SendInput {Shift Down}
    Input
    SetTimer, ShiftUp, -1 
    Return
     
ShiftUp:
    Input, v, L1 T1 V 
    If ErrorLevel != NewInput
        SendInput {Shift Up} 
    Return
</code></pre></div><p>-------------<br /></p><div class="quotebox"><blockquote><p>Вот бы ещё сделать, чтобы таймер перезапускался заново при каждом нажатии Shift, а так он отрабатывает некую выдержку, затем новое нажатие его заново запускает.</p></blockquote></div><p>Ну он и перезапускается. А задержка 10 мс не может быть заметна. Без SetBatchLines это вообще таймаут выполнения строк кода.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-04-07T13:16:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81563#p81563</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81562#p81562" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>С многократными нажатиями Shift не хорошо получается, тогда может так:</p></blockquote></div><p>Вот бы ещё сделать, чтобы таймер перезапускался заново при каждом нажатии Shift, а так он отрабатывает некую выдержку, затем новое нажатие его заново запускает.</p>]]></content>
			<author>
				<name><![CDATA[Steve Key]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1104</uri>
			</author>
			<updated>2014-04-07T12:54:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81562#p81562</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81557#p81557" />
			<content type="html"><![CDATA[<p>С многократными нажатиями Shift не хорошо получается, тогда может так:<br /></p><div class="codebox"><pre><code>
Shift::  
    SendInput {Shift Down}
    SetTimer, ShiftUp, -1 
    Return
     
ShiftUp:
    Input, SingleKey, L1 T1 V 
    If ErrorLevel != NewInput
        SendInput {Shift Up} 
    Return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-04-07T11:28:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81557#p81557</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81553#p81553" />
			<content type="html"><![CDATA[<p>Значит не правильно понял задачу. Но тогда зачем такой длинный код.<br /></p><div class="codebox"><pre><code>
Shift:: 
    SendInput {Shift Down}
    Input, SingleKey, L1 T1 V
    SendInput {Shift Up} 
    Return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-04-07T11:14:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81553#p81553</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81546#p81546" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Проще дописать минус.</p></blockquote></div><p>Тут Вы совершенно правы, я это читал когда-то, но забыл, ибо программирую на AHK «от случая к случаю»...</p><div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Вопрос в смысле проверки A_PriorHotkey. Проверки ST вполне достаточно.</p></blockquote></div><p>А вот тут Вы заблуждаетесь, если проверять только флаг, то шифт будет активен всегда ровно секунду (в нашем случае), даже если мы нажмём много буквенных клавиш, и все отобразятся заглавными, нам же нужно, чтобы именно одна буква «капитализировалась»...</p>]]></content>
			<author>
				<name><![CDATA[Steve Key]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1104</uri>
			</author>
			<updated>2014-04-07T09:40:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81546#p81546</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81535#p81535" />
			<content type="html"><![CDATA[<p>Проще дописать минус.<br /></p><div class="codebox"><pre><code> ~Shift::
  ST := 1
  settimer, ShiftTimer, -1000 
return


ShiftTimer:
  ST := 0
  return </code></pre></div><br /><p>Вопрос в смысле проверки A_PriorHotkey. Проверки ST вполне достаточно. Участие A_PriorKey было бы понятно наполовину, но A_PriorHotkey&nbsp; зачем.<br /></p><div class="codebox"><pre><code> #If ST</code></pre></div><p> По мне, тут вполне достаточно.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-04-07T07:39:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81535#p81535</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81534#p81534" />
			<content type="html"><![CDATA[<p>Хм, действительно, я остановился на стадии «работает - не трогай»...<br />Надо подправить:<br /></p><div class="codebox"><pre><code>#If (A_PriorHotkey = &quot;~Shift&quot;) and (ST = 1)</code></pre></div><p>и<br /></p><div class="codebox"><pre><code>ShiftTimer:
  settimer, ShiftTimer, off
  ST := 0
  return </code></pre></div>]]></content>
			<author>
				<name><![CDATA[Steve Key]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1104</uri>
			</author>
			<updated>2014-04-07T07:12:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81534#p81534</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81533#p81533" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>If A_PriorHotkey = &quot;~Shift&quot; and ST = 1</p></blockquote></div><p>А каков смысл использования в условии A_PriorHotkey?<br />И зачем постоянно включенный таймер?</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2014-04-07T06:40:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81533#p81533</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Аналог "мертвых клавиш" и режима "залипания" клавиш]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=81528#p81528" />
			<content type="html"><![CDATA[<p>По залипанию шифта — шикарная штука! Весьма помогает.<br />Всё-же, практически следует ограничить время такого &quot;залипания&quot;, а то нажал полчаса назад шифт, а он до сих пор залипши…<br />Также надо дать возможность отменить залипание ранее, чем истечёт &quot;его время&quot;.<br /></p><div class="codebox"><pre><code>ST := 0
  return

~Shift::
  ST := 1
  settimer, ShiftTimer, 1000 ; Кол-во миллисекунд для сохранения состояния шифта
  return

#If A_PriorHotkey = &quot;~Shift&quot; and ST = 1

  BackSpace::return

    vk51::+vk51  ; Й
    vk57::+vk57  ; Ц
    vk45::+vk45  ; У
    vk52::+vk52  ; К
    vk54::+vk54  ; Е
    vk59::+vk59  ; Н
    vk55::+vk55  ; Г
    vk49::+vk49  ; Ш
    vk4F::+vk4F  ; Щ
    vk50::+vk50  ; З
    vkDB::+vkDB  ; Х
    vkDD::+vkDD  ; Ъ
    
    vk41::+vk41  ; Ф
    vk53::+vk53  ; Ы
    vk44::+vk44  ; В
    vk46::+vk46  ; А
    vk47::+vk47  ; П
    vk48::+vk48  ; Р
    vk4A::+vk4A  ; О
    vk4B::+vk4B  ; Л
    vk4C::+vk4C  ; Д
    vkBA::+vkBA  ; Ж
    vkDE::+vkDE  ; Э
    
    vk5A::+vk5A  ; Я
    vk58::+vk58  ; Ч
    vk43::+vk43  ; С
    vk56::+vk56  ; М
    vk42::+vk42  ; И
    vk4E::+vk4E  ; Т
    vk4D::+vk4D  ; Ь
    vkBC::+vkBC  ; Б
    vkBE::+vkBE  ; Ю
    vkBF::+vkBF  ; .
    
    vkC0::+vkC0  ; Ё
    vk31::+vk31  ; 1
    vk32::+vk32  ; 2
    vk33::+vk33  ; 3
    vk34::+vk34  ; 4
    vk35::+vk35  ; 5
    vk36::+vk36  ; 6
    vk37::+vk37  ; 7
    vk38::+vk38  ; 8
    vk39::+vk39  ; 9
    vk30::+vk30  ; 0
    vkBD::+vkBD  ; -
    vkBB::+vkBB  ; =
    
#If

ShiftTimer:
  ST := 0
  return 
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Steve Key]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1104</uri>
			</author>
			<updated>2014-04-06T14:26:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=81528#p81528</id>
		</entry>
</feed>
