<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AutoHotkey: Джойстик вместо мыши]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=759&amp;type=atom" />
	<updated>2011-07-09T07:52:44Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=759</id>
		<entry>
			<title type="html"><![CDATA[Re: AutoHotkey: Джойстик вместо мыши]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=49786#p49786" />
			<content type="html"><![CDATA[<p>Скрипт хороший, но почемуто он у меня работает только в панели управления Windows, с чем это может быть связано? открываю панель управления джойстик управляет мышью, как только закрываю джойстик перестает работать как мышь. У меня Windows7 64 bit, Autohotkeys под 64bit последней версии. <br />Заранее спасибо!</p><p>Извиняюсь, рано написал оказывается некоторые активные окна глушат джойстик, поэтому управление пропадает временами.</p>]]></content>
			<author>
				<name><![CDATA[Tims]]></name>
			</author>
			<updated>2011-07-09T07:52:44Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=49786#p49786</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AutoHotkey: Джойстик вместо мыши]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=40743#p40743" />
			<content type="html"><![CDATA[<p>Чудный скрипт! Пытаюсь настроить более чёткую работу.</p>]]></content>
			<author>
				<name><![CDATA[Pokerist]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24990</uri>
			</author>
			<updated>2010-10-22T23:52:21Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=40743#p40743</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AutoHotkey: Джойстик вместо мыши]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=30724#p30724" />
			<content type="html"><![CDATA[<p>спасибо! помогло и всё отлично работает! респект тебе огромнейший!</p>]]></content>
			<author>
				<name><![CDATA[ыЧ]]></name>
			</author>
			<updated>2009-11-17T01:02:38Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=30724#p30724</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AutoHotkey: Джойстик вместо мыши]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=5398#p5398" />
			<content type="html"><![CDATA[<p>Насколько знаю, джойстик с помощью АНК не спрятать. Т.е. одновременно будут видны симулированные события мыши и настоящие события джойстика.</p><p>Что касается твоей просьбы, то сам я вряд ли смогу существенно помочь, т.к. джойстика у меня нет и не на чем тестить пробные варианты кода. Более того, у меня его никогда не было и я смутно представляю, какая там кнопка главная и какая неглавная. Но думаю, что если ОЧЕНЬ НАДО, то ты сам сможешь докопаться. Пробуй и смотри, что получается.</p><p>Далее следует скрипт из справки АНК, который будто бы превращает джойстик в мышь.<br /></p><div class="quotebox"><blockquote><p>Этот скрипт превращает джойстик в трёхкнопочную мышь. Он позволяет перетаскивать каждой кнопкой, точно так же как кнопкой мыши, и фактически не нагружает процессор. Также он будет двигать курсор быстрее в зависимости от того, как велико отклонение джойстика от центра. Вы можете изменять различные настройки в верхней части скрипта.</p></blockquote></div><div class="codebox"><pre><code>; Увеличьте это значение, чтобы курсор двигался быстрее.
JoyMultiplier = 0.30

; Уменьшите это значение, чтобы курсор начинал двигаться при меньшем отклонении
; осей джойстика. Однако, может понадобиться калибровка джойстика, чтобы добиться
; его хорошей центровки и избежать дрейфа курсора. С хорошо отцентрованным
; джойстиком может использоваться значение 1.
JoyThreshold = 3

; Измените значение на true, чтобы инвертировать ось Y и заставить мышь
; двигаться вертикально в направлении, обратном движению рукоятки (или как там
; эта штука называется - YMP).
InvertYAxis := false

; Измените эти значения, чтобы использовать для кнопок мыши другие кнопки 
; джойстика, а не 1, 2 и 3. Возможные значения от 1 до 32.
ButtonLeft = 1
ButtonRight = 2
ButtonMiddle = 3

; Если ваш джойстик имеет POV control (понятия не имею, что за фигня - YMP),
; вы можете использовать его как колесо мыши. Значение ниже означает количество
; миллисекунд между поворотами колеса. Уменьшите, чтобы ускорить колесо.
WheelDelay = 250

; Если в системе больше одного джойстика, укажите здесь номер того, который
; нужно использовать.
JoystickNumber = 1

; КОНЕЦ РАЗДЕЛА НАСТРОЕК -- не изменяйте то, что ниже, если только вы не
; хотите изменить базовый функционал скрипта.

#SingleInstance

JoystickPrefix = %JoystickNumber%Joy
Hotkey, %JoystickPrefix%%ButtonLeft%, ButtonLeft
Hotkey, %JoystickPrefix%%ButtonRight%, ButtonRight
Hotkey, %JoystickPrefix%%ButtonMiddle%, ButtonMiddle

; Calculate the axis displacements that are needed to start moving the cursor:
JoyThresholdUpper := 50 + JoyThreshold
JoyThresholdLower := 50 - JoyThreshold
if InvertYAxis
    YAxisMultiplier = -1
else
    YAxisMultiplier = 1

SetTimer, WatchJoystick, 10  ; Monitor the movement of the joystick.

GetKeyState, JoyInfo, %JoystickNumber%JoyInfo
IfInString, JoyInfo, P  ; Joystick has POV control, so use it as a mouse wheel.
    SetTimer, MouseWheel, %WheelDelay%

return  ; End of auto-execute section.


; The subroutines below do not use KeyWait because that would sometimes trap the
; WatchJoystick quasi-thread beneath the wait-for-button-up thread, which would
; effectively prevent mouse-dragging with the joystick.

ButtonLeft:
SetMouseDelay, -1  ; Makes movement smoother.
MouseClick, left,,, 1, 0, D  ; Hold down the left mouse button.
SetTimer, WaitForLeftButtonUp, 10
return

ButtonRight:
SetMouseDelay, -1  ; Makes movement smoother.
MouseClick, right,,, 1, 0, D  ; Hold down the right mouse button.
SetTimer, WaitForRightButtonUp, 10
return

ButtonMiddle:
SetMouseDelay, -1  ; Makes movement smoother.
MouseClick, middle,,, 1, 0, D  ; Hold down the right mouse button.
SetTimer, WaitForMiddleButtonUp, 10
return

WaitForLeftButtonUp:
if GetKeyState(JoystickPrefix . ButtonLeft)
    return  ; The button is still, down, so keep waiting.
; Otherwise, the button has been released.
SetTimer, WaitForLeftButtonUp, off
SetMouseDelay, -1  ; Makes movement smoother.
MouseClick, left,,, 1, 0, U  ; Release the mouse button.
return

WaitForRightButtonUp:
if GetKeyState(JoystickPrefix . ButtonRight)
    return  ; The button is still, down, so keep waiting.
; Otherwise, the button has been released.
SetTimer, WaitForRightButtonUp, off
MouseClick, right,,, 1, 0, U  ; Release the mouse button.
return

WaitForMiddleButtonUp:
if GetKeyState(JoystickPrefix . ButtonMiddle)
    return  ; The button is still, down, so keep waiting.
; Otherwise, the button has been released.
SetTimer, WaitForMiddleButtonUp, off
MouseClick, middle,,, 1, 0, U  ; Release the mouse button.
return

WatchJoystick:
MouseNeedsToBeMoved := false  ; Set default.
SetFormat, float, 03
GetKeyState, joyx, %JoystickNumber%JoyX
GetKeyState, joyy, %JoystickNumber%JoyY
if joyx &gt; %JoyThresholdUpper%
{
    MouseNeedsToBeMoved := true
    DeltaX := joyx - JoyThresholdUpper
}
else if joyx &lt; %JoyThresholdLower%
{
    MouseNeedsToBeMoved := true
    DeltaX := joyx - JoyThresholdLower
}
else
    DeltaX = 0
if joyy &gt; %JoyThresholdUpper%
{
    MouseNeedsToBeMoved := true
    DeltaY := joyy - JoyThresholdUpper
}
else if joyy &lt; %JoyThresholdLower%
{
    MouseNeedsToBeMoved := true
    DeltaY := joyy - JoyThresholdLower
}
else
    DeltaY = 0
if MouseNeedsToBeMoved
{
    SetMouseDelay, -1  ; Makes movement smoother.
    MouseMove, DeltaX * JoyMultiplier, DeltaY * JoyMultiplier * YAxisMultiplier, 0, R
}
return

MouseWheel:
GetKeyState, JoyPOV, %JoystickNumber%JoyPOV
if JoyPOV = -1  ; No angle.
    return
if (JoyPOV &gt; 31500 or JoyPOV &lt; 4500)  ; Forward
    Send {WheelUp}
else if JoyPOV between 13500 and 22500  ; Back
    Send {WheelDown}
return</code></pre></div>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2007-10-08T15:04:17Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=5398#p5398</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AutoHotkey: Джойстик вместо мыши]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=5392#p5392" />
			<content type="html"><![CDATA[<p>Очень нужно переопределить джойстик как мышь - тоесть чтоб система понимала джойстик как мышь - перемещение курсора осуществлялось в системе с помощью джойстика. главная кнопка джойстика - левая кнопка мыши. ОЧЕНЬ НУЖНО, даже не описать как!</p>]]></content>
			<author>
				<name><![CDATA[Илья]]></name>
			</author>
			<updated>2007-10-08T08:31:09Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=5392#p5392</id>
		</entry>
</feed>
