1편 : https://gall.dcinside.com/mgallery/board/view/?id=fromsoftware&no=2830316&s_type=search_subject_memo&s_keyword=%ED%82%A4%EB%B3%B4%EB%93%9C&page=1

2편 : https://gall.dcinside.com/mgallery/board/view/?id=fromsoftware&no=2830994&page=1

3편 : https://gall.dcinside.com/mgallery/board/view/?id=fromsoftware&no=2830995&page=1

4편 : 



이건 번외편인데,

키패드의 NumLock 버튼은 누를 때 마다 NumLock State가 변경되면서 키패드로 게임하는데 겐세이를 준다.

NumLock 버튼을 눌러도 무시할 수 있게 만들어보자.

또한, NumLock 버튼을 일반적 키패드처럼 기능을 넣어서 게임할 때 활용해 보자.



7ceb8471b58768f13be998a518d60403a9b2dc6256b6e581


본 글에서는

NumLock으로 로지텍 G502마우스의 휠 래프트 기능을

NumpadMult에는 로지텍 G502마우스의 휠 라이트 기능을 할당할 것임.



먼저

https://sharpkeys.softonic.kr/

여기서 SharpKeys라는 유틸리티 프로그램을 설치해주자.



a04424ad2c06782ab47e5a67ee91766dc289f1ecd0acc4cabf10d0c659d4d021a3462026ba53905d29aef00308b2


그 후 다음과 같이 NumLock키를 F22같이 윈도우에서 존재는 하나, 사용되지 않는 남는 키로 할당해주면됨.

Write to Registry 눌러주고, 재부팅하면 적용된다.


그럼 이제 NumLock키는 키보드에서 빼버린것과 같은 효과임.

대신에 F22키라는 더미키가 들어간 것임.


이전 편에서 했었던 것처럼 .ahk 파일을 작성해주자.



HorizontalWheel.ahk

#include IfWinActive.ahk
#include Optimizer.ahk

*F22::    ; NumLock키를 대체하는 F22키.    F22키를 짧게 누르면 p키가 한번만 눌리고, 길게 누르면 p키가 계속 연달아서 무한 입력된다.
Send, {p Down}
Sleep, 25
Send, {p Up}    ; Previous의 앞 글자를 따서 키보드 p키를 조작
StartTime := A_TickCount
while(GetKeyState("F22", "P")){
    Sleep, 25
    ElapsedTime := A_TickCount - StartTime

    if(ElapsedTime > 250){
        while(GetKeyState("F22", "P")){
            Send, {p Down}
            Sleep, 25
            Send, {p Up}
            Sleep, 25
        }
        return
    }
}
return

*NumpadMult::    ; NumpadMult키를 짧게 누르면 n키가 한번만 눌리고, 길게 누르면 n키가 계속 연달아서 무한 입력된다.
Send, {n Down}
Sleep, 25
Send, {n Up}    ; Next의 앞 글자를 따서 키보드 n키를 조작
StartTime := A_TickCount
while(GetKeyState("NumpadMult", "P")){
    Sleep, 25
    ElapsedTime := A_TickCount - StartTime

    if(ElapsedTime > 250){
        while(GetKeyState("NumpadMult", "P")){
            Send, {n Down}
            Sleep, 25
            Send, {n Up}
            Sleep, 25
        }
        return
    }
}
return



VerticalWheel.ahk

#include IfWinActive.ahk
#include Optimizer.ahk

*Numpad7::    ; 휠다운을 Numpad7에 할당. Numpad7키를 짧게 누르면 휠다운이 한번만 눌리고, 길게 누르면 휠다운이 계속 연달아서 무한 입력된다.
Send, {WheelDown}
Send, {5 Down}
Sleep, 25
StartTime := A_TickCount
while(GetKeyState("Numpad7", "P")){
    Sleep, 25
    ElapsedTime := A_TickCount - StartTime

    if(ElapsedTime > 250){
        while(GetKeyState("Numpad7", "P")){
            Send, {WheelDown}
            Sleep, 50
        }
        Send, {5 Up}
        return
    }
}
Send, {5 Up}
return

*Numpad9::    ; 휠업을 Numpad9에 할당. Numpad9키를 짧게 누르면 휠업이 한번만 눌리고, 길게 누르면 휠업이 계속 연달아서 무한 입력된다.
Send, {WheelUp}
Send, {6 Down}
Sleep, 25
StartTime := A_TickCount
while(GetKeyState("Numpad9", "P")){
    Sleep, 25
    ElapsedTime := A_TickCount - StartTime

    if(ElapsedTime > 250){
        while(GetKeyState("Numpad9", "P")){
            Send, {WheelUp}
            Sleep, 50
        }
        Send, {6 Up}
        return
    }
}
Send, {6 Up}
return



MButton.ahk

#include IfWinActive.ahk
#include Optimizer.ahk

*NumpadDiv::    ; 휠클릭을 NumpadDiv에 할당. 엘든링의 좌수우수양잡 기능을 다크소울3처럼 만들어봄
StartTime := A_TickCount
while(GetKeyState("NumpadDiv", "P")){
    Sleep, 25
    ElapsedTime := A_TickCount - StartTime

    if(ElapsedTime > 200){    ; 길게 누를 경우 좌수양잡. 재시행하면 한손잡
        Send, {e Down}
        Sleep, 125
        Send, {Numpad1 Down}    ; 좌수약공키(방어키)
        Sleep, 25
        Send, {Numpad1 Up}
        Sleep, 25
        Send, {e Up}
        KeyWait, NumpadDiv
        return
    }
}
Send, {e Down}    ; 짧게 누를 경우 우수양잡. 재시행하면 한손잡
Sleep, 125
Send, {Numpad0 Down}    ; 우수약공키
Sleep, 25
Send, {Numpad0 Up}
Sleep, 25
Send, {e Up}
return




Initiator.ahk

#include IfWinActive.ahk
#include Optimizer.ahk

global Scripts_Array := Array()

Clipboard := 0

Scripts_Array.insert("Mouse Simulation\Advanced\HorizontalWheel.ahk")    ; 휠래프트, 휠라이트 기능은 일반마우스에는 없는 로지텍마우스 기능이라서, Advanced 폴더를 만들어서 그 안에 넣어줬음.

Scripts_Array.insert("Mouse Simulation\Basic\VerticalWheel.ahk")    ; 이렇게 새로 작성한 .ahk파일을 Initiator.ahk에 추가해주면 된다.
Scripts_Array.insert("Mouse Simulation\Basic\MButton.ahk")    ; 이렇게 새로 작성한 .ahk파일을 Initiator.ahk에 추가해주면 된다.

Scripts_Array.insert("Mouse Simulation\Basic\RButton.ahk")

Scripts_Array.insert("Mouse Simulation\Direction\Down.ahk")
Scripts_Array.insert("Mouse Simulation\Direction\Left.ahk")
Scripts_Array.insert("Mouse Simulation\Direction\Right.ahk")
Scripts_Array.insert("Mouse Simulation\Direction\Up.ahk")

Scripts_Array.insert("Mouse Simulation\Movement.ahk")
Scripts_Array.insert("Mouse Simulation\Sensitivity.ahk")

Scripts_Array.insert("Mouse Simulation\Numpad4.ahk")
Scripts_Array.insert("Mouse Simulation\Numpad5.ahk")
Scripts_Array.insert("Mouse Simulation\Numpad6.ahk")
Scripts_Array.insert("Mouse Simulation\Numpad8.ahk")

For idx, val in Scripts_Array{
    ahk_file := "Scripts\" . val

    Run, %ahk_file%
}





28b1d423ebc031a8698084e544831b6db7a9fd3468d78faebb5fd50becb735895d4a2fb563e015ec4ffa8a8549d834812f77


인게임에서


마술/기도 전환

아이템 전환

오른손 무기 전환

왼손 무기 전환


이 4가지 키를 6, 5, n, p로 할당하면된다.



지도 줌인, 줌아웃 메뉴 위 아래 내리고 올리기와 같이

휠다운, 휠업키는 필요함


엘든링에는 마술/기도 전환, 아이템 전환키를 꾹 누르고 있으면,

현재 어떤 아이템이 선택되있던간에 첫 번째 아이템으로 변경된다.


마술/기도 전환, 아이템 전환키를 휠다운, 휠업키로 할당할 경우,

휠다운, 휠업키는 누르고 있는다는 개념자체가 존재하지 않는 키라서 작동하지 않음


따라서 마술/기도 전환, 아이템 전환키를 6키, 5키로 할당함.


이 기능 때문에 VerticalWheel.ahk에서 

휠업, 휠다운과 함께

Send, {6 Down}처럼 5키, 6키를 같이 입력해줌.

문제 해결.