因为经常切换系统的同时切换屏幕 还要伸手按屏幕背键很麻烦 所以尝试找一些解决方案

由于是二进二出KVM方案 市面上KVM切换器要嘛很贵 要嘛多多少少存在问题:

  • 符合有type-c(或usb-a)、hdmi、dp口的基本300rmb往上 (当然还有协议)
  • 显示不支持hdmi、dp口混用,两台显示器需使用同一类型接口
  • 显示不支持无缝切换 即无黑屏
  • 屏幕布局失忆
  • 需额外电源和没有延长切换按钮

基于以上犯了选择强迫症 准备放弃的时候 在reddit上发现了display-switch

前置

验证显示器是否支持DDC/CI 可以下载twinkle-tray查看

Twinkle-tray

只要不是远古显示器一般都支持

USB切换器

购置二进四出USB切换器 本文使用绿联USB3.0二进四出切换器 海鲜市场不到100rmb 按自己需求购置即可

二进(显示器)四出(键鼠)难道不是四进二出嘛(恼

配置前需要获取USB切换器ID

MacOS:

左上角mac图标 -> 关于本机 -> 更多信息 -> 系统报告

mac-usbid

# system_profiler SPUSBDataType
USB:
 USB 3.1 Bus:  
                                                                   
      Host Controller Driver: AppleT6000USBXHCI                                          
        USB3.1 Hub:                                                                   
          ...
                                                           
          Extra Operating Current (mA): 0                                               
            USB3.1 Hub:                                                                  
              Product ID: 0x0626                                                         
              Vendor ID: 0x05e3  (Genesys Logic, Inc.)                                   
              ...

Windows:

设备管理器 -> 通用串行总线控制器

win-usbid

USB ID为 05e3:0626

准备配置文件

安装前需要准备配置文件

  • usb_device 为上述获取的USB ID
  • monitor_id 为从显示器名称或ID中提取的子字符串
  • on_usb_connecton_usb_disconnect 为连接和断开连接时切换的显示器端口
  • 端口可设置为:Hdmi1 、Hdmi2 、DisplayPort1 、DisplayPort2 、Dvi1 、Dvi2 、Vga1
  • USB-C端口可设置为:DisplayPort20x10

MacOS配置

# display-switch.ini
usb_device = "05e3:0626"

[monitor1]
monitor_id = "u2790"
on_usb_connect = "DisplayPort1"
on_usb_disconnect = "Hdmi1"


[monitor2]
monitor_id = "phl"
on_usb_connect = "hdmi1"
on_usb_disconnect = "DisplayPort1"
cp display-switch.ini ~/Library/Preferences/display-switch.ini

Windows配置:

# display-switch.ini
usb_device = "05e3:0626"

[monitor1]
monitor_id = "u2790"
on_usb_connect = "Hdmi1"
on_usb_disconnect = "DisplayPort1"


[monitor2]
monitor_id = "phl"
on_usb_connect = "DisplayPort1"
on_usb_disconnect = "Hdmi1"
# PowerShell
Copy-Item "display-switch.ini" "$env:APPDATA\display-switch\display-switch.ini" -Force

MacOS与Windows在on_usb_connecton_usb_disconnect配置相反即可 端口根据自己显示器后背插的线来自行决定

安装

MacOS安装:

brew install haimgel/tools/display_switch
brew services start haimgel/tools/display_switch

Windows安装:

# PowerShell
Invoke-WebRequest -Uri "https://github.com/haimgel/display-switch/releases/download/1.4.1/display_switch-v1.4.1-windows-amd64.zip" -OutFile "display_switch-v1.4.1-windows-amd64.zip"; 

Expand-Archive "display_switch-v1.4.1-windows-amd64.zip" -DestinationPath "." -Force; 

Copy-Item "display-switch.exe" "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup" -Force

Tips

理论上还有很多玩法

  • 激活键盘或鼠标设备USB连接
  • 设备套娃
  • 蓝牙监听