질문과 답변
소프트웨어 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 | - | - |
73406 | 윈 도 우| win7 다운 경로좀 알려주실분요 [3] | 인생허무무 | 606 | 04-07 |
73405 | 하드웨어| 인텔8세대 CPU쓰는데 구형외장그래픽을 달 필요가 있을까요? [6] | blackrains | 837 | 04-07 |
73404 | 윈 도 우| PE에서 DISM GUI 에러에 대해.... [7] | OldMaC | 266 | 04-07 |
73403 | 기 타| 하드디스크를 바꾸면 인식이 바로바로 안됩니다 [6] | 天乙貴人 | 418 | 04-06 |
» | 소프트웨어| ahk 스크립트 수정 좀 부탁드려도 될까요 [2] | 먹물새우깡 | 324 | 04-06 |
73401 | 윈 도 우| 요즘 윈도우는 어디에서 받나요 [2] | 나그네_K | 573 | 04-06 |
73400 | 소프트웨어| ai로 만들어진 문서를 pdf 로 저장한거 수정하는방법 [5] | 한스 | 697 | 04-06 |
73399 | 윈 도 우| 크롬 최신인데 어데 가면 [4] | aqz | 399 | 04-06 |
73398 | 윈 도 우| 헤르메스 2.1 랜섬웨어 복원 가능한가요? | ton3d | 350 | 04-06 |
73397 | 윈 도 우| 윈빌더10pe 관리자계정로그인 스크립트파일질문! | 복태취업했 | 207 | 04-06 |
73396 | 윈 도 우| RS4에서 Google Earth Pro가 안됩니다. [2] | Day | 215 | 04-06 |
73395 | 기 타| 배틀그라운드사양이... [2] | small | 224 | 04-06 |
73394 | 윈 도 우| RS4 17133.1 설치후 로그인 문제 문의 [2] | 알랍베비 | 365 | 04-06 |
73393 | 윈 도 우| 윈도우10 r4 설치후 v3lite 문제 [6] | Again87 | 662 | 04-06 |
73392 | 소프트웨어| 질문) 노트북 화면만 끄고 싶은데 [2] | 번개 | 377 | 04-06 |
73391 | 하드웨어| 요즘에는 어떤 하드가 괜찮나요? [8] | 기억의멜로 | 598 | 04-06 |
73390 | 소프트웨어| 노트북 와이파이 차단 프로그램 찾아요. [6] | 나이스트란 | 988 | 04-06 |
73389 | 하드웨어| cpu... [3] | 어느날갑자기 | 401 | 04-06 |
73388 | 하드웨어| 파워서플라이 다시한번 조언 부탁드립니다. [8] | 맹물 | 418 | 04-06 |
73387 | 기 타| 기존 이메일 계정으로 바이두 로그인?? | 도리도리 | 295 | 04-06 |
#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비트 유니코드버전으로 컴파일 하시어 사용하면 되구요. 첨부합니다