Á¶À̽ºÆ½À» ¸¶¿ì½ºÃ³·³ »ç¿ëÇϱâ

ÀÌ ½ºÅ©¸³Æ®´Â Á¶À̽ºÆ½À» ¼¼ ¹öÆ° ¸¶¿ì½º·Î º¯½Å½Ãŵ´Ï´Ù. °¢ ¹öÆ°À» ¸¶Ä¡ ¸¶¿ì½º ¹öÆ° ó·³ ²ø ¼ö ÀÖ°í »ç½Ç»ó CPU ½Ã°£À» ¼ÒºñÇÏÁö ¾Ê½À´Ï´Ù. ¶ÇÇÑ, Á¶À̽ºÆ½À» Áß¾ÓÀ¸·ÎºÎÅÍ ¸Ö¸® ¹Ð¼ö·Ï Ä¿¼­¸¦ ´õ »¡¸® À̵¿½Ãŵ´Ï´Ù. ´Ù¾çÇÑ ¼³Á¤Àº ½ºÅ©¸³Æ® »ó´Ü¿¡¼­ ±âÈ£¿¡ ¸Â°Ô Àç´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ ½ºÅ©¸³Æ® ³»·Á¹Þ±â  |  ´Ù¸¥ »ùÇà ½ºÅ©¸³Æ®  |  È¨À¸·Î

; ¸¶¿ì½º Ä¿¼­¸¦ ´õ »¡¸® À̵¿½ÃÅ°·Á¸é ´ÙÀ½ °ªÀ» Áõ°¡½ÃÅ°¸é µË´Ï´Ù:
JoyMultiplier = 0.30

; ´ÙÀ½ °ªÀ» ÁÙÀ̸é Á¶À̽ºÆ½ Áß¾ÓÀ¸·ÎºÎÅÍ Á» ´ú ¹Ð¾îµµ 
; ¸¶¿ì½º¸¦ À̵¿½ÃÅ°±â ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, Á¶À̽ºÆ½ ´«±Ý Á¶Á¤ÀÌ ÇÊ¿äÇÒ ¼ö ÀÖ½À´Ï´Ù.
; -- ÀûÀýÈ÷ Áß¾Ó¿¡ Á¤·ÄµÇ¾ú´ÂÁö È®ÀÎÇØ¾ß ÇØ¾ß -- Ä¿¼­°¡ Ç¥·ùÇÏ´Â °ÍÀ» ÇÇÇÒ ¼ö ÀÖ½º´Ï´Ù. 
; ¿Ïº®ÇÏ°Ô ºóÆ´ ¾øÀÌ Áß¾Ó Á¤·ÄµÈ Á¶À̽ºÆ½Àº °ª 1À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:
JoyThreshold = 3

; ´ÙÀ½À» true·Î ¹Ù²Ù¸é Y-ÃàÀ» µÚÁýÀ» ¼ö ÀÖ½À´Ï´Ù.
; ±×·¯¸é ¸¶¿ì½º´Â Á¶À̽ºÆ½ÀÇ ¼öÁ÷ ¹Ý´ë ¹æÇâÀ¸·Î À̵¿ÇÕ´Ï´Ù:
InvertYAxis := false

; ´ÙÀ½ °ªµéÀ» ¹Ù²Ù¸é Á¶À̽ºÆ½ ¹öÆ° ¹øÈ£¸¦ ¿ÞÂÊ, ¿À¸¥ÂÊ, ±×¸®°í °¡¿îµ¥ ¸¶¿ì½º ¹öÆ°¿¡ ´ëÇÏ¿©
; 1, 2, ±×¸®°í 3 ¸»°í ´Ù¸¥ °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. °¡´ÉÇÑ °ªÀº 1ºÎÅÍ 32±îÁöÀÔ´Ï´Ù.
; Á¶À̽ºÆ½ Å×½ºÆ® ½ºÅ©¸³Æ®¸¦ »ç¿ëÇϸé Á¶À̽ºÆ½ ¹øÈ£¸¦ ´õ ½±°Ô ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.
ButtonLeft = 1
ButtonRight = 2
ButtonMiddle = 3

; Á¶À̽ºÆ½¿¡ POV ÄÜÆ®·ÑÀÌ ÀÖ´Ù¸é, ±×°ÍÀ» ¸¶¿ì½º ÈÙ·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
; ´ÙÀ½ °ªÀº ÈÙÀÇ È¸Àü »çÀÌÀÇ ¹Ð¸®ÃÊÀÇ °³¼öÀÔ´Ï´Ù.
; °³¼ö¸¦ ÁÙÀ̸é ÈÙÀÌ ´õ »¡¸® ȸÀüÇÕ´Ï´Ù:
WheelDelay = 250

; Á¶À̽ºÆ½ÀÌ ¿©·¯ °³À̸é, ÀÌ °ªÀ» Áõ°¡½ÃÄÑ
; ´Ù¸¥ Á¶À̽ºÆ½À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù:
JoystickNumber = 1

; END OF CONFIG SECTION -- ÀÌ ½ÃÁ¡ ¾Æ·¡·Î ¾Æ¹« °Íµµ º¯°æÇÏÁö ¸¶½Ê½Ã¿À.
; ´Ü, ½ºÅ©¸³Æ®ÀÇ ±âº» ±â´ÉÀ» º¯°æÇÏ°í ½ÍÀº °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

#SingleInstance

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

; ¸¶¿ì½º À̵¿À» ½ÃÀÛ½ÃÅ°´Âµ¥ ÇÊ¿äÇÑ ÃàÀÇ ÀÌ°ÝÀ» °è»êÇÕ´Ï´Ù:
JoyThresholdUpper := 50 + JoyThreshold
JoyThresholdLower := 50 - JoyThreshold
if InvertYAxis
    YAxisMultiplier = -1
else
    YAxisMultiplier = 1

SetTimer, WatchJoystick, 10  ; Á¶À̽ºÆ½ÀÇ À̵¿À» °üÁ¦ÇÕ´Ï´Ù.

GetKeyState, JoyInfo, %JoystickNumber%JoyInfo
IfInString, JoyInfo, P  ; Á¶À̽ºÆ½¿¡ POV ÄÜÆ®·ÑÀÌ ÀÖ½À´Ï´Ù. ±×·¡¼­ ±×°ÍÀ» ¸¶¿ì½º ÈÙ·Î »ç¿ëÇÕ´Ï´Ù.
    SetTimer, MouseWheel, %WheelDelay%

return  ; ÀÚµ¿ ½ÇÇà ¼½¼ÇÀÇ ³¡.


; ¾Æ·¡ÀÇ ¼­ºê·çƾÀº KeyWait¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù.
; ¿Ö³ÄÇϸé Á¾Á¾ ¹öÆ°-¾÷-´ë±â ¾²·¹µå ¾Æ·¡ÀÇ WatchJoystick ÀÇ»ç-¾²·¹µå¸¦ °¡·Î ä°í,
; ±×·¯¸é Á¶À̽ºÆ½À¸·Î ¸¶¿ì½º ²ø±â¸¦ ¹æÇØÇÏ´Â È¿°ú°¡ Àֱ⠶§¹®ÀÔ´Ï´Ù.

ButtonLeft:
SetMouseDelay, -1  ;  ´õ ºÎµå·´°Ô À̵¿Çϵµ·Ï ¸¸µì´Ï´Ù.
MouseClick, left,,, 1, 0, D  ; ¿ÞÂÊ ¸¶¿ì½º ¹öÆ°À» ´©¸£°í ÀÖ½À´Ï´Ù.
SetTimer, WaitForLeftButtonUp, 10
return

ButtonRight:
SetMouseDelay, -1  ; ´õ ºÎµå·´°Ô À̵¿Çϵµ·Ï ¸¸µì´Ï´Ù.
MouseClick, right,,, 1, 0, D  ; ¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ°À» ´©¸£°í ÀÖ½À´Ï´Ù.
SetTimer, WaitForRightButtonUp, 10
return

ButtonMiddle:
SetMouseDelay, -1  ; ´õ ºÎµå·´°Ô À̵¿Çϵµ·Ï ¸¸µì´Ï´Ù.
MouseClick, middle,,, 1, 0, D  ; ¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ°À» ´©¸£°í ÀÖ½À´Ï´Ù.
SetTimer, WaitForMiddleButtonUp, 10
return

WaitForLeftButtonUp:
if GetKeyState(JoystickPrefix . ButtonLeft)
    return  ; ¹öÆ°ÀÌ ¿©ÀüÈ÷ ´­·Á ÀÖ½À´Ï´Ù. ±×·¡¼­ °è¼Ó ´ë±âÇÕ´Ï´Ù.
; ±×·¸Áö ¾ÊÀ¸¸é, ¹öÆ°ÀÌ ¶¼¾îÁ³½À´Ï´Ù.
SetTimer, WaitForLeftButtonUp, off
SetMouseDelay, -1  ; ´õ ºÎµå·´°Ô À̵¿Çϵµ·Ï ¸¸µì´Ï´Ù.
MouseClick, left,,, 1, 0, U  ; ¸¶¿ì½º ¹öÆ°À» ¶Á´Ï´Ù.
return

WaitForRightButtonUp:
if GetKeyState(JoystickPrefix . ButtonRight)
    return  ; ¹öÆ°ÀÌ ¿©ÀüÈ÷ ´­·Á ÀÖ½À´Ï´Ù. ±×·¡¼­ °è¼Ó ±â´Ù¸³´Ï´Ù.
; ±×·¸Áö ¾ÊÀ¸¸é, ¹öÆ°ÀÌ ¶¼¾îÁ³½À´Ï´Ù.
SetTimer, WaitForRightButtonUp, off
MouseClick, right,,, 1, 0, U  ; ¸¶¿ì½º ¹öÆ°À» ¶Á´Ï´Ù.
return

WaitForMiddleButtonUp:
if GetKeyState(JoystickPrefix . ButtonMiddle)
    return  ; ¹öÆ°ÀÌ ¿©ÀüÈ÷ ´­·Á ÀÖ½À´Ï´Ù. ±×·¡¼­ °è¼Ó ±â´Ù¸³´Ï´Ù.
; ±×·¸Áö ¾ÊÀ¸¸é, ¹öÆ°ÀÌ ¶¼¾îÁ³½À´Ï´Ù.
SetTimer, WaitForMiddleButtonUp, off
MouseClick, middle,,, 1, 0, U  ; ¸¶¿ì½º ¹öÆ°À» ¶Á´Ï´Ù.
return

WatchJoystick:
MouseNeedsToBeMoved := false  ; ±âº»°ªÀ» ¼³Á¤ÇÕ´Ï´Ù.
SetFormat, float, 03
GetKeyState, joyx, %JoystickNumber%JoyX
GetKeyState, joyy, %JoystickNumber%JoyY
if joyx > %JoyThresholdUpper%
{
    MouseNeedsToBeMoved := true
    DeltaX := joyx - JoyThresholdUpper
}
else if joyx < %JoyThresholdLower%
{
    MouseNeedsToBeMoved := true
    DeltaX := joyx - JoyThresholdLower
}
else
    DeltaX = 0
if joyy > %JoyThresholdUpper%
{
    MouseNeedsToBeMoved := true
    DeltaY := joyy - JoyThresholdUpper
}
else if joyy < %JoyThresholdLower%
{
    MouseNeedsToBeMoved := true
    DeltaY := joyy - JoyThresholdLower
}
else
    DeltaY = 0
if MouseNeedsToBeMoved
{
    SetMouseDelay, -1  ; ´õ ºÎµå·´°Ô À̵¿½Ãŵ´Ï´Ù.
    MouseMove, DeltaX * JoyMultiplier, DeltaY * JoyMultiplier * YAxisMultiplier, 0, R
}
return

MouseWheel:
GetKeyState, JoyPOV, %JoystickNumber%JoyPOV
if JoyPOV = -1  ; °¢µµ ¾øÀ½.
    return
if (JoyPOV > 31500 or JoyPOV < 4500)  ; ¾ÕÀ¸·Î À̵¿
    Send {WheelUp}
else if JoyPOV between 13500 and 22500  ; µÚ·Î À̵¿
    Send {WheelDown}
return