# winddcutil
An partial implementation of https://github.com/rockowitz/ddcutil for Windows. Winddcutil can communicate with attached monitors using Display Data Channel/Command Interface (DDC/CI) to query and change monitor state, f.e. to control which input source is displayed.

## Features
- List attached displays
- Query display capabilitites string
- Set VCP feature values

## Usage
~~~:
winddcutil <command>
~~~
Where command is one of:
~~~:
detect
capabilities <display ID>
setvcp <display ID> <feature-code> <new-value>
~~~

## Example
List available displays:
~~~:
C:\>winddcutil detect
Display 0
         Name: Dell P2416D(HDMI)
Display 1
         Name: Generic PnP Monitor
~~~
Show capabilities of display 0:
<pre>
C:\>winddcutil capabilities 0
(prot(monitor)type(LCD)model(P2416D)cmds(01 02 03 07 0C E3 F3)
vcp(02 04 05 08 10 12 14(05 08 0B 0C) 16 18 1A 52 <b>60(01 11 0F)</b>
AA(01 02) AC AE B2 B6 C6 C8 C9 D6(01 04 05) DC(00 02 03 05) DF
E0 E1 E2(00 01 02 04 0E 12 14 19) F0(00 08) F1(01 02) F2 FD)
mswhql(1)asset_eep(40)mccs_ver(2.1))
</pre>
Set VCP feature 96 (0x60) to value 15 (0x0F):
~~~:
C:\>winddcutil setvcp 0 96 15
~~~
Feature 0x60 is the selected input source. Setting it to 0x0F selects the first display port, at least for this monitor. Available input sources are shown above in bold.

## TODO
(in no particular order)
- Parse capabilities string, to create output similar to the original ddcutil.
- Accept numeric parameters in hexadecimal.
- Implement more features, such as querying current VCP feature values.