아두이노로 해보니 재밌어서 오토핫키로도 구현해보았다.

 

오토핫키는 hello world만 해보고 써본 적이 없어서 제대로 동작하는 매크로를 구현해보려니 쉽게 동작하지 않았다. 아래 두 가지 점을 신경써서 구현하면 성능 좋은 매크로를 구현할 수 있다.

 

1. 정확히 동시에 두 개 이상의 키를 눌러주기 위해서 Send 대신에 SendInput 을 써야한다.

2. 커맨드 사이 딜레이를 주기 위해 Sleep 을 쓰면 정확도가 매우 떨어진다. 정확한 딜레이를 구현해둔 코드가 있어서 참고했다( https://bit.ly/3cyI8GX ). 아래 코드의 1-13번 라인에 해당한다. 해당 라인을 넣고, Sleep 대신 DllCall 을 쓴다.

 

아래는 샘플코드

 

 

#NoEnv
#MaxHotkeysPerInterval 99000000
#HotkeyInterval 99000000
#KeyHistory 0
ListLines Off
Process, Priority, , H
SetBatchLines, -1
SetKeyDelay, -1, -1
SetMouseDelay, -1
SetDefaultMouseSpeed, 0
SetWinDelay, -1
SetControlDelay, -1
SendMode Input
one_frame := 1000/60.0
;테스트용 Ctrl+j 누르면 매크로 동작
^j::
;3+RP
SendInput, {Right down}{Down down}{s down}
DllCall("Sleep","UInt",one_frame)
SendInput, {Right up}{Down up}{s up}
DllCall("Sleep","UInt",one_frame)
DllCall("Sleep","UInt",one_frame*43.8)
;6
SendInput, {Right down}
DllCall("Sleep","UInt",one_frame)
SendInput, {Right up}
DllCall("Sleep","UInt",one_frame)
;3+RP
SendInput, {Right down}{Down down}{s down}
DllCall("Sleep","UInt",one_frame)
SendInput, {Down up}{Right up}{s up}
DllCall("Sleep","UInt",one_frame)
return

 

 

게임할 때 쓰다가 스팀 밴 당하면 사용자 책임.

 

 

Posted by 공돌이pooh
,