질문과 답변
소프트웨어 ahk 스크립트 수정 좀 부탁드려도 될까요
2018.04.06 22:28
작업 때문에 일반 가로 모니터를 표시 방식만 세로로 하고 사용하는 중입니다. 반시계 방향 90도구요.
마우스를 움직이려면 고개를 꺾어서 봐야되기에 가로로 놓여있는 모니터에서 마우스 축만 돌려서 사용하는 스크립트를 찾았는데요.
아래 스크립트에서 반대값으로 수정 할줄 모르겠습니다. 스크립트는 모니터를 우측으로 90도 돌렸을 때 마우스 축을 돌린거거든요..
저는 모니터를 시계 반대방향으로 90도 회전으로 설정했습니다.
마우스는 현실에서 좌로 드래그 하면 위로, 우로 드래그 하면 밑으로 움직이는 형식으로 만들고 싶거든요..;;;
까막눈이라 몇줄 수정 조차 감이 안옵니다. 혹시 간단하게 수정해주실 수 있으신 분 계실까요. 부탁드립니다. ;;
이건 혹시나 해서 문의드립니다. 제가 지금 모니터 표현 방식을 반시계 90도로 돌릴 때도 바탕화면에서 우클릭-설정 들어가서 변경하고 있는데
ahk 로 모니터도 반시계로 돌리고 마우스 축도 위처럼 돌리고 싶은데 동시에 하는 방법이 있을까요 ;;;;
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
#NoEnv SetBatchLines -1 Process Priority,,R BlockInput Mouse ; user mouse input is ignored during MouseMove CoordMode Mouse, Screen ; absolute coordinates SetMouseDelay -1 ; fastest action MouseGetPos x0, y0 ; get initial mouse pointer location SetTimer WatchMouse, 1 ; run the subroutine fast (10..16ms) Return WatchMouse: MouseGetPos x, y ; get current mouse position xn:=x0+y0-y yn:=y0-x0+x x0:=(xn>A_ScreenWidth) ? A_ScreenWidth : (xn<0) ? 0 : xn y0:=(yn>A_ScreenHeight) ? A_ScreenHeight : (yn<0) ? 0 : yn MouseMove x0, y0, 0 ; set new position as old, for the next timer Return z::ExitApp
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
댓글 [2]
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
7831 | 윈 도 우| 토탈 커맨더 조언좀 받아요 [2] | 슈머슈마 | 294 | 11-22 |
7830 | 윈 도 우| 윈10 프로세서 일시중지됨 현상. | 있어도안보 | 294 | 11-16 |
7829 | 소프트웨어| 파일 동기화 프로그램 중에 [3] | 오백원 | 294 | 09-10 |
7828 | 하드웨어| benq 모니터 [3] | 뷰티블마인 | 294 | 10-18 |
7827 | 소프트웨어| 어떤 게 좋을까요? [2] | 지구여행중 | 294 | 11-25 |
7826 | 기 타| 폴더 공유 관련하여 문의드립니다. [3] | joyleehk | 294 | 10-26 |
7825 | 소프트웨어| Easysysprep 봉인 관련 문의 [3] | 엉클퍼커 | 294 | 07-20 |
7824 | 서버 / IT| ASUS AIMesh 연결이 잘안되네요. | MOOTS | 294 | 06-16 |
7823 | 윈 도 우| 서비스 실행 오류 .. [2] | 촌꼬마 | 294 | 05-27 |
7822 | 소프트웨어| repack 설치 문의 [1] | 한뜻 | 294 | 01-11 |
7821 | 윈 도 우| 램 용량을 제대로 인식 못하는데 뭐가 문제일까요? | 낭만도동넘 | 294 | 12-16 |
7820 | 소프트웨어| 프리미어가 무비메이커보다 인코딩이 느리네요? [2] | brucex | 294 | 01-12 |
7819 | 소프트웨어| VMware Workstation 게임질문 [2] | gkgk77 | 294 | 03-29 |
7818 | 윈 도 우| 웜파일로 캡쳐하는 방법... [5] | reg | 294 | 02-25 |
7817 | 윈 도 우| 윈도우에 필요한 폰트만 남기고 정리하는 툴이 있나요? [3] | brucex | 293 | 03-23 |
7816 | 윈 도 우| 윈도우10설치 후 부팅시 '사용자 암호 만료되었다'는 창이 ... [2] | pinnk | 293 | 03-15 |
7815 | 윈 도 우| 진짜 고수분 있나요 자동 창 배열 관련 [1] | ASDQWCCZ | 293 | 01-20 |
7814 | 윈 도 우| 윈도우비스타 OEM HP컴 Home Basic K 버전 메인보드 SLIC ... [1] | 반짝이 | 293 | 04-30 |
7813 | 하드웨어| 갑자기 컴퓨터가 지맘대로 종료, 재부팅합니다 [3] | brucex | 293 | 03-25 |
7812 | 기 타| 애니메이션 최신꺼 볼만한 방법이.. [9] | 빨간미소 | 293 | 11-25 |
#NoEnv
SetBatchLines -1
Process Priority,,R
ChangeDisplayOrientation(1)
BlockInput Mouse ; user mouse input is ignored during MouseMove
CoordMode Mouse, Screen ; absolute coordinates
SetMouseDelay -1 ; fastest action
MouseGetPos x0, y0 ; get initial mouse pointer location
SetTimer WatchMouse, 1 ; run the subroutine fast (10..16ms)
Return
WatchMouse:
MouseGetPos x, y ; get current mouse position
xn:=x0+y0-y
yn:=y0-x0+x
x0:=(xn>A_ScreenWidth) ? A_ScreenWidth : (xn<0) ? 0 : xn
y0:=(yn>A_ScreenHeight) ? A_ScreenHeight : (yn<0) ? 0 : yn
MouseMove x0, y0, 0 ; set new position as old, for the next timer
Return
z::
ResetDisplay(0)
ExitApp
return
; Orientation
; 0 - DMDO_DEFAULT
; 1 - DMDO_90
; 2 - DMDO_180
; 3 - DMDO_270
; Display:
; The name of the display device. Usually something like: \\.\DISPLAY1
; If omitted, uses the default display device.
; dwflags:
; 0 - change dynamically (use ResetDisplay() to reset to settings in registry)
; 1 - change dynamically and update registry (CDS_UPDATEREGISTRY)
; 2 - test if the requested mode could be set (CDS_TEST)
ChangeDisplayOrientation(Orientation, Display="", dwflags=0)
{
; DEVMODE is 156 bytes on Windows XP and later.
; It is smaller on earlier versions of Windows, but that's okay.
VarSetCapacity(devmode, 156, 0)
NumPut(156, devmode, 36) ; devmode.dmSize := sizeof(devmode)
; Get the current resolution and orientation.
if ! DllCall("EnumDisplaySettingsA"
, "uint", Display ? &Display : 0 ; device name or NULL
, "int", -1 ; ENUM_CURRENT_SETTINGS
, "uint", &devmode
, "uint", 0)
return ; FAILED
; Get current resolution.
dmPelsWidth := NumGet(devmode, 108)
dmPelsHeight := NumGet(devmode, 112)
if (mod(NumGet(devmode, 52),2) != mod(Orientation,2))
{ ; Swap height and width.
NumPut(dmPelsHeight, devmode, 108) ; width
NumPut(dmPelsWidth, devmode, 112) ; height
}
; Set orientation.
NumPut(Orientation, devmode, 52)
; Update display settings.
return DllCall("ChangeDisplaySettingsExA"
, "uint", Display ? &Display : 0
, "uint", &devmode
, "uint", 0
, "uint", dwflags
, "uint", 0)
/* Return values for ChangeDisplaySettings
#define DISP_CHANGE_SUCCESSFUL 0
#define DISP_CHANGE_RESTART 1
#define DISP_CHANGE_FAILED -1
#define DISP_CHANGE_BADMODE -2
#define DISP_CHANGE_NOTUPDATED -3
#define DISP_CHANGE_BADFLAGS -4
#define DISP_CHANGE_BADPARAM -5
#define DISP_CHANGE_BADDUALVIEW -6
*/
}
ResetDisplay(Display="")
{
return DllCall("ChangeDisplaySettingsExA"
, "uint", Display ? &Display : 0 ; device name or NULL
, "uint", 0, "uint", 0, "uint", 0, "uint", 0)
}
32비트 유니코드버전으로 컴파일 하시어 사용하면 되구요. 첨부합니다