Skip to content
← All builds
MB-405InfrastructureIn daily use · second laptop untested2026

One-Button Desk

Three monitors, two computers, one key. A Stream Deck key moves all three displays, the keyboard and the mouse between my desktop and a laptop over DDC/CI, and checks that each monitor actually switched. The first plan was tested, failed, and was dropped before any hardware was bought for it.

Fig. 1 · Block diagram

The desk has a 39-inch ultrawide in the middle and two 27-inch 4K monitors in portrait, shared by a desktop and a laptop on a Thunderbolt dock. Switching meant three trips through three on-screen menus. Monitors can change input over DDC/CI, the control channel inside the video cable, so the question was who sends the command, and whether a monitor listens on an input it isn’t showing.

Plan A, tested and dropped

The first plan put a Raspberry Pi on each monitor’s spare HDMI port to send every switch. It only works if a monitor accepts DDC commands on an inactive input, so I tested that first. On the monitors I had then, writes to the inactive input did nothing: no input change, no brightness change. A Mac over HDMI and Windows over DisplayPort gave the same answer, so it wasn’t one host’s quirk. A visible register (blue gain at zero) made the test unambiguous, because the switch commands themselves report success either way. The Pi was dropped before it was bought.

What works

The replacement monitors do answer DDC on an inactive input, so the desktop can send every switch, both ways:

  • The Stream Deck plugs into the desktop directly, not into the monitor’s KVM hub, so it works whichever computer is on screen. The laptop needs no software and no admin rights.
  • Monitors are addressed by EDID ID, not by Windows display number, which changes whenever a monitor drops off the bus.
  • The center monitor switches last, because its built-in KVM carries the keyboard and mouse.
  • Every switch is read back. A side monitor whose input has lost signal can fall asleep and miss the command, so the script reads each input back and re-sends to any that missed, up to three times, five seconds apart.

Notes for the next desk

  • Input codes are the standard MCCS values (15 DisplayPort, 17 and 18 HDMI, 27 USB-C), but reads come back with a doubled high byte. Only the low byte means anything.
  • A screen flash after a DDC write means nothing. On the old monitors every write flashed, including invalid ones.
  • A MacBook with its lid closed sleeps and doesn’t wake when the desk switches to it, because the same monitor carries its display and its keyboard. Keep the lid open.