본문 바로가기
컴퓨터/오토핫키

오토핫키 Interception Driver사용 하드웨어 신호로 변경

by 큐브빌드 2023. 5. 31.
반응형

입력되는 신호를 하드웨어 신호로 변경할 수 있는 Interception Driver 있습니다.

 

ClassDD와 동일한 기능이라고 보시면 될 것 같습니다.

 

GitHub - evilC/AutoHotInterception: An AutoHotkey wrapper for the Interception driver

 

GitHub - evilC/AutoHotInterception: An AutoHotkey wrapper for the Interception driver

An AutoHotkey wrapper for the Interception driver. Contribute to evilC/AutoHotInterception development by creating an account on GitHub.

github.com

 

위 사이트를 보니 제작 잘 되어 있네요.

 

히스토리 중 설치 관련 된 부분을 보자면

 

1. Interception Driver 설치

 

2. AutoHotInterception Folder 작업

 

위 2개 모두 설치 & 따라한 뒤 Release 버전에 존재하는 AHK v1 폴더에서 Monitor.ahk를 실행하면 아래와 같이 나타납니다.

여기에서는 현재 내 컴퓨터에 설치된 키보드 및 마우스 리스트가 노출되게 되는 거죠.

 

체크 후 키보드, 마우스를 누르면 ID번호를 확인하면 됩니다.

 

위 이미지를 봤을 때 ID = 3과 ID = 11입니다.

 


위 내용으로 Interception Driver 관련 설치 할 내용은 끝났습니다.

 

이제는 제가 직접 사용하는 방법을 알려 드리겠습니다. 물론 해당 사이트에도 잘 정리되어 있습니다.

 

아래 이미지는 제가 직접 하고 있는 이미지입니다.

저에게 설정된 드라이버를 다 선택 한 뒤 키보드 또는 마우스를 누르면 ID번호가 나옵니다.

 

저는 키보드 ID = 1 , 마우스 ID = 11이네요.

 

아래 내용이 모두 github 사이트에 다 정리되어 있지만 제가 사용하면서 작성한 내용입니다.

  • 마우스 좌표 이동 (방법은 아래 코드 참조)
    • SendMouseMove : 현재 마우스 위치에서 이동량
      • (<mouseId>, <x>, <y>)
    • SendMouseMoveAbsolute : 마우스 절대좌표로 "65535" 값이 화면 끝
      • (<mouseId>, <x>, <y>)
    • MoveCursor : 모니터에서 노출되는 좌표로 이동
      • (<x>, <y> [, <coordMode>, <mouseId>])
        • [ ]에 있는 것은 미입력 시 Default 값으로 적용됩니다.
        • Coordmode Default = "Screen" , MouseID Default = 11입니다.
#include Lib\AutoHotInterception.ahk
global AHI := new AutoHotInterception()

;ahi.sendmousemove(11,100,100)
;AHI.SendMouseMoveAbsolute(11, 2000, 65535)
;AHI.MoveCursor(100, 100 ,"Window",11)
  • 마우스 클릭
    • SendMouseButtonEvent : 현재 마우스 좌표에서 클릭
      • (<mouseId>, <button>, <state>)
        • button의 경우 Monitor에 나왔던 Code 번호입니다. (좌 = 0 , 우 = 1)
        • State의 경우 Monitor의 State 번호 입니다. (클릭 시작 = 1 , 클릭 때기 = 0)
    • SendMouseButtonEventAbsolute : 65535를 기준으로 좌표 이동과 동시에 클릭
      • (<mouseId>, <button>, <state>, <x>, <y>)
        • mouseid ~ state는 위와 동일합니다.
        • <x> , <y>는 65535까지 입력되는 절댓값입니다.
#include Lib\AutoHotInterception.ahk
global AHI := new AutoHotInterception()

;AHI.SendMouseButtonEventAbsolute(11, 1 , 1, 100, 6000)
;AHI.SendMouseButtonEventAbsolute(11, 1 , 0, 100, 6000)
;AHI.SendMouseButtonEvent(11,1,1)
;AHI.SendMouseButtonEvent(11,1,0)

 

  • 키보드 입력
    • SendKeyEvent(<keyboardId>, <scanCode>, <state>) : 키보드 입력
      • scancode = Monitor의 Code 번호를 사용 가능하며 , GetKeySC("a")와 같이 사용 가능합니다.
      • state = Monitor의 값 그대로이며 , 마우스와 동일합니다.
#include Lib\AutoHotInterception.ahk
global AHI := new AutoHotInterception()

;ahi.SendKeyEvent(1, GetKeySC("f3"), 1)
;ahi.SendKeyEvent(1, GetKeySC("f3"), 0)

x::ExitApp

이걸 사용해서 로지텍의 마우스의 하드웨어 매크로처럼 사용가능하네요.

 

하지만 단점은 마우스 좌표가 지정한 위치까지 도착 유/무를 체크하기 때문에 오차가 발생하거나 했을 때 문제가 발생할 때가 있네요.

 

AutohotInterception을 이용한 콘텐츠를 한번 작성해 보겠습니다.

반응형

댓글