653 lines
20 KiB
Markdown
653 lines
20 KiB
Markdown
|
|
# Monitor Control - User Guide
|
||
|
|
|
||
|
|
A Windows application for controlling DDC/CI-enabled monitors. Adjust brightness, contrast, input sources, and power settings through a simple system tray interface or WPF management window.
|
||
|
|
|
||
|
|
## Table of Contents
|
||
|
|
|
||
|
|
- [Features](#features)
|
||
|
|
- [System Requirements](#system-requirements)
|
||
|
|
- [Installation](#installation)
|
||
|
|
- [Getting Started](#getting-started)
|
||
|
|
- [Common Workflows](#common-workflows)
|
||
|
|
- [Adjusting Monitor Settings](#adjusting-monitor-settings)
|
||
|
|
- [Switching Input Sources](#switching-input-sources)
|
||
|
|
- [Managing Power States](#managing-power-states)
|
||
|
|
- [Quick-Switch Toolbar](#quick-switch-toolbar)
|
||
|
|
- [Configuration](#configuration)
|
||
|
|
- [Customizing Port Labels](#customizing-port-labels)
|
||
|
|
- [Hiding Unused Ports](#hiding-unused-ports)
|
||
|
|
- [Detecting Additional Ports](#detecting-additional-ports)
|
||
|
|
- [Troubleshooting](#troubleshooting)
|
||
|
|
- [Best Practices](#best-practices)
|
||
|
|
- [Multi-Language Support](#multi-language-support)
|
||
|
|
- [Technical Notes](#technical-notes)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Features
|
||
|
|
|
||
|
|
- **Brightness & Contrast Control**: Adjust monitor brightness and contrast via sliders (VCP codes 10 and 12)
|
||
|
|
- **Input Source Switching**: Switch between HDMI, DisplayPort, DVI, VGA, and other inputs (VCP code 60)
|
||
|
|
- **Power Management**: Turn monitors on/off or put them to sleep (VCP code D6)
|
||
|
|
- **Quick-Switch Toolbar**: Create custom buttons for frequently-used input sources
|
||
|
|
- **Port Configuration**: Rename ports, hide unused inputs, and detect undiscovered ports
|
||
|
|
- **System Tray Integration**: Lightweight tray icon with popup control panel
|
||
|
|
- **Multi-Monitor Support**: Manage all DDC/CI-enabled monitors from one interface
|
||
|
|
- **9-Language Localization**: English, Spanish, French, German, Chinese, Japanese, Portuguese, Italian, Hindi
|
||
|
|
- **Automatic Updates**: Checks for new releases from git.marketally.com
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## System Requirements
|
||
|
|
|
||
|
|
- **Operating System**: Windows Vista or later (tested on Windows 11)
|
||
|
|
- **.NET Runtime**: .NET 9.0 (included in installer)
|
||
|
|
- **Hardware**: DDC/CI-enabled monitor(s) connected via digital cable (HDMI, DisplayPort, DVI)
|
||
|
|
- **Cable Type**: VGA cables often do not support DDC/CI; use digital cables for best results
|
||
|
|
- **Graphics Driver**: Up-to-date driver recommended for reliable DDC/CI communication
|
||
|
|
|
||
|
|
**Note**: Some monitors do not support all VCP features. Power control and input switching support varies by manufacturer.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Installation
|
||
|
|
|
||
|
|
### Option 1: Installer (Recommended)
|
||
|
|
|
||
|
|
1. Download the latest `.exe` installer from [git.marketally.com](https://git.marketally.com/misc/ControlMyMonitorManagement/releases)
|
||
|
|
2. Run the installer and follow the prompts
|
||
|
|
3. The application will launch automatically and add a tray icon
|
||
|
|
4. Monitor Control will start with Windows by default
|
||
|
|
|
||
|
|
### Option 2: Build from Source
|
||
|
|
|
||
|
|
1. Clone the repository:
|
||
|
|
```bash
|
||
|
|
git clone https://git.marketally.com/misc/ControlMyMonitorManagement.git
|
||
|
|
cd ControlMyMonitorManagement
|
||
|
|
```
|
||
|
|
|
||
|
|
2. Open `ControlMyMonitorManagement.sln` in Visual Studio 2022 or later
|
||
|
|
|
||
|
|
3. Restore NuGet packages:
|
||
|
|
```bash
|
||
|
|
dotnet restore
|
||
|
|
```
|
||
|
|
|
||
|
|
4. Build the `MonitorControl` project:
|
||
|
|
```bash
|
||
|
|
dotnet build MonitorControl/MonitorControl.csproj -c Release
|
||
|
|
```
|
||
|
|
|
||
|
|
5. Run the executable:
|
||
|
|
```bash
|
||
|
|
MonitorControl/bin/Release/net9.0-windows/MonitorControl.exe
|
||
|
|
```
|
||
|
|
|
||
|
|
**Required Files**: The application depends on `ControlMyMonitor.exe` (by NirSoft) which must be in the same directory as the main executable. This file is included in the repository under `Library/Resource/`.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Getting Started
|
||
|
|
|
||
|
|
### First Launch
|
||
|
|
|
||
|
|
1. After installation, look for the monitor icon in your system tray (near the clock)
|
||
|
|
2. Click the tray icon to open the control panel
|
||
|
|
3. The application will scan for DDC/CI monitors (takes 2-5 seconds)
|
||
|
|
4. Your monitors will appear with available controls
|
||
|
|
|
||
|
|
### Understanding the Interface
|
||
|
|
|
||
|
|
The control panel displays one section per detected monitor:
|
||
|
|
|
||
|
|
- **Monitor Name**: Shown at the top of each section (e.g., "22EA53")
|
||
|
|
- **Brightness Slider**: 0-100% range
|
||
|
|
- **Contrast Slider**: 0-100% range
|
||
|
|
- **Input Dropdown**: Lists available input sources (HDMI, DisplayPort, etc.)
|
||
|
|
- **Power Button**: Shows current state (PowerOn, Sleep, PowerOff)
|
||
|
|
- **Config Button**: Opens port configuration window
|
||
|
|
|
||
|
|
### If No Monitors Appear
|
||
|
|
|
||
|
|
If you see "No DDC/CI monitors detected":
|
||
|
|
|
||
|
|
1. Verify your monitor supports DDC/CI (check monitor OSD settings for "DDC/CI Enable")
|
||
|
|
2. Use a digital cable (HDMI, DisplayPort, DVI) — VGA often lacks DDC/CI support
|
||
|
|
3. Update your graphics card driver
|
||
|
|
4. Try unplugging and reconnecting the monitor
|
||
|
|
5. If using a KVM switch, try connecting directly to the computer
|
||
|
|
6. Click "Show Log" (appears after 3 seconds) to view debug information
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Common Workflows
|
||
|
|
|
||
|
|
### Adjusting Monitor Settings
|
||
|
|
|
||
|
|
**Brightness:**
|
||
|
|
|
||
|
|
1. Click the tray icon to open the control panel
|
||
|
|
2. Find the "Brightness" slider for your monitor
|
||
|
|
3. Drag the slider to adjust (0-100%)
|
||
|
|
4. Release the mouse button to apply the change
|
||
|
|
5. The monitor will update within 1-2 seconds
|
||
|
|
|
||
|
|
**Contrast:**
|
||
|
|
|
||
|
|
1. Follow the same steps as brightness
|
||
|
|
2. Use the "Contrast" slider instead
|
||
|
|
|
||
|
|
**Tips:**
|
||
|
|
- Adjustments are applied when you release the mouse button, not while dragging
|
||
|
|
- If the monitor doesn't respond, wait 3-5 seconds and try again
|
||
|
|
- After waking from sleep, wait 8 seconds before adjusting settings (monitors need time to initialize)
|
||
|
|
|
||
|
|
### Switching Input Sources
|
||
|
|
|
||
|
|
**Manual Switching:**
|
||
|
|
|
||
|
|
1. Open the control panel
|
||
|
|
2. Find the "Input" dropdown for your monitor
|
||
|
|
3. Click the dropdown to see available sources:
|
||
|
|
- DisplayPort-1, DisplayPort-2
|
||
|
|
- HDMI-1, HDMI-2
|
||
|
|
- DVI-1, DVI-2
|
||
|
|
- VGA-1, VGA-2
|
||
|
|
- And others depending on your monitor
|
||
|
|
4. Select the desired input
|
||
|
|
5. The monitor will switch within 2-3 seconds
|
||
|
|
|
||
|
|
**Example: Switch from HDMI to DisplayPort**
|
||
|
|
|
||
|
|
1. Current input shows "HDMI-1"
|
||
|
|
2. Click the dropdown
|
||
|
|
3. Select "DisplayPort-1"
|
||
|
|
4. Monitor switches to DisplayPort input
|
||
|
|
|
||
|
|
**If an Input Doesn't Appear:**
|
||
|
|
|
||
|
|
Some monitors don't report all available inputs via DDC/CI. See [Detecting Additional Ports](#detecting-additional-ports) below.
|
||
|
|
|
||
|
|
### Managing Power States
|
||
|
|
|
||
|
|
**Turn Off Monitor:**
|
||
|
|
|
||
|
|
1. Click the Power button (shows "PowerOn")
|
||
|
|
2. Monitor enters sleep/standby mode
|
||
|
|
3. Button updates to "Sleep" or "PowerOff"
|
||
|
|
|
||
|
|
**Turn On Monitor:**
|
||
|
|
|
||
|
|
1. Click the Power button (shows "Sleep" or "PowerOff")
|
||
|
|
2. Monitor wakes up
|
||
|
|
3. Button updates to "PowerOn"
|
||
|
|
|
||
|
|
**Notes:**
|
||
|
|
- Some monitors don't support power control via DDC/CI (button will show "Power Unsupported")
|
||
|
|
- Power state detection varies by monitor firmware
|
||
|
|
- Turning off via DDC/CI is not the same as pressing the physical power button
|
||
|
|
|
||
|
|
### Quick-Switch Toolbar
|
||
|
|
|
||
|
|
The quick-switch toolbar provides one-click buttons for frequently-used input sources.
|
||
|
|
|
||
|
|
**Setup:**
|
||
|
|
|
||
|
|
1. Click the **Config** button next to a monitor name
|
||
|
|
2. For each input port you want in the toolbar:
|
||
|
|
- Check "Show in quick-switch toolbar"
|
||
|
|
- Optionally set a custom label (e.g., "Gaming PC", "Laptop")
|
||
|
|
3. Click **Save**
|
||
|
|
4. The toolbar appears at the top of the control panel
|
||
|
|
|
||
|
|
**Usage:**
|
||
|
|
|
||
|
|
1. Open the control panel
|
||
|
|
2. Click any quick-switch button to instantly change input
|
||
|
|
3. The corresponding dropdown updates automatically
|
||
|
|
|
||
|
|
**Example Configuration:**
|
||
|
|
|
||
|
|
Monitor: Dell U2720Q
|
||
|
|
- Port: HDMI-1 → Label: "Work Laptop" → Quick-switch: ✓
|
||
|
|
- Port: DisplayPort-1 → Label: "Gaming PC" → Quick-switch: ✓
|
||
|
|
- Port: HDMI-2 → Hidden (unused)
|
||
|
|
|
||
|
|
Result: Two buttons appear: "Work Laptop" and "Gaming PC"
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Configuration
|
||
|
|
|
||
|
|
### Customizing Port Labels
|
||
|
|
|
||
|
|
By default, ports use generic names like "HDMI-1" or "DisplayPort-1". You can rename them:
|
||
|
|
|
||
|
|
1. Click **Config** next to the monitor name
|
||
|
|
2. Find the port you want to rename
|
||
|
|
3. Enter a custom label (e.g., "Xbox", "Work PC", "MacBook")
|
||
|
|
4. Click **Save**
|
||
|
|
5. The new label appears in the Input dropdown and quick-switch toolbar
|
||
|
|
|
||
|
|
**Example:**
|
||
|
|
|
||
|
|
| Port | Default Name | Custom Label |
|
||
|
|
|---------------|-----------------|--------------|
|
||
|
|
| VCP Value 17 | HDMI-1 | Gaming PC |
|
||
|
|
| VCP Value 15 | DisplayPort-1 | Work Laptop |
|
||
|
|
| VCP Value 18 | HDMI-2 | Streaming PC |
|
||
|
|
|
||
|
|
### Hiding Unused Ports
|
||
|
|
|
||
|
|
If your monitor reports inputs you don't use, you can hide them:
|
||
|
|
|
||
|
|
1. Click **Config**
|
||
|
|
2. Check the "Hide" checkbox next to unused ports
|
||
|
|
3. Click **Save**
|
||
|
|
4. Hidden ports won't appear in the Input dropdown
|
||
|
|
|
||
|
|
**Important**: The currently active input is never hidden, even if marked as hidden. This prevents confusion about which input is selected.
|
||
|
|
|
||
|
|
### Detecting Additional Ports
|
||
|
|
|
||
|
|
Some monitors don't report all available inputs via DDC/CI. The port detection feature probes for undiscovered inputs.
|
||
|
|
|
||
|
|
**How It Works:**
|
||
|
|
|
||
|
|
1. Click **Config**
|
||
|
|
2. Click **Detect**
|
||
|
|
3. Read the warning dialog carefully
|
||
|
|
4. Click **Yes** to proceed
|
||
|
|
5. The application will:
|
||
|
|
- Save your current input
|
||
|
|
- Try switching to common ports (DisplayPort-1, DisplayPort-2, HDMI-1, HDMI-2)
|
||
|
|
- Wait 3 seconds per port to check if the switch succeeded
|
||
|
|
- Restore your original input
|
||
|
|
6. Any newly discovered ports are added to the configuration
|
||
|
|
|
||
|
|
**Example Output:**
|
||
|
|
|
||
|
|
```
|
||
|
|
Detected 2 new port(s):
|
||
|
|
• DisplayPort-1
|
||
|
|
• HDMI-2
|
||
|
|
```
|
||
|
|
|
||
|
|
**Warnings:**
|
||
|
|
|
||
|
|
- Your screen may go black briefly during each probe
|
||
|
|
- The process takes 10-20 seconds for 4 ports
|
||
|
|
- Don't run detection repeatedly in a short time (can stress monitor scaler)
|
||
|
|
- Click **Cancel** anytime to stop detection
|
||
|
|
- Detection is safe for most monitors but use sparingly
|
||
|
|
|
||
|
|
**When to Use Detection:**
|
||
|
|
|
||
|
|
- Your monitor has a port that doesn't appear in the dropdown
|
||
|
|
- You know the monitor supports an input but it's not listed
|
||
|
|
- After connecting a new cable type
|
||
|
|
|
||
|
|
**When NOT to Use Detection:**
|
||
|
|
|
||
|
|
- All your ports already appear correctly
|
||
|
|
- You just want to rename existing ports (use custom labels instead)
|
||
|
|
- Your monitor is behaving strangely (wait for it to stabilize first)
|
||
|
|
|
||
|
|
### Resetting Configuration
|
||
|
|
|
||
|
|
To restore default settings:
|
||
|
|
|
||
|
|
1. Click **Config**
|
||
|
|
2. Click **Reset**
|
||
|
|
3. All custom labels are cleared
|
||
|
|
4. All ports are unhidden
|
||
|
|
5. Quick-switch toolbar is cleared
|
||
|
|
6. Discovered ports are removed
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
### Monitor Not Detected
|
||
|
|
|
||
|
|
**Symptoms**: "No DDC/CI monitors detected" message
|
||
|
|
|
||
|
|
**Solutions**:
|
||
|
|
|
||
|
|
1. **Enable DDC/CI in Monitor OSD**:
|
||
|
|
- Press the monitor's menu button
|
||
|
|
- Look for "DDC/CI" or "External Control" setting
|
||
|
|
- Set to "On" or "Enable"
|
||
|
|
|
||
|
|
2. **Check Cable Type**:
|
||
|
|
- VGA cables often lack DDC/CI support
|
||
|
|
- Use HDMI, DisplayPort, or DVI instead
|
||
|
|
- Try a different cable if available
|
||
|
|
|
||
|
|
3. **Update Graphics Driver**:
|
||
|
|
- Visit your GPU manufacturer's website (NVIDIA, AMD, Intel)
|
||
|
|
- Download the latest driver
|
||
|
|
- Restart after installation
|
||
|
|
|
||
|
|
4. **Direct Connection**:
|
||
|
|
- If using a KVM switch, try connecting directly to the PC
|
||
|
|
- Some KVM switches block DDC/CI signals
|
||
|
|
|
||
|
|
5. **Restart Monitor**:
|
||
|
|
- Unplug monitor power cable
|
||
|
|
- Wait 10 seconds
|
||
|
|
- Plug back in and power on
|
||
|
|
|
||
|
|
### Controls Not Responding
|
||
|
|
|
||
|
|
**Symptoms**: Sliders move but monitor doesn't change
|
||
|
|
|
||
|
|
**Solutions**:
|
||
|
|
|
||
|
|
1. **Wait After Sleep/Resume**:
|
||
|
|
- After waking PC from sleep, wait 8 seconds before adjusting
|
||
|
|
- Monitor scalers need time to initialize DDC/CI
|
||
|
|
|
||
|
|
2. **Check Error Codes**:
|
||
|
|
- Click "Show Log" button (appears after 3 seconds of loading)
|
||
|
|
- Look for error codes like `0xC0262582` or `0xC0262583`
|
||
|
|
- These indicate DDC/CI communication failure
|
||
|
|
|
||
|
|
3. **Reduce Command Frequency**:
|
||
|
|
- Don't drag sliders rapidly
|
||
|
|
- Wait 1-2 seconds between adjustments
|
||
|
|
- The application enforces 50ms minimum spacing between commands
|
||
|
|
|
||
|
|
4. **Monitor Timeout Cooldown**:
|
||
|
|
- If a command times out, the monitor is backed off for 3 seconds
|
||
|
|
- Wait and try again
|
||
|
|
- Persistent timeouts indicate hardware/firmware issue
|
||
|
|
|
||
|
|
5. **Firmware Update**:
|
||
|
|
- Check monitor manufacturer's website for firmware updates
|
||
|
|
- Some bugs are fixed in newer firmware
|
||
|
|
|
||
|
|
### Input Switching Fails
|
||
|
|
|
||
|
|
**Symptoms**: Input dropdown changes but monitor doesn't switch
|
||
|
|
|
||
|
|
**Possible Causes**:
|
||
|
|
|
||
|
|
1. **No Signal on Target Input**:
|
||
|
|
- The monitor may refuse to switch if no device is connected to that input
|
||
|
|
- Connect a device to the target input first
|
||
|
|
|
||
|
|
2. **Monitor Doesn't Support DDC/CI Input Switching**:
|
||
|
|
- Some monitors allow brightness/contrast control but not input switching
|
||
|
|
- Use the monitor's physical buttons instead
|
||
|
|
|
||
|
|
3. **Scaler Busy**:
|
||
|
|
- If you just switched inputs manually, wait 5 seconds before using DDC/CI
|
||
|
|
- Monitor scaler may be locked during manual input changes
|
||
|
|
|
||
|
|
### Power Control Doesn't Work
|
||
|
|
|
||
|
|
**Symptoms**: Power button shows "Power Unsupported" or doesn't respond
|
||
|
|
|
||
|
|
**Explanation**:
|
||
|
|
|
||
|
|
- Power control (VCP code D6) is optional in the DDC/CI spec
|
||
|
|
- Many monitors don't implement it or implement it incorrectly
|
||
|
|
- This is a monitor firmware limitation, not a software bug
|
||
|
|
|
||
|
|
**Workaround**:
|
||
|
|
|
||
|
|
- Use the monitor's physical power button
|
||
|
|
- Use Windows display settings to turn off displays
|
||
|
|
- Some monitors support power control only in specific modes (check OSD settings)
|
||
|
|
|
||
|
|
### Application Crashes or Hangs
|
||
|
|
|
||
|
|
**Symptoms**: Window freezes, doesn't respond, or closes unexpectedly
|
||
|
|
|
||
|
|
**Solutions**:
|
||
|
|
|
||
|
|
1. **Check Debug Log**:
|
||
|
|
- Click "Show Log" button
|
||
|
|
- Click "Open Log File" to view full log
|
||
|
|
- Look for exceptions or error messages
|
||
|
|
- Copy log when reporting issues
|
||
|
|
|
||
|
|
2. **Restart Application**:
|
||
|
|
- Right-click tray icon → Exit
|
||
|
|
- Launch again from Start Menu
|
||
|
|
|
||
|
|
3. **Reinstall**:
|
||
|
|
- Uninstall via Windows Settings → Apps
|
||
|
|
- Download latest version
|
||
|
|
- Reinstall
|
||
|
|
|
||
|
|
4. **Report Issue**:
|
||
|
|
- Copy debug log
|
||
|
|
- Note your monitor model and connection type
|
||
|
|
- Report at git.marketally.com/misc/ControlMyMonitorManagement/issues
|
||
|
|
|
||
|
|
### Error Code Reference
|
||
|
|
|
||
|
|
| Error Code | Meaning | Solution |
|
||
|
|
|--------------|----------------------------------|-------------------------------------------|
|
||
|
|
| 0xC0262582 | DDC/CI device not found | Enable DDC/CI in monitor OSD |
|
||
|
|
| 0xC0262583 | DDC/CI communication timeout | Update graphics driver, try different cable |
|
||
|
|
| Exit Code -1 | Command timeout (5 seconds) | Wait for cooldown, check monitor health |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Best Practices
|
||
|
|
|
||
|
|
### DDC/CI Command Spacing
|
||
|
|
|
||
|
|
- **Don't spam commands**: The application enforces 50ms minimum spacing, but monitors appreciate longer gaps
|
||
|
|
- **Wait after sleep**: Always wait 8 seconds after system resume before sending commands
|
||
|
|
- **One adjustment at a time**: Don't drag multiple sliders simultaneously
|
||
|
|
|
||
|
|
### Post-Sleep Behavior
|
||
|
|
|
||
|
|
When your PC wakes from sleep:
|
||
|
|
|
||
|
|
1. Monitor scalers need 5-8 seconds to fully initialize
|
||
|
|
2. The application activates an 8-second grace period automatically
|
||
|
|
3. Commands sent during this period are delayed until it expires
|
||
|
|
4. This prevents scaler lockout and command failures
|
||
|
|
|
||
|
|
### KVM Switch Users
|
||
|
|
|
||
|
|
If you use a KVM switch:
|
||
|
|
|
||
|
|
- DDC/CI may not work through the KVM (depends on model)
|
||
|
|
- Try connecting one monitor directly to test
|
||
|
|
- Some KVMs have "DDC/CI passthrough" settings — enable if available
|
||
|
|
|
||
|
|
### Multiple Monitors
|
||
|
|
|
||
|
|
- The application manages all monitors independently
|
||
|
|
- Each monitor has its own command queue and rate limiting
|
||
|
|
- Switching inputs on multiple monitors simultaneously is safe
|
||
|
|
- Configuration is saved per monitor (by serial number)
|
||
|
|
|
||
|
|
### Firmware Quirks
|
||
|
|
|
||
|
|
Different monitor brands have different DDC/CI implementations:
|
||
|
|
|
||
|
|
- **Dell**: Generally excellent DDC/CI support
|
||
|
|
- **LG**: Good support, some models have slow response times
|
||
|
|
- **Samsung**: Variable support, some models don't report current input correctly
|
||
|
|
- **ASUS**: Usually good, gaming monitors sometimes have limited VCP codes
|
||
|
|
- **BenQ**: Mixed support, check DDC/CI setting in OSD
|
||
|
|
|
||
|
|
If your monitor doesn't report its current input correctly, the application will still attempt to add it to the list when detected.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Multi-Language Support
|
||
|
|
|
||
|
|
The application automatically detects your Windows language and uses the best matching translation.
|
||
|
|
|
||
|
|
**Supported Languages:**
|
||
|
|
|
||
|
|
- English (en)
|
||
|
|
- Spanish (es)
|
||
|
|
- French (fr)
|
||
|
|
- German (de)
|
||
|
|
- Chinese (zh)
|
||
|
|
- Japanese (ja)
|
||
|
|
- Portuguese (pt)
|
||
|
|
- Italian (it)
|
||
|
|
- Hindi (hi)
|
||
|
|
|
||
|
|
**Changing Language:**
|
||
|
|
|
||
|
|
The application uses Windows system language. To change:
|
||
|
|
|
||
|
|
1. Open Windows Settings → Time & Language → Language
|
||
|
|
2. Add or set preferred language
|
||
|
|
3. Restart Monitor Control
|
||
|
|
|
||
|
|
**Fallback**: If your language isn't supported, the application defaults to English.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Technical Notes
|
||
|
|
|
||
|
|
### DDC/CI Protocol
|
||
|
|
|
||
|
|
Monitor Control uses the DDC/CI (Display Data Channel / Command Interface) protocol to communicate with monitors over the video cable. This is a standardized protocol (VESA DDC/CI 1.1) supported by most modern monitors.
|
||
|
|
|
||
|
|
**VCP Codes Used:**
|
||
|
|
|
||
|
|
| VCP Code | Feature | Read/Write |
|
||
|
|
|----------|-------------------|------------|
|
||
|
|
| 10 | Brightness | Read/Write |
|
||
|
|
| 12 | Contrast | Read/Write |
|
||
|
|
| 60 | Input Source | Read/Write |
|
||
|
|
| D6 | Power Mode | Read/Write |
|
||
|
|
|
||
|
|
### ControlMyMonitor.exe
|
||
|
|
|
||
|
|
This application wraps [ControlMyMonitor](https://www.nirsoft.net/utils/control_my_monitor.html) by NirSoft (freeware). The `ControlMyMonitor.exe` binary is included in the `Library/Resource/` folder and must be present for the application to function.
|
||
|
|
|
||
|
|
**License**: ControlMyMonitor is freeware by Nir Sofer. See `Library/Resource/readme.txt` for details.
|
||
|
|
|
||
|
|
### Configuration Storage
|
||
|
|
|
||
|
|
Monitor configurations are stored in JSON format at:
|
||
|
|
|
||
|
|
```
|
||
|
|
%APPDATA%\MonitorControl\config.json
|
||
|
|
```
|
||
|
|
|
||
|
|
**Structure:**
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"Monitors": [
|
||
|
|
{
|
||
|
|
"SerialNumber": "ABC123",
|
||
|
|
"MonitorName": "Dell U2720Q",
|
||
|
|
"Ports": [
|
||
|
|
{
|
||
|
|
"VcpValue": 17,
|
||
|
|
"DefaultName": "HDMI-1",
|
||
|
|
"CustomLabel": "Gaming PC",
|
||
|
|
"IsHidden": false,
|
||
|
|
"ShowInQuickSwitch": true
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
You can manually edit this file if needed (close the application first).
|
||
|
|
|
||
|
|
### Debug Logging
|
||
|
|
|
||
|
|
Debug logs are written to:
|
||
|
|
|
||
|
|
```
|
||
|
|
%TEMP%\CMM\debug.log
|
||
|
|
```
|
||
|
|
|
||
|
|
To view logs:
|
||
|
|
|
||
|
|
1. Click "Show Log" button in the control panel (appears after 3 seconds of loading)
|
||
|
|
2. Click "Open Log File" to view in Explorer
|
||
|
|
3. Click "Copy to Clipboard" to paste into bug reports
|
||
|
|
|
||
|
|
Logs include:
|
||
|
|
|
||
|
|
- Monitor scan results
|
||
|
|
- VCP command requests and responses
|
||
|
|
- Error codes and timeout events
|
||
|
|
- System resume events
|
||
|
|
|
||
|
|
### Update Mechanism
|
||
|
|
|
||
|
|
The application checks for updates from:
|
||
|
|
|
||
|
|
```
|
||
|
|
https://git.marketally.com/api/v1/repos/misc/ControlMyMonitorManagement/releases/latest
|
||
|
|
```
|
||
|
|
|
||
|
|
Update checks occur:
|
||
|
|
|
||
|
|
- On first launch
|
||
|
|
- Once per hour while the application is running
|
||
|
|
- When you click the tray icon (if more than 1 hour since last check)
|
||
|
|
|
||
|
|
If an update is available:
|
||
|
|
|
||
|
|
- A banner appears at the top of the control panel
|
||
|
|
- A balloon notification appears in the system tray
|
||
|
|
- Clicking either opens the download page in your browser
|
||
|
|
|
||
|
|
Updates are not automatic — you must download and run the installer manually.
|
||
|
|
|
||
|
|
### Rate Limiting and Throttling
|
||
|
|
|
||
|
|
To protect monitor scalers from command overload:
|
||
|
|
|
||
|
|
1. **Per-Monitor Command Spacing**: Minimum 50ms between commands to the same monitor
|
||
|
|
2. **Post-Resume Grace Period**: 8-second delay after system wake
|
||
|
|
3. **Timeout Cooldown**: 3-second backoff after a command timeout
|
||
|
|
4. **Global DDC Lock**: Prevents parallel commands from overwhelming the DDC/CI bus
|
||
|
|
|
||
|
|
These limits are enforced automatically and cannot be disabled.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Tips
|
||
|
|
|
||
|
|
- **Keyboard Shortcuts**: None currently implemented (tray-only interface)
|
||
|
|
- **Startup Behavior**: Application starts minimized to tray by default
|
||
|
|
- **Window Position**: Control panel appears near the system tray (bottom-right)
|
||
|
|
- **Auto-Hide**: Control panel closes when it loses focus (click elsewhere)
|
||
|
|
- **Config Persistence**: All settings survive application restart
|
||
|
|
- **Monitor Hotplug**: Disconnect/reconnect monitors are detected on next tray icon click
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Credits
|
||
|
|
|
||
|
|
- **Original Project**: ControlMyMonitorManagement by DangWang
|
||
|
|
- **Enhancements**: Brightness/contrast controls, input switching, multi-language support, quick-switch toolbar by David H. Friedel Jr (MarketAlly)
|
||
|
|
- **DDC/CI Tool**: ControlMyMonitor by Nir Sofer (NirSoft)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## License
|
||
|
|
|
||
|
|
- **New Contributions**: MIT License (see LICENSE file)
|
||
|
|
- **Original Code**: No explicit license provided by DangWang
|
||
|
|
- **ControlMyMonitor.exe**: Freeware by NirSoft (no commercial use, no modification)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**For issues, feature requests, or contributions**, visit:
|
||
|
|
|
||
|
|
[https://git.marketally.com/misc/ControlMyMonitorManagement](https://git.marketally.com/misc/ControlMyMonitorManagement)
|