<?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=5826&amp;type=atom" />
	<updated>2011-05-23T03:49:39Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=5826</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Инверсия мыши по вертикали]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=48618#p48618" />
			<content type="html"><![CDATA[<p>Увы... Во втором скрипте, при использовании его в системе, при движении по оси Х вправо происходит остановка.<br />В 3D приложениях работает не корректно. (большая скорость перемещения, перемещения по осям X Y рывками)</p>]]></content>
			<author>
				<name><![CDATA[predator]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25217</uri>
			</author>
			<updated>2011-05-23T03:49:39Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=48618#p48618</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Инверсия мыши по вертикали]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=48607#p48607" />
			<content type="html"><![CDATA[<p>Можно ещё так попробовать:<br /></p><div class="codebox"><pre><code>   SetBatchLines, -1
   SetMouseDelay, -1
   CoordMode, Mouse
   OnExit, Exit

   hHook := DllCall(&quot;SetWindowsHookEx&quot;
      , Int, WH_MOUSE_LL := 14
      , Int, RegisterCallback(&quot;LowLevelMouseProc&quot;, &quot;Fast&quot;)
      , UInt, DllCall(&quot;GetModuleHandle&quot;, UInt, 0)
      , UInt, 0)
   Return

Exit:
   DllCall(&quot;UnhookWindowsHookEx&quot;, UInt, hHook)
   ExitApp

Esc:: ExitApp

LowLevelMouseProc(nCode, wParam, lParam)
{
   static y_prev

   if (nCode &lt; 0 || wParam != 0x200)   ; WM_MOUSEMOVE = 0x200
      Return DllCall(&quot;CallNextHookEx&quot;, UInt, 0, Int, nCode, UInt, wParam, UInt, lParam)

   x := NumGet(lParam+0), y := NumGet(lParam+0, 4)

   y_prev := y_prev = &quot;&quot; ? y : y_prev

   t := 2*y_prev - y
   MouseMoving(x, y_prev := t &lt; 4 ? 4 : t &gt; A_ScreenHeight ? A_ScreenHeight : t)
   Return 1
}

MouseMoving(x, y)
{
   static MOUSEEVENTF_ABSOLUTE = 0x8000, MOUSEEVENTF_MOVE = 0x1

   DllCall(&quot;mouse_event&quot;
    , UInt, MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE
    , Int, Ceil(x*0xFFFF/A_ScreenWidth)
    , Int, Ceil(y*0xFFFF/A_ScreenHeight)
    , UInt, 0)
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2011-05-22T17:21:01Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=48607#p48607</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Инверсия мыши по вертикали]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=48606#p48606" />
			<content type="html"><![CDATA[<p>В самом меню игры также все работает.<br />Вероятно, что решения данного вопроса не существует в силу то, что движок игры не воспринимает скрипт.</p>]]></content>
			<author>
				<name><![CDATA[predator]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25217</uri>
			</author>
			<updated>2011-05-22T17:13:37Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=48606#p48606</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Инверсия мыши по вертикали]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=48605#p48605" />
			<content type="html"><![CDATA[<p>В самой игре: скрипт работает, но скорость выполнения сильно завышена. При движении по оси Y вверх и вниз - движок игры реагирует рывками, как при завышенной раекции мыши. Снижение на минимальные значения в игре и в системе приемлимого результата не принесло.</p><p>В системе (windows 7 x64) все работает на 5 баллов.</p>]]></content>
			<author>
				<name><![CDATA[predator]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25217</uri>
			</author>
			<updated>2011-05-22T17:01:11Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=48605#p48605</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Инверсия мыши по вертикали]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=48604#p48604" />
			<content type="html"><![CDATA[<p>Вот так, но не факт, что в играх будет работать:<br /></p><div class="codebox"><pre><code>   SetBatchLines, -1
   SetMouseDelay, -1
   CoordMode, Mouse
   OnExit, Exit
   hHookMouse := DllCall(&quot;SetWindowsHookEx&quot; . (A_IsUnicode ? &quot;W&quot; : &quot;A&quot;)
      , Int, WH_MOUSE_LL := 14
      , Ptr, RegisterCallback(&quot;LowLevelMouseProc&quot;, &quot;Fast&quot;)
      , Ptr, DllCall(&quot;GetModuleHandle&quot;, UInt, 0, Ptr)
      , UInt, 0, Ptr)
   Return

Exit:
   DllCall(&quot;UnhookWindowsHookEx&quot;, Ptr, hHookMouse)
   ExitApp
   
Esc:: ExitApp

LowLevelMouseProc(nCode, wParam, lParam)
{
   static y_prev

   if (nCode &lt; 0 || wParam != 0x200)   ; WM_MOUSEMOVE = 0x200
      Return DllCall(&quot;CallNextHookEx&quot;, Ptr, 0, Int, nCode, UInt, wParam, UInt, lParam)

   x := NumGet(lParam+0, &quot;UInt&quot;), y := NumGet(lParam+0, 4, &quot;UInt&quot;)
   
   y_prev := y_prev = &quot;&quot; ? y : y_prev
   
   if (y &gt; y_prev || y &lt; y_prev)
   {
      t := y_prev - (y - y_prev)*2
      MouseMove, x, y_prev := t &lt; 2 ? 2 : t &gt; A_ScreenHeight ? A_ScreenHeight : t, 0
   }
   Else
      MouseMove, x, y_prev := y, 0
   Return 1
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2011-05-22T14:45:35Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=48604#p48604</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Инверсия мыши по вертикали]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=48596#p48596" />
			<content type="html"><![CDATA[<p>Инверсия оси Y реализована практически во всех играх на 3D движке. Но, в игре &quot;ВЕДЬМАК 2&quot; разработчиками не установлена эта функция. По привычке всегда использую инверсию в играх.<br />Вопрос: <br />Возможно ли с помощью скрипта выполнить инверсию мыши по оси Y?<br />(при движении мыши от себя курсор должен перемещатся вниз экрана и при движении к себе вверх)</p><p>Увы, на форуме я не нашел информации по данному вопросу.<br />Буду благодарен за помощь.</p>]]></content>
			<author>
				<name><![CDATA[predator]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25217</uri>
			</author>
			<updated>2011-05-21T16:30:26Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=48596#p48596</id>
		</entry>
</feed>
