MX Display Switch keeps a Logitech MX keyboard, an MX mouse, and a DDC/CI monitor on the same computer when an Easy-Switch key is pressed. It runs locally on each Windows PC, talks directly to the Logi Bolt receiver over HID++, and needs neither Logitech Options+ nor a network connection.
Important
This is an independent community project. It is not affiliated with or endorsed by Logitech.
- follows MX Keys S Easy-Switch buttons 1, 2, and 3;
- sends the matching CHANGE_HOST command to the paired MX mouse;
- selects the destination monitor input through DDC/CI VCP
0x60; - avoids redundant DDC writes by calibrating the monitor's actual read-back;
- retries when Windows temporarily hides an inactive monitor input;
- per-user installation and autostart, with no administrator rights;
- no LAN traffic, cloud service, telemetry, or Logitech software.
- Windows 10 or Windows 11, x64;
- a Logi Bolt receiver (
046D:C548) on every computer; - Logitech MX Keys S and a CHANGE_HOST-capable MX mouse paired to the same Easy-Switch number on each receiver;
- a monitor with DDC/CI enabled and input selection on VCP
0x60.
Hardware-tested with MX Keys S, MX Anywhere 3S, and an ES3207TA monitor. Other Logitech HID++ devices may work but have not yet been verified.
- Download
MxDisplaySwitch-1.0.0-Setup.exefrom the latest release. - Install it on every computer connected to the monitor.
- On each computer, select that computer's Easy-Switch number and monitor input (DisplayPort or HDMI).
- Pair both keyboard and mouse with the same numbered Bolt channel.
The agent starts after Windows sign-in. Settings and logs are stored in
%LOCALAPPDATA%\MxDisplaySwitch; program files are installed under
%LOCALAPPDATA%\Programs\MxDisplaySwitch.
The release also contains a portable ZIP. Run Install.vbs from the unpacked
folder to install that build.
The agent listens for the MX Keys S HID++ CHANGE_HOST notification before
the keyboard leaves the current Bolt receiver. It sends the same host number
to the mouse. The destination computer detects both devices, then claims its
own monitor input through DDC/CI. No computer-to-computer communication is
used.
An optional monitor_input_map in config.json lets the outgoing computer
send the DDC command immediately as a latency optimization. A fresh install
only records the local input; the destination agent remains the source of
truth. Example for channel 1 on HDMI and channel 2 on DisplayPort:
"monitor_input_map": {
"1": "0x11",
"2": "0x0F"
}Copy the same complete map to each computer if immediate outgoing DDC is
desired. Standard values used here are DisplayPort 0x0F and HDMI 0x11.
- A waking destination switches the monitor after its user agent resumes.
- If the source computer is already asleep or off, it cannot send the mouse CHANGE_HOST command; use the mouse's own button once.
- The agent is per-user and does not run before the first Windows sign-in.
- RDP changes the Windows display topology and can make DDC diagnostics misleading; test the physical console when configuring a monitor.
These limits can only be removed by a service running before sign-in or by a separate always-on USB controller.
- Enable DDC/CI in the monitor's on-screen menu.
- Make sure keyboard and mouse use the same channel number on every receiver.
- Open MX Display Switch Settings from the Start menu and verify the local channel and input.
- Restart the agent with MX Display Switch Restart.
- Inspect
%LOCALAPPDATA%\MxDisplaySwitch\mxdisplay.log.
Some monitors return non-standard values when VCP 0x60 is read. The agent
calibrates that read-back locally and falls back to write-and-retry if reading
is unavailable.
Inno Setup 6 is required to build the installer.
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\build.ps1Artifacts are written to release. The project is GPL-3.0 because the runtime
bundle includes hidapitester. Exact corresponding source archives for
hidapitester v0.6 and hidapi 0.15.0 are included in the repository and
release package.
GPL-3.0. See LICENSE and THIRD_PARTY_NOTICES.md.