'Change Monitor Input Source
I want to change my monitor input source with AutoHotkey, and I have this partially working. However when I use the hotkey to change the Monitor Input Source to my xbox(YPbYr) from pc(DVI), the monitor doesn't detect that the xbox is on, it says no source.
Monitor => Asus vg236
VCP Monitor Input Source codes for my monitor:
- DVI => 3
- HDMI => 4
- YPbPr => 12
I'm using the Windows API Monitor Configuration Functions specifically the SetVCPFeature function which uses DDC/CI.
After some research I've decided I want to set the VCP Input Source this has some useful information specifically on page 71 about the Input Source.
AutoHotkey Code:
setMonitorSource(source)
{  
  ; Initialize Monitor handle
  hMon := DllCall("MonitorFromPoint"
    , "int64", 0 ; point on monitor
    , "uint", 1) ; flag to return primary monitor on failure
  ; Get Physical Monitor from handle
  VarSetCapacity(Physical_Monitor, (A_PtrSize ? A_PtrSize : 4) + 128, 0)
  DllCall("dxva2\GetPhysicalMonitorsFromHMONITOR"
   , "int", hMon   ; monitor handle
   , "uint", 1   ; monitor array size
   , "int", &Physical_Monitor)   ; point to array with monitor
  hPhysMon := NumGet(Physical_Monitor)
  DllCall("dxva2\SetVCPFeature"
    , "int", hPhysMon
    , "char", 0x60 ;VCP code for Input Source Select
    , "uint", source)
  ; Destroy handle
  DllCall("dxva2\DestroyPhysicalMonitor", "int", hPhysMon)
}
!z::
setMonitorSource(12)
return
I'm wondering if I need to set another VCP code value somewhere to notify the monitor the source has changed.
Note: I have no HDMI devices so I can't tell if this only affects YPbYr or all inputs.
Question: how do I make my monitor recognize YBpYr is on, as right now the monitor acts as if YBpYr is not on?
Question: Do I need to set another VCP code value other than the 0x60 Input Source?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|
