Что нового

[Мышь, клавиатура] Использование глобальных клавиш для изменения положения курсора мыши

awegkidoffcg

Новичок
Сообщения
1
Репутация
0
Например возьмем клавиши A,S,D,W.
Нужно чтобы при их нажатии в любой программе курсор мыши плавно перемещался влево, вниз, вправо и вверх соответственно.
Т.е. клавиша нажата - курсор перемещается, как только отпустили клавишу, курсор останавливается.

Функцию для изменения положения курсора нашел:
Код:
$aMPos = MouseGetPos()
MouseMove($aMPos[0]+1, $aMPos[1], 1)


Но как работать с горячими клавишами не могу разобраться.
Нашел такой скрипт: http://www.autoitscript.com/forum/topic/90492-hotkey-udf/
Но как отлавливать события, когда клавиша нажата, и когда отпущена?

Безуспешная попытка:
[hide]
Код:
#Include <HotKey.au3>

Global Const $VK_ESCAPE = 0x1B
Global Const $VK_F12 = 0x7B

; Assign "F12" with Message() and set extended function call
_HotKey_Assign($VK_F12, 'Message', BitOR($HK_FLAG_DEFAULT, $HK_FLAG_EXTENDEDCALL))

; Assign "CTRL-ESC" with Quit()
_HotKey_Assign(BitOR($CK_CONTROL, $VK_ESCAPE), 'Quit')

While 1
    Sleep(10)
WEnd

Func Message($iKey)
   ;MsgBox(0, 'Hot key Test Message', 'F12 (0x' & Hex($iKey, 4) & ') has been pressed!')
   While Hex($iKey, 4) = '007b'
	  $aMPos = MouseGetPos()
	  MouseMove($aMPos[0]+1, $aMPos[1], 1)
   WEnd
EndFunc   ;==>Message

Func Quit()
    Exit
EndFunc   ;==>Quit
[/hide]
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
awegkidoffcg
Клавиша INS переключает режим работы клавиш WASD
Код:
HotKeySet("{ins}", "OnOff")
HotKeySet("{esc}", "Quit")

Global $Off = True, $Step = 1

While Sleep(1000)
WEnd

Func up()
  MouseMove(MouseGetPos(0), MouseGetPos(1) - $Step, 0)
EndFunc

Func down()
  MouseMove(MouseGetPos(0), MouseGetPos(1) + $Step, 0)
EndFunc

Func left()
  MouseMove(MouseGetPos(0) - $Step, MouseGetPos(1), 0)
EndFunc

Func right()
  MouseMove(MouseGetPos(0) + $Step, MouseGetPos(1), 0)
EndFunc

Func OnOff()
  If $Off Then
    HotKeySet("w", "up")
    HotKeySet("s", "down")
    HotKeySet("a", "left")
    HotKeySet("d", "right")
  Else
    HotKeySet("w")
    HotKeySet("s")
    HotKeySet("a")
    HotKeySet("d")
  EndIf
  $Off = Not $Off
EndFunc

Func Quit()
  Exit
EndFunc
 
Верх