모니터 옵션 조절 버튼을 여러번 눌러야 입력을 HDMI1 와 HDMI2 로 바꿀 수 있어 귀찮았다. 입력을 바꿀 수 있는 프로그램이 있나 싶어서 검색해봤다.
먼저 검색된 방법은 AutoHotKey 매크로로 SetVCPFeature, GetVCPFeatureAndVCPFeatureReply 를 호출하는 방식이었다. 내 PC에서는 동작하지 않았다.
https://www.clien.net/service/board/lecture/9611475
https://kimsgomul.tistory.com/278
https://www.entechtaiwan.com/util/moninfo.shtm
다음으로 걸린 프로그램이 ControlMyMonitor 이었다.
http://www.nirsoft.net/utils/control_my_monitor.html
모니터 설정을 바꿀 수 있는 VCP Features 를 모니터마다 제공하는데 이를 이용하는 방식이다. 위 매크로와 같은 api 를 사용하는 것 같다.
실행하면 모니터와 통신을 통해 지원되는 VCP Code 와 현재, 최대, 지원되는 값을 보여준다.
오른쪽 마우스 메뉴나 F6 을 눌러 속성을 바꿀 수 있다. Current Value 값을 입력에 대응되는 값으로 바꾸면 입력이 변경된다.
모니터 입력이 변경되면 해당 모니터와 연결된 장비에서 제어해야 한다. 만약 DVI - PC, HDMI - 노트북 인 상태에서 입력을 HDMI 로 변경하면 PC에서는 더 이상 입력을 변경할 수 없고 노트북에서만 DVI 로 변경할 수 있다.
> ControlMyMonitor.exe /SetValue \\.\DISPLAY2\Monitor0 60 4
/SetValue <Monitor String> <VCP Code> <Value> 같은 명령줄이 지원된다.
디스플레이 변경 바로 가기를 만들어서 작업표시줄에 연결시켜 사용하고 있다. 내 모니터의 경우 VCP Code 60 이 'Input Select' 에 대응되고 4 가 HDMI2 였다.
노트북에서 ControlMyMonitor 가 인식되지 않는 문제가 있었다. hdmi 2 포트 usb 케이블에 hdmi 가 연결되어 있었는데 사용하고 싶은 hdmi 케이블을 노트북에 직접 연결했더니 인식되었다.
> ControlMyMonitor.exe /SetValue Primary 60 4
<Monitor String> 이 환경에 따라 바뀌기도 한다. Primary, Secondary 같은 문자열을 지원하니 주모니터를 변경할 경우에는 Primary 를 사용하는 것이 오류 가능성을 줄일 수 있었다.