[macOS] - 맥의 화면을 회전해보자 (programmatic way)

피버시노를 만들고나서 다른 OS에서도 사용하기위한 준비를 하고있다.
예전에 들었던 소문 중에 Macbook을 태블릿PC 로 모딩해주는 모드북이 있어 알아보던 중 macOS  에서 프로그램 방식으로 디스플레이 화면을 회전시킬 수 있는 fb-rotate을 발견했다.

#macOS 환경에서의 디스플레이 로테이션.

macOS 환경에서 디스플레이 회전은 iPad 처럼 작동하지 않는다. (애니메이션 효과 X) 심지어 Windows만큼 빠릿한 경험을 제공해주지도 않는다.

화면 회전 할 때마다 다른 모니터들까지 깜빡이면서 기본 설정으로 원복이 되는데, 만약 해당 모니터의 기본 설정이 맥에서 사용 할 수 없는 경우에는 화면이 출력되지 않는 당황스러운 문제도 발생한다.
(macOS에서 사용 할 수 없는 주사율의 모니터일 경우 블랙스크린이된다.)

이런 상황의 사용자는 모든 방향으로 한번씩 회전 시켜서 커스텀 설정을 저장해줄 필요가있다.
한번만 해주면 로테이션 값이 바뀌어도 그대로 유지가 된다.

2대의 모니터를 사용하는 Windows의 경우 평소와 다른 순서로 모니터가 연결되면 2번모니터와 1번모니터를 혼동하여 비정상적인 작동을 보여주었는데 macOS 에서는 이런방식 덕분인지 그런 문제는 발생하지 않았다. 단점 같지만 장점이 되기도 한다.


macOS는 com.apple.windowserver.plist에 모든 상황의 유저 설정 리스트를 따로 만들어 관리한다.
나는 Windows가 어떻게 모니터 설정 리스트를 관리하는진 모른다.
하지만 추측해보건데 이런식으로 관리하진 않는것 같다.
그랬으면 프로그램에서 주 모니터와 보조 모니터를 혼동하는 일이 발생하지 않았을 것이다.

#시작하기전 컴파일은 반드시 해주어야한다.

1. 모니터 리스트 : fb-rotate -l 
현재 사용중인 모니터의 리스트를 보여준다.
$ ./fb-rotate -l Display ID       Resolution 0x5809d1c2       2560x1440                  [main display] 0x745e1a47       1080x1920   


2. 모니터 정보 : fb-rotate -i
재미있는건 마우스 커서위치까지 알려준다.
 com.apple.windowserver.plist와 다르게 fb-rotate는 항상 최신정보를 보여준다.
$ ./fb-rotate -i #  Display_ID    Resolution  ____Display_Bounds____  Rotation 0  0x5809d1c2    2560x1440      0     0  2560  1440      0    [main] 1  0x745e1a47    1080x1920  -1080     0     0  1920     90    Mouse Cursor Position:  (  1455 ,  1200 )


3. 모니터 회전 : fb-rotate -d (디스플레이) -r (각도)
(디스플레이)에는 번호나 디스플레이 ID 를 넣어주어도 된다.
$./fb-rotate -d 0x745e1a47 -r 0 $ ./fb-rotate -i #  Display_ID    Resolution  ____Display_Bounds____  Rotation 0  0x5809d1c2    2560x1440      0     0  2560  1440      0    [main] 1  0x745e1a47    1920x1080  -1920     0     0  1080      0    Mouse Cursor Position:  (  1510 ,  1122 ) $ ./fb-rotate -d 0x745e1a47 -r 90 $ ./fb-rotate -i #  Display_ID    Resolution  ____Display_Bounds____  Rotation 0  0x5809d1c2    2560x1440      0     0  2560  1440      0    [main] 1  0x745e1a47    1080x1920  -1080     0     0  1920     90    Mouse Cursor Position:  (  1510 ,  1122 )


4. 주 모니터 변경 : fb-rotate -d (디스플레이) -m
(디스플레이)를 주 모니터로 변경해준다.
$./fb-rotate -i #  Display_ID    Resolution  ____Display_Bounds____  Rotation 0  0x5809d1c2    2560x1440      0     0  2560  1440      0    [main] 1  0x745e1a47    1080x1920  -1080     0     0  1920     90    Mouse Cursor Position:  (  2088 ,  1068 ) $ ./fb-rotate -d 0x745e1a47 -m $ ./fb-rotate -i #  Display_ID    Resolution  ____Display_Bounds____  Rotation 0  0x745e1a47    1080x1920      0     0  1080  1920     90    [main] 1  0x5809d1c2    2560x1440   1080     0  3640  1440      0    Mouse Cursor Position:  (  2088 ,  1068 ) $ ./fb-rotate -d 0x5809d1c2 -m $ ./fb-rotate -i #  Display_ID    Resolution  ____Display_Bounds____  Rotation 0  0x5809d1c2    2560x1440      0     0  2560  1440      0    [main] 1  0x745e1a47    1080x1920  -1080     0     0  1920     90    Mouse Cursor Position:  (  2059 ,  1186 )


이번 목표는 프로그램 소스들을 활용해서 피버시노가 macOS에서도 작동 할 수 있게 하는 것 이다.
이 와 비슷 한 프로그램으로 displayplacer가 있다.

Comments

Popular posts from this blog

[POE] - 패스 오브 엑자일 획득키 F 의 사용법 (Path of Exile)

[Arduino] - HC-06를 이용해 PC 와 Arduino 블루투스 연결

[XBOX] - 엑스박스원s 패드 and 블루투스 자동연결 for PC

[Raspberry Pi] - rc카 만들기 #2 Servo Motor