AutoHotKey - Windows용 HotKey Script Utility
이름: AutoHotKey
License: GPL ver.2
Homepage: www.autohotkey.com
개발언어: C++
OS: Windows 전용(Windows 95, 98, ME에서는 일부 기능 제한됨)
소개
AutoHotKey는 Windows용의 open source utility로, 키보드와 마우스, 조이스틱 등의 입력 장치에 대한 입력을 가로채서 특정 기능을 하도록 하는 SW입니다.
단순한 단축키, 키 리매핑 유틸리티가 아니라 막강한 자체 스크립트 언어를 사용하여 시스템에 대한 여러가지 제어가 가능하며, 입력 장치의 입력을 흉내낼 수도 있습니다.
스크립트를 얼마나 잘 쓰느냐에따라 단순한 단축키, 키 리맵핑 용도로 쓸 수도 있고, 마우스 제스쳐나 상용 유틸리티에서나 제공할만한 다양한 기능을 구현할 수도 있습니다.
또, 스크립트 컴파일러가 제공되어 스크립트를 실행파일로 만들 수 있으며, GUI 구현을 보다 쉽게 해 주는 SmartGUI Creator도 제공됩니다.
지원되는 기능은?
키보드 및 마우스 제어
산술 연산
사운드 카드의 볼륨 조정, 사운드 재생
윈도의 투명화, Always-on-top 설정, 모양 변경
조이스틱이나 키보드로 마우스 흉내내기
시스템 모니터링(특정 윈도가 종료되는 것을 감지하는 것 같은)
클립보드 제어
트레이아이콘의 아이콘, 팝업 메뉴, 툴팁, 풍선 도움말 등을 커스터마이즈
다이얼로그 박스, 툴팁, 풍선 도움말, 팝업 메뉴 디스플레이
시스템 종료나 로그 오프
픽셀 컬러 찾기에 의한 게임용 액션
텍스트 파일 읽고 쓰기 및 파싱
레지스트리 및 INI 파일 읽고 쓰기
윈도우 제어
프로그램의 실행 및 종료
파일 제어(복사, 이동, 삭제, 단축아이콘 생성, 속성 얻기, 휴지통으로 보내기 등등)
GUI 컨트롤 생성 및 제어
등등등
어떤 일을 할 수 있을까?
예전 이 SW를 알게 된 후 재미삼아 스타크래프트용으로 스크립트를 짜 보았습니다. 단축키로 지정된 배럭들을 1~0까지 10개를 돌아가며 마린2, 메딕1, 마린 2 순서로 생산하도록 해 두고, 배럭만 10개를 지어놓고 핫키를 눌러 마린+메딕 부대를 대량으로 찍어냈죠. 생산력이 극대화되면서 정신없이 쏟아지는 마린과 메딕들...... 컨트롤 할 겨를 없이 그냥 어택땅으로 적의 본진으로 보내기만 할 수 밖에 없는 상황이 되었으나, 물량으로 극복이 되어버렸습니다.
( 양심상, 배틀넷에는 들어가지 않고 컴퓨터와 했습니다. :-) )
예전 울티마온라인을 하면서 당시 사용했던 몇 몇 매크로 유틸리티들과 비교해서 생각해보면, 그 유틸리티들보다 더 세밀하고 복잡한 스크립트를 짤 수 있을 것으로 생각됩니다. (단, 게임 내에서의 메시지에따라 다르게 반응하는 스크립트 같은 기능은 제외)
왠만한 게임용 스크립트들은 충분히 작성이 가능합니다.
스크립트를 짜는 게 귀찮다면 그냥 Recording한 다음 편집해서 써도 됩니다.
프로그램을 실행하기위해 매 번 QuickStart의 작고 많은 아이콘들을 뒤지거나 시작-프로그램-.... 으로 실행하거나 하는 괜히 귀찮은 일을 줄이기 위해 단축키로 프로그램을 실행하도록 스크립트를 구성했었습니다.
Ctrl+Space를 누르면 스크립트가 구동되어, 이후 입력되는 커맨드를 환경설정 파일에 있는 커맨드와 비교하여 해당 프로그램이 실행되도록 하였지요.
그리고 입력되는 커맨드는 트레이 부분의 트레이팁으로 표시되게 하여 눈으로 확인이 쉽게 되도록 했습니다.
Ctrl+Space를 누르고, vim[엔터] 하면 GVIM이, Ctrl+Space누르고 gimp[엔터]하면 GIMP가, Ctrl+Space누르고 kldp[엔터]하면 www.kldp.org로 연결되는 브라우저가 뜨는 식이었습니다.
단축키와 스크립트를 조합하여 귀차니즘을 덜 수 있습니다.
개인적으로 로지텍에서 출시된 트랙볼을 사용하는데, 드라이버와 마우스제어 프로그램이 업그레이드되면서 자주 사용하던 기능이 사라져버리는 일을 겪어 드라이버를 계속 구 버전을 쓸 수 밖에 없었습니다.
그러나 버그로 인해 가끔 마우스 제어 프로그램이 종종 죽어버리는 불편함이 있고, 현재 지원되는 기능 중 제대로 동작되는 기능은 몇 가지 되지 않는 불편함도 있어 요즘은 이를 대체하기 위한 스크립트를 짜고 있습니다.
Alt+Tab 조합을 대신할 Task Manager나, 윈도 리사이징, 스크롤링 등의 기능, 단축키를 이용한 프로그램의 실행, 마우스 제스쳐(프로그램별로 구분되는) 등의 기능을 생각해두고 구현중입니다.
상용으로 혹은 번들로 제공되는 마우스/키보드 유틸리티들의 기능 대부분이 구현이 가능합니다.
죽어서는 안 될 윈도 프로그램이 죽어버린다면? 이런 비상사태에 대비하는 스크립트 구성이 쉽게 됩니다. 재빨리 재실행을 시키고, 초기화에 필요한 동작을 하도록 할 수 있으며, 그와 동시에 이메일 클라이언트를 띄워 긴급 이메일을 작성하여 전송하고, 또 로그를 남길 수 있습니다.
vi(vim) 매니아인데 VC++을 써야 하는 상황에서 hjkl로 커서 이동을 하고 싶다, yy로 블럭을 복사하고 p로 붙여넣고 싶다, 이런 경우 vi 모드 스크립트를 구성해서 쓰면 됩니다.
간단한 키보드와 마우스 입력으로 복잡한 작업을 하고 싶거나, 키보드/마우스 입력을 복잡하게 흉내내고자 하면, 또는 단순 반복 위주의 입력/편집 작업 등은 AutoHotkey를 쓰는 것이 적당하다고 생각됩니다.
무엇이 필요할까?
개발자들이야 영문으로 된 매뉴얼을 지겹도록 마주대하니 상관없을 수 있겠지만, 일반적인 사용자들에게는 영어로 된 매뉴얼은 쉽지 않게 느껴지겠지요.
메뉴나 메시지에 한글 한 자 없어도 어렵게 느껴질 것입니다.
즉, 문서와 메뉴, 메시지 등의 한글화가 필요합니다.
그리고, 보다 다양한 응용을 위해 기초적인 스크립트 예제는 물론 고난이도의 예제 스크립트도 개발되어 사용되고, 발전되는 것이 필요합니다.
또한, 추가되었으면 하는 기능, 버그 신고 및 수정 등에 대한 의견 수렴과 작업이 이루어진다면 좋겠습니다.
한글화에 대해서는 상당히 방대한 분량이므로 천천히 진행해야 할 것 같지만, 주요 툴의 사용법이나 간략한 매뉴얼 정도는 우선적으로 진행되는 게 좋을 것으로 생각합니다.
스크립트 개발은 이미 AutoHotKey를 사용해 보신 분들께서 자신의 스크립트를 공개하는 것은 당장이라도 할 수 있을 것입니다.
기능 추가 혹은 추가되어야 할 기능에 대한 건의, 버그 신고 및 수정 등에 대해서는 AutoHotKey를 계속 사용하다보면 자연스럽게 의견이 모일 것으로 생각합니다.
PS) 약속대로 하나 정해서 소개글 올립니다.
소개글 쓰는 것도 쉽지 않군요. =_=
부족해도 이해해주시길 바라며, 부족한 부분에 대해서는 글 남겨주세요~
한글화나 매뉴얼 작성, 스크립트 개발 및 공개, 기타 등등의 작업에 대해서도 어떻게 진행하면 좋을 지 의견 올려주세요~
여러 오픈 소스 프로젝트들이 있지만, 요즘 가지고 노는(?) 게 이놈인지라 이걸로 정했습니다.
조만간, 기존에 작성해 두었던 스크립트와 현재 작성중인 스크립트를 이곳에 공개하도록 하겠습니다.
첨부 | 파일 크기 |
---|---|
![]() | 5.26 KB |
![]() | 187.14 KB |
![]() | 7.91 KB |
![]() | 1.12 KB |
댓글
[Script] RunAPP
작년에 작성해두고 틈틈히 손을 보던 RunAPP Script입니다.
기본 설정은,
Ctrl+Space를 누른 후 applist.txt에서 설정된 키워드의 기능을 수행합니다.
applist.txt 파일의 형식은,
;로 시작하는 줄은 주석으로 처리되며
한 줄은 아래 세 개의 토큰으로 구성이 됩니다.
KeyString PathString [WorkPathString]
각 토큰은 [Tab] 하나로 구분이 되며, WorkPathString은 생략 가능합니다.
PathString은 실행할 어플리케이션의 경로를 적으면 되지만, 윈도에서 지원되는 어떠한 형식의 경로를 적어도 상관은 없습니다.
예를 들어, http://www.kldp.org/ 라고 적는다면, 기본 브라우저가 실행되면서 www.kldp.org 에 접속이 됩니다.
구버전 스크립트여서 함수로 기능을 구분하는 부분은 이루어져 있지 않습니다. (최근 스크립트에서는 함수 정의 및 사용이 가능합니다만)
참고로, BlackBox, BBLean 등을 쓰는 경우 TrayTip이 표시되지 않습니다. -_-;
현재 새로 작성중인 스크립트에서도 이 스크립트와 유사한 기능을 넣을 생각이지만, BB등을 쓰는 경우 TrayTip 문제가 있어 GUI를 이용하도록 하고, 설정 파일 형식을 좀 바꿔볼까 하고 있습니다.
주석은 거의 없고 -_-; 코드도 좀 너저분 합니다만 따로 주석을 추가하거나 설명을 하기에는 좀 -_-;; 궁금한 부분 질문하시면 답변을 달도록 하겠습니다.
파일 설명
--------------
applist.txt Application 설정 파일
AutoHotkey.ini 기본 스크립트
Config.ini 환경 설정용 스크립트
InputKeyString.ini 키 입력 처리 및 키 입력 과정을 TrayTip으로 보여주기 위한 스크립트
RunApp.ini 입력된 문자열을 분석하여 applist.txt에서 일치되는 키워드의 어플리케이션 혹은 기능을 수행하는 스크립트
수고가 많으시네요.주중이라 많은 시간을 할애할 수가 없어 해당 프
수고가 많으시네요.
주중이라 많은 시간을 할애할 수가 없어 해당 프로젝트에 대해서 자세히 알아보지는 못했지만 소개글을 읽어본 바로는 대중적으로 많이 사용되는 프로그램인지 궁금하네요. 가능하면 널리 쓰이는 프로그램이어야지 사람들의 관심을 끌 수 있을 것 같은데요. 리눅스에 국한되지 않는다고는 하지만 KLDP 사용자들의 특성상 리눅스 혹은 유닉스 호환 프로젝트여야 더욱 손쉽게 다가갈 수 있을 것 같고요.
일단 코딩보다는 한글화와 스크립트 쪽에 비중을 두고 계신 것 같은데 웬만큼 호응이 있다면 한글화 쪽에 컨트리뷰션을 할 용의가 있습니다. 영어 공부도 할겸 8)
一切唯心造
간단한 스크립트를 만들어봤습니다
어제 이글을 보고 재미있겠다싶어 설치했는데,
생각보다 직관적이고 강력하더군요 +_+
저는 아니지만 회사 사람들중에 아크로드 게임을 즐기는 사람이 상당히 많은데, HP나 MP가 떨어지면 자동으로 채워주는 스크립트를 만들어봤습니다.
PixelGetColor를 사용하기 때문에 1024 x 768에 32bit color depth 모드로 실행해야 하고요 모니터 어둡다고 감마값을 조절하시면 동작 안할찌도 모릅니다.
HP는 절반이하로 떨어지면 자동으로 채워주고요
MP는 거의 1/10 정도남으면 채워줍니다.
0.5초 텀을두고 체크하기때문에 레벨이 너무 높은 몹을 잡을때는 스크립트만 믿고 계시다가는 HP 떨어지는 속도가 너무 빨라서 죽을 수도 있습니다.
AutoHotKey 프로그램을 설치하지 않으신 분들을 위해서 exe파일로도 만들었습니다.. 그건 첨부할께요
그럼 즐겜 : )
[quote="mazikonn"]수고가 많으시네요.주중이라 많은
관심가져주셔서 감사합니다.
이 프로그램이 알려지기 시작한 건 그리 오래되지 않은 것으로 알고 있습니다. 그리고, 개발자가 아닌 이상 쓰기 힘든 면도 없지 않구요. 그러다보니 한글화와 스크립트에 비중을 두게 되었습니다.
아직 많이 쓰이는 건 아니지만, 강력한 기능들때문에 충분히 널리 쓰일 가능성이 있다고 보고 있습니다.
한글화에 대해서는 방대한 분량이라 솔직히 아직은 엄두가 나지 않습니다. 지금 생각중인 것은 간단한 툴 사용법이라던가 간단한 스크립트 작성에 대한 부분 정도를 한글화하거나 자체 제작하는 걸 생각하고 있고, 이후 관심을 보이는 분들이 많아지면 매뉴얼쪽이나 프로그램의 한글화에도 손을 대 볼까 하고 있습니다.
또, 리눅스/유닉스 호환 프로젝트들도 생각중인 게 몇 가지 있습니다.
QEMU같은 것만 하더라도 쓸 줄 아는 분들은 무난하게 쓰지만 모르는 분들은 아예 모릅니다. 그러나, 개인적으로나 실무에서나 가상의 PC 환경이 필요한 경우는 종종 생기지요.
VNC 계열같은 PC 원격 조종 유틸리티도 적당할 것 같구요.
비록 윈도용이지만, - 그렇기 때문에 현재 KLDP의 리눅스/유닉스 유저/개발자들이 아닌 KLDP에서 아직 활동하지 않는 윈도 유저/개발자들을 끌어들일 수 있는 - freeCommander 라던가 등등 유틸리티 종류들과, 많이 쓰임에도 한글화된 자료는 정작 별로 없는 라이브러리들에 대해서도 차차 정리해 볼 생각입니다.
[Script] Task Selector
현재 작성중인 스크립트 유틸리티의 일부분으로,
Alt+Tab 대신 사용할 수 있는 Task Selector Script입니다.
taskSelector(0) 을 호출하면 창이 떠서 현재 윈도우 리스트들이 나타납니다.
10개까지 나타나고, h, l 로 이전/다음 리스트를 볼 수 있으며,
j,k로 Window를 선택할 수 있습니다.
마우스도 가능..
q를 누르면 창이 닫힙니다.
버그가 좀 있어서, 보이는 건 하나의 윈도인데 내부적으로 여러 개의 윈도우로 구성되는 경우, 내부 윈도우가 표시되기도 합니다. -_-;
이건 어떻게 해결해야 할 지 아직 모르겠네요.
BBLean의 경우, BBLeanBar 같은 것도 타이틀이 비어있는 윈도우여서, 아무런 타이틀 없이 표시됩니다.
이런 건 해결이 쉬울 것 같은데...
[번역] 번역 자원하실 분!
AutoHotKey의 문서들 중 소개 문서와 Quick-Start Tutorial을 먼저 번역해볼까 합니다.
소개 문서는 그다지 어렵지 않고, 분량도 많지 않은 편입니다.
먼저 찜하시면 임자입니다. :-)
Tutorial은 9 파트로 나뉘어져 있는데, 각 파트는 그다지 길지 않지만 전체 분량은 조금 됩니다. :-)
** 굵은 글꼴로 된 파트는 작업이 예약되어 진행중이거나 완료된 파트입니다. ***
Creating a script
Launching a program or document
Sending keystrokes and mouse clicks
Activating and manipulating windows(진행중)
Getting input from the user with MsgBox, InputBox, etc.
Using variables and the clipboard
Repeating a series of actions over and over
Manipulating files and folders
Overview of other features
역시 먼저 찜하시면 임자입니다.
그리고, 번역 작업은 위키로 진행하는 게 좋을 것 같은데, 다른 분들 생각은 어떠신지요? 위키 페이지를 만들어 진행하거나 혹은 메일로 작업을 진행하고 결과물만을 이 쓰레드의 게시물로 올릴지 결정해야 할 것 같습니다. 모든 과정을 쓰레드에 남기자니 쓰레드가 좀 복잡해질 것 같다는 걱정도 되어서요.
참고로, 번역 작업은 당분간은 원래의 프로젝트와는 별개로 진행하다 어느 정도 정리가 되면 원래의 프로젝트 관리자분께 연락드려서 본 프로젝트의 일부분으로 만들어 나갈지, 아니면 계속 별개의 작업으로 나갈지 결정하게 될 것 같습니다.
일단 Creating a script 찜합니다. 내용은 짧지만 그동안 혼
일단 Creating a script 찜합니다. 내용은 짧지만 그동안 혼자서 머리속으로 이해하기만 했지 번역의 경험이 없어서 조금 걱정이 되네요.
작업 방식에 대해서는 다수의 참여자가 있고 장기적으로 많은 양의 문서를 번역해야 한다면 별도의 wiki나 메일링 리스트를 통해 작업하는 것이 좋겠지만 소수의 참여자가 말씀하시는 Quick-Start Tutorial 정도의 분량을 번역하는 것이라면 일단은 이 글타래에서 해결하는 게 좋을 것 같습니다. 시작이니 만큼 kldp 유저들에게 일의 진척 사항을 공개하고 참여를 유도한다는 면에서도 좋을 것 같고요.
이견이 없다면 조만간 번역한 결과를 이 글타래에 올리겠습니다.
一切唯心造
네, 그럼 당분간 이 글타래에서 작업을 진행하도록 하겠습니다.전
네, 그럼 당분간 이 글타래에서 작업을 진행하도록 하겠습니다.
전 소개 문서와 Launching a program or document 파트를 번역해서 올리도록 하지요.
저도 번역 경험은 그다지 많지 않습니다. 몇 가지 프로그램들의 한글언어팩 파일 만든 것 정도와 학교 다닐때 자바 문서 몇 개 번역해본 정도......
개인적으로는 공부도 할 겸 해서 RFC 문서를 하나 잡고 번역중이긴 한데, 이것도 안 한지 꽤 됐군요. ㅡ_ㅡ 혼자만 하다보니......
원문[code:1]Creating a scriptEach sc
원문
역문
처음이라서 그런지 짧은 분량임에도 불구하고 생각보다 시간이 많이 걸리네요. 차차 나아지겠죠. :) 가능한한 직역을 하면서 어색한 부분에 한해서 의역을 했습니다. 이렇게 하는 게 맞는 건지 잘 모르겠네요.
무엇보다도 단어의 매칭이 가장 고민되는 부분인데요 외래어로 간주될 수 있는 단어는 그냥 발음대로 표기했구요. 예) 스크립트, 웹 페이지, 등등 달랑 발음대로 표기하기에는 뭔가 좀 부족한 단어들은 괄호에 영문을 병기했습니다. 예) 핫키(Hotkey), 핫스트링(Hotstring)
launch와 같은 단어의 경우 어떤 식으로 번역해야 할까 고민을 좀 했는데 처음에는 그냥 execute와 같이 실행하다로 번역하다가 시작하다로 바꿨습니다. 어떤게 좋은지 잘 모르겠네요. note의 경우도 일단 주의라고 번역하기는 했는데 뭔가 좀 어색한 것 같기도 하고요.
이런 부분에 대해서 많은 분들이 피드백 주셨으면 좋겠고요 앞으로 통일성을 위해 하나씩 수정하고 수렴해 나가면 될 것 같습니다.
一切唯心造
[번역] AutoHotKey 소개 문서
원문
번역문
매뉴얼의 가장 처음에 있는, 소개 부분을 번역해 보았습니다.
여기 저기 의역도 좀 되어 있고, 대충 번역해버린 부분도 있습니다. :) 잘못 번역한 것도 있을겁니다. 좀 이상하거나 잘못된 부분은 지적해 주시면 감사하겠습니다.
modifier key를 어떻게 번역해야 하나 고민하다, 제어 키로 번역해두었습니다.
[소스] Unicure Update Script
저와 제 친구 하나는 유니큐어라는 안티-바이러스 프로그램을 씁니다.
그러나, 평가판이어서 자동 업데이트가 안되기때문에, 매번 웹으로 수동 업데이트를 해 주어야 합니다.
그게 귀찮아서 -_- 이렇게 스크립트를 짜 봤습니다.
AutoHotkey의 컴파일 기능으로 EXE로 만들어서 친구에게 보내줬더니 좋아하더군요. :D
뭐, 파싱하는 부분은 복잡하게 짜기 귀찮아서 대강 짜 버렸습니다.
[번역] Launching a program or document
원문
번역문
좀 쉽지 않은 부분들이 있었으나, 나름대로 의역을...... :)
짧으니까 그래도 금방 끝나는군요. 30분 정도 걸린 듯 합니다.
[번역] 단어 번역 참고...
번역을 하면서 일부 단어들은 그냥 소리나는 대로 번역을 하고 있거나, 좀 어색한 단어로 번역을 하거나 합니다.
번역 당시에 딱히 적당한 단어가 떠오르지 않거나 마땅한 단어가 없을 경우인데요,
보다 나은 번역을 위해, 그리고 통일성을 위해 그러한 단어들을 아래에 정리하고 보다 알맞은 단어를 찾아보고자 합니다.
우선은 제가 생각하는 뜻을 적도록 하겠습니다.
적절한 의견 주시면 반영하도록 하겠습니다.
Hotkey / 단축키 또는 단축글쇠, 개인적으로는 단축키가 좀 더 익숙한 말입니다. 단축글쇠가 좀 더 올바르지 않을까 생각은 하고 있습니다만......
[/]HotString / 단축문자열
Launch / 시작 또는 실행, 개인적으로는 실행이 좀 더 알맞은 단어라 생각됩니다.
Remap / 재배치 또는 재정의, 재배치 보다는 재정의가 좀 더 알맞을 경우가 있는 듯 합니다.
Modifier Key / 제어 키 또는 보조 키, 한참 고민했던 말입니다. 수정 키 는 아무래도 좀 어색하고 제어 키나 보조 키 정도가 적당할 듯 합니다. 저는 현재 제어 키로 쓰고 있습니다.
[번역] Sending keystrokes and mouse clicks
원문
번역문
[Script] 마우스 멀티포인터 스크립트
간단하게, 멀티 마우스 포인터를 흉내낸 프로그램입니다.
http://kldp.org/node/56268 이 글타래를 간만에 봤다가, 멀티포인터 마우스가 하나 소개된 게 있길래 흉내를 좀 내 봤습니다.
boMultiMouseCnt의 초기값은 스크립트가 위치한 곳의 BoMultiMouse.ini에서 MaxMouseCount 값을 읽어서 변경하는데,
3개까지는 테스트 해 봤습니다. 그 이상도 동작은 잘 되겠죠. ㅡ.ㅡ;
Ctrl + Mouse의 Forward 버튼을 누르면, 현재 위치를 저장해두고 기본 포인터 인덱스를 증가시킨다음, 해당 인덱스의 위치로 마우스 포인터를 옮깁니다.
버그가 조금 있지만 디버깅이 귀찮아서 동작에는 무리가 없도록만 수정해서 올립니다.
boMultiMouseCnt:=2
boMultiMouseInit:=0
boMultiMouseCurIdx:=0
IfNotExist, %A_WorkingDir%\BoMultiMouse.ini
{
IniWrite, 2, %A_WorkingDir%\BoMultiMouse.ini, BoMultiMouse, MaxMouseCount
}
else
{
IniRead, boMultiMouseCnt, %A_WorkingDir%\BoMultiMouse.ini, BoMultiMouse, MaxMouseCount, 2
}
Loop, %boMultiMouseCnt%
{
boMultiMousePos%A_Index%X=-1
boMultiMousePos%A_Index%Y=-1
}
ChangeCurrentMouse()
return
BoMultiMouseInit()
{
global boMultiMouseInit
global boMultiMousePos
boMultiMouseInit:=1
SplashTextOn, 200, 20, Bo-Multi Mouse Pointer,Start!
Sleep, 1000
SplashTextOff
}
ChangeCurrentMouse()
{
global boMultiMouseCnt
global boMultiMouseInit
global boMultiMouseCurIdx
; Loop, %boMultiMouseCnt%
; {
; global boMultiMousePos%A_Index%X
; global boMultiMousePos%A_Index%Y
; }
CoordMode, Mouse, Screen
; if boMultiMouseInit = 0
; BoMultiMouseInit()
; Store the position to current Mouse Info
MouseGetPos, tempX, tempY
boMultiMousePos%boMultiMouseCurIdx%X:=tempX
boMultiMousePos%boMultiMouseCurIdx%Y:=tempY
;ListVars
boMultiMouseCurIdx++
if boMultiMouseCurIdx > %boMultiMouseCnt%
boMultiMouseCurIdx:=1
; Load the position from previous Mouse Info
if boMultiMousePos%boMultiMouseCurIdx%X = -1
{
;boMultiMousePos%boMultiMouseCurIdx%X:=tempX
;boMultiMousePos%boMultiMouseCurIdx%Y:=tempY
}
else
{
tempX:=boMultiMousePos%boMultiMouseCurIdx%X
tempY:=boMultiMousePos%boMultiMouseCurIdx%Y
MouseMove, %tempX%, %tempY%, 0
}
;ListVars
}
^XButton2::
; Toggle the current mouse
ChangeCurrentMouse()
return
댓글 달기