질문과 답변
소프트웨어 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 | - | - |
73473 | 윈 도 우| windows10 upgrade [2] | 아침천사 | 1031 | 04-11 |
73472 | 윈 도 우| 레드스톤4 업데이트 [4] | 크롱 | 1665 | 04-11 |
73471 | 하드웨어| 그래픽카드 고장? [1] | 빵야빵야빵 | 516 | 04-11 |
73470 | 하드웨어| Micro SD Card와 노트북의 Card Reader [6] | 토니 | 468 | 04-11 |
73469 | 기 타| 하드 양철떼기 조여도 소리가 나 살짝 풀었더니 [11] | aqz | 984 | 04-11 |
73468 | 소프트웨어| 고스트 옵션 중에서 -NTEXACT 는 어떤 옵션인가요??? [3] | 1002 | 548 | 04-10 |
73467 | 기 타| pc에서 tv 수신카드 없이 tv 보는 방법? [6] | 아짜 | 1696 | 04-10 |
73466 | 윈 도 우| 원클릭pe 익스 영상재생이 안되는데 html5플레이어재생 윈... | 복태취업했 | 277 | 04-10 |
73465 | 윈 도 우| 윈10 익스11 에서 유튜브 재생 오류 [6] | 이탈 | 633 | 04-10 |
73464 | 기 타| 안녕하세요..윈도우10에서 네이버익스플로러에서 마그넷? [4] | 짚신 | 318 | 04-10 |
73463 | 윈 도 우| 지금 보드 가는중인데요 usb가 [18] | aqz | 684 | 04-10 |
73462 | 윈 도 우| 원클릭PE 구글크롬,익스,오페라,이상무 불여우만사운드무 질문 [3] | 복태취업했 | 302 | 04-10 |
73461 | 윈 도 우| 디스크 형식 변경시 데이터 파괴 되나요? [1] | billy | 354 | 04-10 |
73460 | 윈 도 우| 원도우10 USB 로 만들 때 포멧을 FAT32 와 NTFS 둘중에 아... [2] | 소소닌 | 1594 | 04-10 |
73459 | 기 타| 바보같은 질문이지만 행, 열이 헛갈려요. [8] | billy | 836 | 04-10 |
73458 | 하드웨어| wd 하드를 사서 포맷하려는데, 포맷이 안되요. [7] | 기억의멜로 | 1138 | 04-10 |
73457 | 윈 도 우| PE 어도비에어설치문제 레지샷비교샷. [2] | 복태취업했 | 408 | 04-10 |
73456 | 윈 도 우| 멀티부팅 ...질문 있습니다 ~ [8] | 타면자건 | 552 | 04-10 |
73455 | 윈 도 우| 윈도우10 드라이버 질문합니다! [3] | 보노보노아 | 270 | 04-10 |
73454 | 하드웨어| pc사용중 다운 후 재부팅 시 pxe-e61 표출 [1] | morrie | 298 | 04-10 |
#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비트 유니코드버전으로 컴파일 하시어 사용하면 되구요. 첨부합니다