1 (изменено: sergeant.coolagin, 2012-05-28 09:33:32)

Тема: AHK: Эмуляция мыши джойстиком

Скрипт эмулирует перемещение курсора мыши в зависимости от положения стика.
Работает под AHK_L на любых игровых устройствах, где есть 2 оси и кнопка. Для начала эмуляции мыши нужно нажать кнопку. В данном случае это Joy8.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Global Variabless ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

JoyDelay = 10 ; Время таймера
JoyMouseMultiplier := 0.6 ; Чувствительность джойстика(Скорость передвижения мыши)
JoyNumber = 1 ;
JoyMouseKey = Joy8

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Body ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;; Stick Mouse ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SetTimer, JoyMouse, %JoyDelay%

JoyMouse:
{
	GetKeyState, JoyXState, %JoyNumber%JoyX
	GetKeyState, JoyYState, %JoyNumber%JoyY
	GetKeyState, JoyKeyState, %JoyNumber%%JoyMouseKey%
	
	if JoyKeyState = D ;  Если кнопка активации эмуляции мыши нажата.
	{
		DllCall("mouse_event", UInt, 0x1
                              , Int, ((JoyXState-50)*JoyMouseMultiplier)
                              , Int, ((JoyYState-50)*JoyMouseMultiplier)
                              , UInt, 0
                              , Int, 0)
	}

}
Return

Joy25::
{
}
Return

Выложил этот макрос т.к. нигде в интернете не нашел аналога такого макроса, который бы стабильно работал в играх. В других макросах мышь либо дергается, либо в этих макросах перемещение привязано к позиции курсора на экране, а это для игр не подходит.
А этот макрос работает плавно, не привязан к позиции курсора на экране, и работает во многих играх, и разных приложениях.
Надеюсь, что в будущем это кому-то поможет.

2

Re: AHK: Эмуляция мыши джойстиком

Еще бы обратную задачу сделать - эмулировать джойстик мышью, было бы вообще прекрасно.
Причем именно не просто лево-право-верх-низ, а соответсвие сдвига мыши от некотого условного центра с углом наклона самого джойстика...