Skip to content

Repository files navigation

MX Display Switch

Русское описание

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.

Features

  • 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.

Requirements

  • 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.

Installation

  1. Download MxDisplaySwitch-1.0.0-Setup.exe from the latest release.
  2. Install it on every computer connected to the monitor.
  3. On each computer, select that computer's Easy-Switch number and monitor input (DisplayPort or HDMI).
  4. 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.

How it works

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.

Sleep, power-off, and the Windows lock screen

  • 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.

Troubleshooting

  • 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.

Building

Inno Setup 6 is required to build the installer.

powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\build.ps1

Artifacts 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.

License

GPL-3.0. See LICENSE and THIRD_PARTY_NOTICES.md.

About

Network-free Windows agent that switches Logitech MX keyboard, mouse, and a DDC/CI monitor together.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages