<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6981&amp;type=atom" />
	<updated>2012-03-23T16:30:07Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=6981</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58302#p58302" />
			<content type="html"><![CDATA[<p><strong>MAGISTR</strong> как просил сделал для себя, но ты меня с подвигнул... я бы долго собирался. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>1. Убрано то что тебе не нужно.<br />2. Обработка только одной оси и одного направления джойстика, остальное пишется по аналогии. </p><div class="codebox"><pre><code>#SingleInstance
#Persistent

JoystickNumber := 1

;---Граничные условия
JoyZoneUp := 25
JoyZoneDn := 100 - JoyZoneUp

;---Флаги Left Right Up Down стрелок 
; Истина - кнопка не нажата
flagL := true
flagR := true
flagU := true 
flagD := true

;********Отладочные переменные
countUP := 0
countDN := 0
;********


SetTimer, LeftJoystick, 10

return


;==========Секция таймера=================
LeftJoystick:
SetFormat, float, 03
GetKeyState, JoyX, %JoystickNumber%JoyX

;--------ОТЛАДКА---------
; Alert Exit! =) 
GetKeyState, state, %JoystickNumber%Joy1  ; Первая кнопка джойстика.
if (state = &quot;D&quot;)
 ExitApp
;------------------------- 

;*********Стрелка LEFT
if (JoyX &lt; JoyZoneUp and  flagL) 
 {
  countDN++  ;&lt;----Для отладки (убрать)
  ToolTip  Нажали = %countDN% ;&lt;----Для отладки (убрать)
  ;Send, {Left Down} после проверки раз комментировать
  flagL := false
 }
else if (JoyX &gt; JoyZoneUp and !flagL) 
 {
  countUP++ ;&lt;----Для отладки (убрать)
  ToolTip  Отжали = %countUP%  ;&lt;----Для отладки (убрать)
  ;Send, {Left Up} после проверки раз комментировать
  flagL := true
 }
;*********
return
;================================</code></pre></div><p>Функция автоповтора не реализована, но если она требуется, то могу и её сделать в режиме On/Off по произвольной клавише.</p><p>Удачного полёта <img src="//forum.script-coding.com/img/smilies/big_smile.png" width="15" height="15" /></p><p>P.S. Секция аварийного выхода </p><div class="codebox"><pre><code>;--------ОТЛАДКА---------
; Alert Exit! =) 
GetKeyState, state, %JoystickNumber%Joy1  ; Первая кнопка джойстика.
if (state = &quot;D&quot;)
 ExitApp
;-------------------------</code></pre></div><p>сделана для того что бы ты не мучался с подвисанием, ну а вместо первой кнопки джойстика можно использовать любую кнопку на клавиатуре или мышке.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2012-03-23T16:30:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58302#p58302</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58271#p58271" />
			<content type="html"><![CDATA[<p>Тогда зайди на форум &quot;Сухого&quot; там ребята много что делают в области переделки джойстиков (на уровне железа)</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2012-03-22T19:02:10Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58271#p58271</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58269#p58269" />
			<content type="html"><![CDATA[<p>Бесполезно. <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /> Кстати, открытие чего либо по двойному клику левой кнопкой мыши тоже не работает. Просто нет реакции. Ну и зависание курсора при попытке закрыть или свернуть браузер мышкой. Я уж подумываю разобрать эти педали и заменить резисторы на переключатели такого же типа и вставить туда схему от клавиатуры, как <a href="http://www.youtube.com/watch?v=a3NxQ60E72k&amp;feature=player_embedded">здесь</a> например. <img src="//forum.script-coding.com/img/smilies/hmm.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[MAGISTR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27751</uri>
			</author>
			<updated>2012-03-22T18:56:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58269#p58269</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58266#p58266" />
			<content type="html"><![CDATA[<p>Попробуй так, я добавил флаг - переменная FlagY<br /></p><div class="codebox"><pre><code>#SingleInstance
#Persistent
 
JoystickNumber := 1
JoyZone := 20

; &quot;+1&quot; добавлен из-за сравнения &quot;больше&quot;, если поставить &quot;больше или равно&quot; то &quot;+1&quot; не нужен
JoyZoneY := 100 - JoyZone + 1
FlagY := false

SetTimer, Joystick, 10

 
Joystick:
SetFormat, float, 03
GetKeyState, JoyX, %JoystickNumber%JoyX ; не обязательно, если нет обработки X-оси.
GetKeyState, JoyY, %JoystickNumber%JoyY

if JoyY &gt; %JoyZoneY% and FlagY
 {
 SendPlay {- Down}
 FlagY := false 
 }

if JoyY &lt; %JoyZoneY% and !FlagY
 {
 SendPlay {- Up}
 FlagY := true
 }
return</code></pre></div><p>Вроде правильно - не проверял, но думаю общая идея ясна</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2012-03-22T17:15:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58266#p58266</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58260#p58260" />
			<content type="html"><![CDATA[<p>Скорость повтора была громадная при простейшем бинде кнопки на ось.<br />If (JY &gt; 050)<br />Send {-}</p><p>При этом варианте всё великолепно работало за исключением одного неприятного момента: индикаторы, которые забиндены в приложении на &quot;-&quot; мигали с такой скоростью, что становились просто невидимыми.</p><p>«Ну надо проверять когда срабатывает секция (используй отладочные точки)» — Из этого предложения ничего не понял, поэтому постараюсь дождаться этого: «Буду делать аналогичное - скажу». В любом случае спасибо. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[MAGISTR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27751</uri>
			</author>
			<updated>2012-03-22T16:26:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58260#p58260</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58256#p58256" />
			<content type="html"><![CDATA[<p>Ну надо проверять когда срабатывает секция (используй отладочные точки)</p><p>Joystick:</p><p>......</p><p>return</p><p>Буду делать аналогичное - скажу, правда я не на ось буду вешать, а на кнопки джойстика, но думаю принцип будет тот же.</p><p>P.S. У меня &quot;курсор замирал намертво&quot; при большой скорости повтора - попробуй покапать в этом направлении и также если клавиша нажата, то не надо её повторно нажимать, ну как и отжимать.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2012-03-22T14:59:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58256#p58256</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58255#p58255" />
			<content type="html"><![CDATA[<p>Indomito, благодарю! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>Хм, правда здесь происходит та же самая аномалия:</p><div class="quotebox"><blockquote><p>Но начались странные аномалии, сводящие на нет любые преимущества. Все клавиши начали срабатывать с задержкой, модификаторы работают, но странно. Например Alt+Shift перестал переключать раскладку клавиатуры, а при попытке свернуть браузер левой кнопкой мыши курсор виснет на одном месте и отказывается двигаться, оживая только после Alt+Tab, который работает. Тем не менее в игре Alt+Shift работает (хотя все клавиши, как я уже говорил, работают с задержкой). Мистика. %)</p></blockquote></div><p>Курсор также намертво зависает при попытке закрыть окно нажатием на крестик. Оживает также по Alt+Tab. На Alt стоит автоповтор с огромной скоростью. То есть она не зажимается, но при этом Alt+Tab работает.&nbsp; Хм. И это не во всех окнах происходит. Что это вообще может быть?</p>]]></content>
			<author>
				<name><![CDATA[MAGISTR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27751</uri>
			</author>
			<updated>2012-03-22T14:54:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58255#p58255</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58247#p58247" />
			<content type="html"><![CDATA[<p>Да, сейчас её подредактирую...</p><p>Приблизительно так: </p><div class="codebox"><pre><code>#SingleInstance
#Persistent
 
JoystickNumber := 1
JoyZone := 20

; &quot;+1&quot; добавлен из-за сравнения &quot;больше&quot;, если поставить &quot;больше или равно&quot; то &quot;+1&quot; не нужен
JoyZoneY := 100 - JoyZone + 1
 
SetTimer, Joystick, 10

 
Joystick:
SetFormat, float, 03
GetKeyState, JoyX, %JoystickNumber%JoyX ; не обязательно, если нет обработки X-оси.
GetKeyState, JoyY, %JoystickNumber%JoyY

if JoyY &gt; %JoyZoneY%
 SendPlay {- Down}
else
 SendPlay {- Up}

return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2012-03-22T13:32:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58247#p58247</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58246#p58246" />
			<content type="html"><![CDATA[<p>Это вписать в конец той большой конструкции?</p>]]></content>
			<author>
				<name><![CDATA[MAGISTR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27751</uri>
			</author>
			<updated>2012-03-22T13:12:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58246#p58246</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58242#p58242" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>if y&gt;81
 Send, {- Down}
if y&lt;79
 Send, {- Up}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2012-03-22T12:34:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58242#p58242</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58237#p58237" />
			<content type="html"><![CDATA[<p>Я извиняюсь если буду говорить глупости, просто впервые поставил AutoHotkey несколько дней назад и знаю лишь простейшие вещи. У меня руль с педалями. От него интересуют только педали. JoystickTest.ahk показывает что педали это ось Y. Если обе педали отпущены, то Y = 050. Если нажимать левую, то этот показатель плавно увеличивается от 050 до 100, а если правую, то падает до Y000. Задачей является повесить клавишу &quot;-&quot; на нажатие левой педали, то есть возрастание Y от 050 до 100. Например от Y080 до Y100 — клавиша нажата. Всё что меньше Y080 —&nbsp; клавиша отпущена. При нажатии этой клавиши клавиатура и мышь должны работать в самом обычном режиме, как если бы я нажимал &quot;-&quot; на клавиатуре. То есть без каких либо глюков с модификаторами и общих задержек клавиш. Вроде кое-как настроил эту конструкцию под нажатие &quot;-&quot;, но опять те же самые глюки с курсором, задержками и т.п. Отчаяние. <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[MAGISTR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27751</uri>
			</author>
			<updated>2012-03-22T12:19:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58237#p58237</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58231#p58231" />
			<content type="html"><![CDATA[<p>Попробуй вместо цикла использовать такую конструкцию.<br /></p><div class="codebox"><pre><code>#SingleInstance
#Persistent

JoystickNumber := 1
SetTimer, RightJoystick, 10  ; Для JoyX  и JoyY осей
SetTimer, LeftJoystick, 10  ; Для JoyZ  и JoyR осей

RightJoystick:
SetFormat, float, 03
GetKeyState, JoyX, %JoystickNumber%JoyX
GetKeyState, JoyY, %JoystickNumber%JoyY
; код обработки
return

LeftJoystick:
; аналогично RightJoystick:
return</code></pre></div><p>и не забудь контролировать диапозон, ну скажем так например </p><div class="codebox"><pre><code>JoystickNumber := 1
JoyZoneUp := 25
JoyZoneDn := 100 - JoyZoneUp
SetTimer, LeftJoystick, 10  ; Для JoyZ  и JoyR осей

LeftJoystick:
SetFormat, float, 03
GetKeyState, JoyX, %JoystickNumber%JoyX
GetKeyState, JoyY, %JoystickNumber%JoyY
{
OutJoyXY := &quot;JoyX= &quot; JoyX &quot;,  JoyY= &quot; JoyY ; Отладка
ToolTip  %OutJoyXY% ; Отладка
}
if JoyX &lt; %JoyZoneUp%
 {
 SendPlay {Left}
 }
if JoyX &gt; %JoyZoneDn%
 {
 SendPlay {Right}
 }
if JoyY &lt; %JoyZoneUp%
 {
 SendPlay {Up}
 }
if JoyY &gt; %JoyZoneDn%
 {
 SendPlay {Down}
 } 
return</code></pre></div><p>т.е. джойстику нужна мёртвая зона около &quot;нуля&quot; иначе он будет работать всегда, т.к. оси сделаны на резисторах, если у тебя конечно не Saitek последних моделей начиная с X52/X52 Pro.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2012-03-22T11:09:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58231#p58231</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58229#p58229" />
			<content type="html"><![CDATA[<p>В конце концов сработал вот этот вариант:</p><div class="codebox"><pre><code>Loop
{
GetKeyState, YJ, JoyY
If (YJ &gt; 077)
SendPlay {Blind}{- down}
If (YJ &lt; 077)
SendPlay {Blind}{- up}
}</code></pre></div><p>Но начались странные аномалии, сводящие на нет любые преимущества. Все клавиши начали срабатывать с задержкой, модификаторы работают, но странно. Например Alt+Shift перестал переключать раскладку клавиатуры, а при попытке свернуть браузер левой кнопкой мыши курсор виснет на одном месте и отказывается двигаться, оживая только после Alt+Tab, который работает. Тем не менее в игре Alt+Shift работает (хотя все клавиши, как я уже говорил, работают с задержкой). Мистика. %)</p>]]></content>
			<author>
				<name><![CDATA[MAGISTR]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27751</uri>
			</author>
			<updated>2012-03-22T11:00:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58229#p58229</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58227#p58227" />
			<content type="html"><![CDATA[<p><strong>Indomito</strong>, извините, не смогу поддержать ваши размышления ответной репликой.</p>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-03-22T10:36:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58227#p58227</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Бинд клавиши на JoyY — отказ клавиш-модификаторов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58221#p58221" />
			<content type="html"><![CDATA[<p>Не понял а зачем <strong>GetKeyState, YJ, JoyY</strong> это же проверка оси, а не клавиши или я чего то недопонимаю? <br />Или же просто что ось, что кнопка - без разницы?</p><p>И ещё как проще опрашивать по таймеру или же можно как обычную кнопку на клавиатуре?</p><p>P.S. Просто фокус с осью не пройдёт, а вот судя по справке можно использовать второй вариант(как обычную кнопку на клавиатуре), правда я не уверен.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2012-03-22T09:54:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58221#p58221</id>
		</entry>
</feed>
