<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Переназначить движение мыши на клавиши]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=10347</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10347&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Переназначить движение мыши на клавиши».]]></description>
		<lastBuildDate>Sun, 16 Aug 2015 09:00:45 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=96479#p96479</link>
			<description><![CDATA[<p>Обновил код:<br /></p><div class="codebox"><pre><code>#NoEnv
#SingleInstance,Force
SetTitleMatchMode,2
SetBatchLines,-1
CoordMode,Mouse,Screen
CoordMode,ToolTip
SetKeyDelay,0
SendMode,Input



; Настройки:
class=EPSX     ; класс окна.

; клавиши.
Mouse_Up=up
Mouse_Down=down
Mouse_left=left
Mouse_Right=right
Mouse_LB=vk58 ; X
Mouse_RB=vk59 ; Y
Mouse_MB=vk5a ; Z

Delay=20       ; чувствительность.
coeffx=1.5     ; коэффициенты для мыши.
coeffy=1.5

Gui=1          ; прицел - требуется файл &quot;xros.png&quot;, содержащий изображение прицела с прозрачным фоном.
Xoffset=-10    ; смещение прицела относительно центра экрана.
Yoffset=5
w=32           ; Размеры прицела.
h=32


; Начало.
if gui
{
  x:=(a_screenwidth/2-1-w/2)+Xoffset
  y:=(a_screenheight/2-1-h/2)+Yoffset

  Gui,-Caption +AlwaysOnTop +E0x08000020 +Lastfound
  Gui,Margin,0,0
  Gui,Add,Picture,w%w% h%h%,%a_scriptdir%\xros.png
  Gui,Show,NA x%x% y%y% w%w% h%h%
  ID:=WinExist()
  WinSet,ExStyle,+0x20,ahk_id %ID%
  WinSet,TransColor,0xF0F0F0,ahk_id %ID%
  Gui,hide
}

loop ; ШИМ мышь-клавиши
{
  if !WinActive(&quot;ahk_class &quot; . class)
  {
    if gui
      gui,hide
    sleep,1000
    continue
  }

  mousemove,a_screenwidth/2,a_screenheight/2,0
  DllCall(&quot;Sleep&quot;,UInt,Delay)
  mousegetpos,x1,y1
  x:=a_screenwidth/2-x1, y:=a_screenheight/2-y1
 ; ------------------------------- право лево ----------------------------------
  if (x!=0 and !dooncex)
  {
    dooncex=1
    pressx:=abs(x)          ; x&gt;0 = left; x&lt;0 = right
    xx:=x
    send,% &quot;{&quot; Mouse_left &quot; &quot; (x&lt;0 ? &quot;Up&quot; : &quot;Down&quot;) &quot;}{&quot; Mouse_right &quot; &quot; (x&gt;0 ? &quot;Up&quot; : &quot;Down&quot;) &quot;}&quot;
  }
  else if (x=0 and dooncex)
  {
    dooncex=
    send,% &quot;{&quot; Mouse_left &quot; up}{&quot; Mouse_right &quot; up}&quot;
  }
  if ((pressx:=pressx-coeffx)&lt;0 and pressx&gt;-coeffx-1)
  {
    dooncex=
    send,% &quot;{&quot; (xx&gt;0 ? Mouse_left : Mouse_right) &quot; up}&quot;
  }
 ; ------------------------------- верх низ ----------------------------------
  if (y!=0 and !dooncey)
  {
    dooncey=1
    pressy:=abs(y)            ; y&gt;0 = up; y&lt;0 = Down
    yy:=y
    send,% &quot;{&quot; Mouse_Up &quot; &quot; (y&lt;0 ? &quot;Up&quot; : &quot;Down&quot;) &quot;}{&quot; Mouse_Down &quot; &quot; (y&gt;0 ? &quot;Up&quot; : &quot;Down&quot;) &quot;}&quot;
  }
  else if (y=0 and dooncey)
  {
    dooncey=
    send,% &quot;{&quot; Mouse_Up &quot; up}{&quot; Mouse_Down &quot; up}&quot;
  }
  if ((pressy:=pressy-coeffy)&lt;0 and pressy&gt;-coeffy-1)
  {
    dooncey=
    send,% &quot;{&quot; (yy&gt;0 ? Mouse_Up : Mouse_Down) &quot; up}&quot;
  }
 ; ------------------------------- gui update ----------------------------------
  if (gui and !showw:=showw&gt;50 ? 0 : showw=&quot;&quot; ? 1 : showw+1)
  {
    Gui, Show, na
    WinSet, AlwaysOnTop, On,ahk_id %ID%
  }
}
return


#if WinActive(&quot;ahk_class &quot; . class)

lbutton::
send,{%Mouse_LB% down}
return
lbutton up::
send,{%Mouse_LB% up}
return

rbutton::
send,{%Mouse_RB% down}
return
rbutton up::
send,{%Mouse_RB% up}
return

mbutton::
send,{%Mouse_MB% down}
return
mbutton up::
send,{%Mouse_MB% up}
return

#if

!esc:: ; Alt+Esc
exitapp
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Sun, 16 Aug 2015 09:00:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=96479#p96479</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90889#p90889</link>
			<description><![CDATA[<p>Со &quot;слипами&quot; работает. Спасибо!</p>]]></description>
			<author><![CDATA[null@example.com (M0ZzZgG)]]></author>
			<pubDate>Fri, 23 Jan 2015 04:38:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90889#p90889</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90867#p90867</link>
			<description><![CDATA[<p>Попробуй так:</p><div class="codebox"><pre><code>#NoEnv
#SingleInstance,Force
SetTitleMatchMode,2
SetBatchLines,-1
CoordMode,Mouse,Screen
CoordMode,ToolTip
SetKeyDelay,0
SendMode,Input

timer:=0
coeffx=0.5   ; коэффициенты для мыши
coeffy=0.4

;class=Notepad     ; класс окна.
;#ifwinactive,ahk_class Notepad   ; тут тоже.

loop ; ШИМ мышь-клавиши
if getkeystate(&quot;RButton&quot;)
{
  if dooncetab=
  {
    send,{tab down}
    dooncetab=1
  }
  if pressright&gt;-1
  {
    pressright--
    if pressright=0
    {
      send,{vk66 up}
      dooncex=
    }
  }
  if pressleft&gt;-1
  {
    pressleft--
    if pressleft=0
    {
      send,{vk64 up}
      dooncex=
    }
  }
  if pressdown&gt;-1
  {
    pressdown--
    if pressdown=0
    {
      send,{vk62 up}
      dooncey=
    }
  }
  if pressup&gt;-1
  {
    pressup--
    if pressup=0
    {
      send,{vk68 up}
      dooncey=
    }
  }

  if (timer:=timer&gt;30 ? 0 : timer+1)
  {
;    ifwinactive,ahk_class %class%
    {
      mousemove,a_screenwidth/2,a_screenheight/2,0
      mousegetpos,x1,y1
      sleep,10
      mousegetpos,x2,y2
      x:=x1-x2
      y:=y1-y2
      if (x&lt;0 and dooncex=&quot;&quot;) ;право
      {
        dooncex=1
        pressleft=-1
        pressright:=-x*coeffx
        send,{vk66 down}
        send,{vk64 up}
      }
      if (x&gt;0 and dooncex=&quot;&quot;) ;лево
      {
        dooncex=1
        pressright=-1
        pressleft:=x*coeffx
        send,{vk66 up}
        send,{vk64 down}
      }
      if (y&lt;0 and dooncey=&quot;&quot;) ;вниз
      {
        dooncey=1
        pressup=-1
        pressdown:=-y*coeffy
        send,{vk68 up}
        send,{vk62 down}
      }
      if (y&gt;0 and dooncey=&quot;&quot;) ;вверх
      {
        dooncey=1
        pressdown=-1
        pressup:=y*coeffy
        send,{vk68 down}
        send,{vk62 up}
      }

      if (x=0 and dooncex=1)
      {
        pressright:=pressleft:=-1
        dooncex=
        send,{vk64 up}
        send,{vk66 up}
      }
      if (y=0 and dooncey=1)
      {
        pressup:=pressdown:=-1
        dooncey=
        send,{vk68 up}
        send,{vk62 up}
      }
    }
;    else
;      DllCall(&quot;Sleep&quot;,UInt,7)
  }
  else
    DllCall(&quot;Sleep&quot;,UInt,7)
}
else
{
  if dooncetab=1
  {
    send,{tab up}
    dooncetab=
    send,{vk62 up}
    send,{vk64 up}
    send,{vk66 up}
    send,{vk68 up}
  }
  sleep,100
}
return

#if dooncetab

WheelUp::
send,{Down down}
sleep,50
send,{Down up}
return

Wheeldown::
send,{up down}
sleep,50
send,{up up}
return

lbutton::
send,{vk58 down}     ; X
return
lbutton up::
send,{vk58 up}
return

;rbutton::
;send,{vk59 down}     ; Y
;return
;rbutton up::
;send,{vk59 up}
;return

mbutton::
send,{vk5a down}     ; Z
return
mbutton up::
send,{vk5a up}
return

#if

^esc::pause  ; пауза</code></pre></div><p>Если не получится, увеличь&quot;sleep&quot;ы в самом низу кода. Правда из-за этого будет &quot;подвисать&quot; клавиши на движение мыши.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Thu, 22 Jan 2015 13:43:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90867#p90867</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90866#p90866</link>
			<description><![CDATA[<p>Мм, мышь действительно работает лучше, спасибо.<br />А нажатия от колёсика мыши в блокнот посылаются, например, а в PCSX2 - нет(<br />Хотя всё остальное в скрипте там работает.</p>]]></description>
			<author><![CDATA[null@example.com (M0ZzZgG)]]></author>
			<pubDate>Thu, 22 Jan 2015 12:33:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90866#p90866</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90865#p90865</link>
			<description><![CDATA[<div class="codebox"><pre><code>#NoEnv
#SingleInstance,Force
SetTitleMatchMode,2
SetBatchLines,-1
CoordMode,Mouse,Screen
CoordMode,ToolTip
SetKeyDelay,0
SendMode,Input

timer:=0
coeffx=0.5   ; коэффициенты для мыши
coeffy=0.4

;class=Notepad     ; класс окна.
;#ifwinactive,ahk_class Notepad   ; тут тоже.

loop ; ШИМ мышь-клавиши
if getkeystate(&quot;RButton&quot;)
{
  if dooncetab=
  {
    send,{tab down}
    dooncetab=1
  }
  if pressright&gt;-1
  {
    pressright--
    if pressright=0
    {
      send,{vk66 up}
      dooncex=
    }
  }
  if pressleft&gt;-1
  {
    pressleft--
    if pressleft=0
    {
      send,{vk64 up}
      dooncex=
    }
  }
  if pressdown&gt;-1
  {
    pressdown--
    if pressdown=0
    {
      send,{vk62 up}
      dooncey=
    }
  }
  if pressup&gt;-1
  {
    pressup--
    if pressup=0
    {
      send,{vk68 up}
      dooncey=
    }
  }

  if (timer:=timer&gt;30 ? 0 : timer+1)
  {
;    ifwinactive,ahk_class %class%
    {
      mousemove,a_screenwidth/2,a_screenheight/2,0
      mousegetpos,x1,y1
      sleep,10
      mousegetpos,x2,y2
      x:=x1-x2
      y:=y1-y2
      if (x&lt;0 and dooncex=&quot;&quot;) ;право
      {
        dooncex=1
        pressleft=-1
        pressright:=-x*coeffx
        send,{vk66 down}
        send,{vk64 up}
      }
      if (x&gt;0 and dooncex=&quot;&quot;) ;лево
      {
        dooncex=1
        pressright=-1
        pressleft:=x*coeffx
        send,{vk66 up}
        send,{vk64 down}
      }
      if (y&lt;0 and dooncey=&quot;&quot;) ;вниз
      {
        dooncey=1
        pressup=-1
        pressdown:=-y*coeffy
        send,{vk68 up}
        send,{vk62 down}
      }
      if (y&gt;0 and dooncey=&quot;&quot;) ;вверх
      {
        dooncey=1
        pressdown=-1
        pressup:=y*coeffy
        send,{vk68 down}
        send,{vk62 up}
      }

      if (x=0 and dooncex=1)
      {
        pressright:=pressleft:=-1
        dooncex=
        send,{vk64 up}
        send,{vk66 up}
      }
      if (y=0 and dooncey=1)
      {
        pressup:=pressdown:=-1
        dooncey=
        send,{vk68 up}
        send,{vk62 up}
      }
    }
;    else
;      DllCall(&quot;Sleep&quot;,UInt,7)
  }
  else
    DllCall(&quot;Sleep&quot;,UInt,7)
}
else
{
  if dooncetab=1
  {
    send,{tab up}
    dooncetab=
    send,{vk62 up}
    send,{vk64 up}
    send,{vk66 up}
    send,{vk68 up}
  }
  sleep,100
}
return

#if dooncetab

WheelUp::
send,{Down down}{Down up}
return

Wheeldown::
send,{up down}{up up}
return

lbutton::
send,{vk58 down}     ; X
return
lbutton up::
send,{vk58 up}
return

;rbutton::
;send,{vk59 down}     ; Y
;return
;rbutton up::
;send,{vk59 up}
;return

mbutton::
send,{vk5a down}     ; Z
return
mbutton up::
send,{vk5a up}
return

#if

^esc::pause  ; пауза
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Thu, 22 Jan 2015 12:19:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90865#p90865</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90863#p90863</link>
			<description><![CDATA[<p>Через 7 часов... если кто-нибудь раньше не напишет.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Thu, 22 Jan 2015 02:48:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90863#p90863</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90862#p90862</link>
			<description><![CDATA[<p>Если не трудно, можно ли, пожалуйста, добавить плюс к тому, что есть сейчас:<br />Чтобы при нажатой ПКМ WheelUp на мышке посылал Down (стрелку вниз), WheelDown посылал Up (стрелку вверх).<br />И ещё - перед тем, как перехватываются перемещения есть &quot;мёртвая зона&quot; в несколько пикселей. То есть, грубо говоря, если зажать ПКМ и двинуть мышкой &quot;чуть-чуть&quot;, то ничего не происходит. Можно ли избавиться от этого - чтобы перехват перемещений происходил с первого же пикселя?</p>]]></description>
			<author><![CDATA[null@example.com (M0ZzZgG)]]></author>
			<pubDate>Thu, 22 Jan 2015 01:41:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90862#p90862</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90731#p90731</link>
			<description><![CDATA[<p>Переименуй тему лучше так: &quot;Переназначить движение мыши на клавиши&quot;. Чтобы другим было проще искать. Имхо.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Mon, 19 Jan 2015 13:42:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90731#p90731</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90729#p90729</link>
			<description><![CDATA[<p>Отлично! Спасибо всем за помощь!</p>]]></description>
			<author><![CDATA[null@example.com (M0ZzZgG)]]></author>
			<pubDate>Mon, 19 Jan 2015 13:39:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90729#p90729</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90726#p90726</link>
			<description><![CDATA[<div class="codebox"><pre><code>#NoEnv
#SingleInstance,Force
SetTitleMatchMode,2
SetBatchLines,-1
CoordMode,Mouse,Screen
CoordMode,ToolTip
SetKeyDelay,0
SendMode,Input

timer:=0
coeffx=0.5   ; коэффициенты для мыши
coeffy=0.4

;class=Notepad     ; класс окна.
;#ifwinactive,ahk_class Notepad   ; тут тоже.

loop ; ШИМ мышь-клавиши
if getkeystate(&quot;RButton&quot;)
{
  if dooncetab=
  {
    send,{tab down}
    dooncetab=1
  }
  if pressright&gt;-1
  {
    pressright--
    if pressright=0
    {
      send,{vk66 up}
      dooncex=
    }
  }
  if pressleft&gt;-1
  {
    pressleft--
    if pressleft=0
    {
      send,{vk64 up}
      dooncex=
    }
  }
  if pressdown&gt;-1
  {
    pressdown--
    if pressdown=0
    {
      send,{vk62 up}
      dooncey=
    }
  }
  if pressup&gt;-1
  {
    pressup--
    if pressup=0
    {
      send,{vk68 up}
      dooncey=
    }
  }

  if (timer:=timer&gt;30 ? 0 : timer+1)
  {
;    ifwinactive,ahk_class %class%
    {
      mousemove,a_screenwidth/2,a_screenheight/2,0
      mousegetpos,x1,y1
      sleep,10
      mousegetpos,x2,y2
      x:=x1-x2
      y:=y1-y2
      if (x&lt;-1 and dooncex=&quot;&quot;) ;право
      {
        dooncex=1
        pressleft=-1
        pressright:=-x*coeffx
        send,{vk66 down}
        send,{vk64 up}
      }
      if (x&gt;1 and dooncex=&quot;&quot;) ;лево
      {
        dooncex=1
        pressright=-1
        pressleft:=x*coeffx
        send,{vk66 up}
        send,{vk64 down}
      }
      if (y&lt;-1 and dooncey=&quot;&quot;) ;вниз
      {
        dooncey=1
        pressup=-1
        pressdown:=-y*coeffy
        send,{vk68 up}
        send,{vk62 down}
      }
      if (y&gt;1 and dooncey=&quot;&quot;) ;вверх
      {
        dooncey=1
        pressdown=-1
        pressup:=y*coeffy
        send,{vk68 down}
        send,{vk62 up}
      }

      if (x=0 and dooncex=1)
      {
        pressright:=pressleft:=-1
        dooncex=
        send,{vk64 up}
        send,{vk66 up}
      }
      if (y=0 and dooncey=1)
      {
        pressup:=pressdown:=-1
        dooncey=
        send,{vk68 up}
        send,{vk62 up}
      }
    }
;    else
;      DllCall(&quot;Sleep&quot;,UInt,7)
  }
  else
    DllCall(&quot;Sleep&quot;,UInt,7)
}
else
{
  if dooncetab=1
  {
    send,{tab up}
    dooncetab=
    send,{vk62 up}
    send,{vk64 up}
    send,{vk66 up}
    send,{vk68 up}
  }
  sleep,100
}
return

#if dooncetab

lbutton::
send,{vk58 down}     ; X
return
lbutton up::
send,{vk58 up}
return

;rbutton::
;send,{vk59 down}     ; Y
;return
;rbutton up::
;send,{vk59 up}
;return
;
mbutton::
send,{vk5a down}     ; Z
return
mbutton up::
send,{vk5a up}
return

#if

^esc::pause  ; пауза
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Mon, 19 Jan 2015 13:06:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90726#p90726</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90725#p90725</link>
			<description><![CDATA[<div class="quotebox"><cite>M0ZzZgG пишет:</cite><blockquote><p> Так и не понял, отчего зависят такие косяки.</p></blockquote></div><p>Зависит от перемещения мыши во время отпускания кнопки. Исправлю. Но не факт что &quot;глючить&quot; не будет.<br /></p><div class="quotebox"><blockquote><p>а другие кнопки, н-р, Num4, Num6, Num8, Num5.</p></blockquote></div><p>Минут через 20... Может раньше...</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Mon, 19 Jan 2015 13:00:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90725#p90725</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90724#p90724</link>
			<description><![CDATA[<p><strong>Alectric</strong>, спасибо за отклик!<br />Скрипт рабочий, есть пара нюансов.<br />Во время того, как зажата правая кнопка, должен (+ к основному скрипту) зажиматься Tab.<br />Потом. Если можно, то желательно, чтобы зажимались не стрелки, а другие кнопки, н-р, Num4, Num6, Num8, Num5.<br />4 раза из 10 запусков после &quot;отжатия&quot; правой кнопки, остаётся &quot;зажатой&quot; ВЛЕВО, а потом после нажатия ПКМ ничего не происходит. Так и не понял, отчего зависят такие косяки.</p>]]></description>
			<author><![CDATA[null@example.com (M0ZzZgG)]]></author>
			<pubDate>Mon, 19 Jan 2015 12:52:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90724#p90724</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90722#p90722</link>
			<description><![CDATA[<p>Всеж просто:<br /></p><div class="codebox"><pre><code>#NoEnv
#SingleInstance,Force
SetTitleMatchMode,2
SetBatchLines,-1
CoordMode,Mouse,Screen
CoordMode,ToolTip
SetKeyDelay,0
SendMode,Input

timer:=0
coeffx=0.5   ; коэффициенты для мыши
coeffy=0.4

;class=Notepad     ; класс окна.
;#ifwinactive,ahk_class Notepad   ; тут тоже.


loop ; ШИМ мышь-клавиши
if getkeystate(&quot;RButton&quot;)
{
  if pressright&gt;-1
  {
    pressright--
    if pressright=0
    {
      send,{right up}
      dooncex=
    }
  }
  if pressleft&gt;-1
  {
    pressleft--
    if pressleft=0
    {
      send,{left up}
      dooncex=
    }
  }
  if pressdown&gt;-1
  {
    pressdown--
    if pressdown=0
    {
      send,{down up}
      dooncey=
    }
  }
  if pressup&gt;-1
  {
    pressup--
    if pressup=0
    {
      send,{up up}
      dooncey=
    }
  }

  if (timer:=timer&gt;30 ? 0 : timer+1)
  {
;    ifwinactive,ahk_class %class%
    {
      mousemove,a_screenwidth/2,a_screenheight/2,0
      mousegetpos,x1,y1
;      DllCall(&quot;Sleep&quot;,UInt,7)
      sleep,10
      mousegetpos,x2,y2
      x:=x1-x2
      y:=y1-y2
      if (x&lt;-1 and dooncex=&quot;&quot;) ;право
      {
        dooncex=1
        pressleft=-1
        pressright:=-x*coeffx
        send,{right down}
        send,{left up}
      }
      if (x&gt;1 and dooncex=&quot;&quot;) ;лево
      {
        dooncex=1
        pressright=-1
        pressleft:=x*coeffx
        send,{right up}
        send,{left down}
      }
      if (y&lt;-1 and dooncey=&quot;&quot;) ;вниз
      {
        dooncey=1
        pressup=-1
        pressdown:=-y*coeffy
        send,{up up}
        send,{down down}
      }
      if (y&gt;1 and dooncey=&quot;&quot;) ;вверх
      {
        dooncey=1
        pressdown=-1
        pressup:=y*coeffy
        send,{up down}
        send,{down up}
      }

      if (x=0 and dooncex=1)
      {
        pressright:=pressleft:=-1
        dooncex=
        send,{left up}
        send,{right up}
      }
      if (y=0 and dooncey=1)
      {
        pressup:=pressdown:=-1
        dooncey=
        send,{up up}
        send,{down up}
      }
    }
;    else
;x      DllCall(&quot;Sleep&quot;,UInt,7)
  }
  else
    DllCall(&quot;Sleep&quot;,UInt,7)
}
else
  sleep,100
return

;lbutton::
;send,{vk58 down}     ; X
;return
;lbutton up::
;send,{vk58 up}
;return
;
;rbutton::
;send,{vk59 down}     ; Y
;return
;rbutton up::
;send,{vk59 up}
;return
;
;mbutton::
;send,{vk5a down}     ; Z
;return
;mbutton up::
;send,{vk5a up}
;return

^esc::  ; выход
exitapp

</code></pre></div><p>Выключить скрипт - Ctrl+Esc.</p><p>Сказал бы сразу что делать с кнопками. На что их назначить и при каком условии? Если зажата правая кнопка?<br />И в какой момент должен зажиматься\отпускаться &quot;TAB&quot;?</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Mon, 19 Jan 2015 12:23:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90722#p90722</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90719#p90719</link>
			<description><![CDATA[<div class="quotebox"><cite>ypppu пишет:</cite><blockquote><p>while GetKeyState(&quot;RButton&quot;) означает &quot;Пока ПКМ физиически нажата, выполнять ...&quot;</p></blockquote></div><p>Так это и нужно. Нужно, чтобы все эти перехваты перемещений происходили только при зажатой ПКМ.</p><div class="quotebox"><blockquote><p>скрипт работает.<br />Мне только нужно последний штрих - сделать, чтобы он зажимал Tab и работал при нажатой правой кнопке мыши.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (M0ZzZgG)]]></author>
			<pubDate>Mon, 19 Jan 2015 12:15:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90719#p90719</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Переназначить движение мыши на клавиши]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=90717#p90717</link>
			<description><![CDATA[<div class="quotebox"><cite>M0ZzZgG пишет:</cite><blockquote><p>Кинул. Поможете с while ? Так не работает:<br /></p><div class="codebox"><pre><code>while GetKeyState(&quot;RButton&quot;)
{
send,{tab down}
&lt;основной скрипт&gt;
}</code></pre></div><p>Так работает всегда после нажатия на правую кнопку</p><div class="codebox"><pre><code>~RButton::
 while GetKeyState(&quot;RButton&quot;)
 {
 send,{tab down}
 &lt;основной скрипт&gt;
 }
return</code></pre></div></blockquote></div><p>while GetKeyState(&quot;RButton&quot;) означает &quot;Пока ПКМ физиически нажата, выполнять ...&quot;</p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Mon, 19 Jan 2015 12:05:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=90717#p90717</guid>
		</item>
	</channel>
</rss>
