
USB 장치에 대한이 유틸리티 시계는 이벤트 연결/분리 이벤트 및 스위치가 DDC/CI를 통해 입력을 모니터링합니다. 이렇게하면 간단한 USB 스위치를 본격적인 KVM 솔루션으로 바꿉니다. USB 스위치에서 하나의 버튼을 누르면 모든 모니터가 다른 입력에 연결됩니다.
이 모니터에 연결될 수있는 모든 컴퓨터에 설치되어야합니다. 앱은 "일회성"모니터 만 스위치를 전환하고 다른 컴퓨터에서 실행중인 자체에 의존하여 필요에 따라 "다른 방법"을 전환하기 때문입니다.
앱은 MacOS, Windows 및 Linux에서 작동해야합니다.
display_switch Homebrew로 설치할 수 있습니다. brew install haimgel/tools/display_switch구성은 모든 플랫폼에서 매우 유사합니다.
MACOS에서 : 구성 파일은 Windows의 ~/Library/Preferences/display-switch.ini 에서 예상됩니다 : 구성 파일은 %APPDATA%display-switchdisplay-switch.ini 에서 예상됩니다. 구성 파일 $XDG_CONFIG_HOME/display-switch/display-switch.ini ~/.config/display-switch/display-switch.ini 에서 예상됩니다.
구성 파일 설정 :
usb_device = " 1050:0407 "
on_usb_connect = " Hdmi1 "
on_usb_disconnect = " Hdmi2 " usb_device 는 USB 장치 (vendor id / device id in hex)이며,이 장치가 연결될 때 on_usb_connect 는 전환 할 입력을 모니터링합니다. 지원되는 값은 Hdmi1 , Hdmi2 , DisplayPort1 , DisplayPort2 , Dvi1 , Dvi2 , Vga1 입니다. 모니터에 USB-C 포트가있는 경우 일반적으로 DisplayPort2 로보고됩니다. 입력은 또한 "원시"소수점 또는 16 진수 값으로 지정할 수 있습니다 : on_usb_connect = 0x10
옵션 on_usb_disconnect 설정을 통해 USB 장치가 분리 될 때 다른 방향으로 전환 할 수 있습니다. 선호하는 방법은이 앱을 두 컴퓨터에 설치하는 것입니다. "Away"를 전환하는 것은 문제가됩니다. 다른 컴퓨터가 모니터를 잠들게 한 경우 즉시 원래 입력으로 다시 전환됩니다.
display-switch 모니터마다 구성을 지원합니다. 하나 이상의 모니터 별 구성 섹션을 추가하여 모니터 별 입력을 설정합니다. 예를 들어:
on_usb_connect = " DisplayPort2 "
on_usb_disconnect = " Hdmi1 "
[monitor1]
monitor_id = " len "
on_usb_connect = " DisplayPort1 "
[monitor2]
monitor_id = " dell "
on_usb_connect = " hdmi2 " monitor_id 모니터 ID와 일치하는 케이스 감수성 서브 스트링을 지정합니다. 예를 들어, 'Len'은 LEN P27u-10 S/N 1144206897 모니터 ID와 일치합니다. 둘 이상의 섹션에 일치하는 경우 첫 번째 섹션이 사용됩니다. on_usb_connect 및 on_usb_disconnect 는 정의 된 경우 글로벌 기본값보다 우선합니다.
Windows에 대한 팁 : 모니터는 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumDISPLAY{MODEL_ID}{CONNECTION_ID} 의 레지스트리에 이름을 바꿀 수 있습니다. DeviceDesc 값을 편집하고 마지막 세미콜론 이후 이름을 변경하십시오. 이것은 모두 "일반 PNP 모니터"인 경우에 특히 유용합니다.
display-switch USB 장치의 연결 또는 연결 해제시 외부 명령 실행을 지원합니다. 이 구성은 글로벌 (구성된 USB 장치가 연결 또는 분리 될 때마다 실행) 또는 모니터 당 (주어진 모니터가 전환 될 때만 실행) 일 수 있습니다.
usb_device = " 1050:0407 "
on_usb_connect = " Hdmi1 "
on_usb_disconnect = " DisplayPort2 "
on_usb_connect_execute = " echo connected "
on_usb_disconnect_execute = " echo disconnected "
[monitor1]
monitor_id = " foobar "
on_usb_connect_execute = " echo usb connected, monitor 'foobar' being switched "
on_usb_disconnect_execute = " 'c:\program files\my app.exe' --parameter "참고 :
display-switch 시작한 동일한 사용자로 실행됩니다.Windows에서 USB 장치 ID의 ID를 찾으려면 :
HIDVID_046D&PID_C52B&MI_00 과 유사한 값을 볼 수 있어야합니다 (정확한 값은 다릅니다) - USB 장치 ID는 공급 업체 ID 와 제품 ID 의 조합입니다. 예를 들어,이 경우 046D:C52B 입니다. MacOS에서 USB 장치 ID의 ID를 찾으려면 터미널을 열고 다음을 실행하십시오.
brew install lsusb
$ lsusb > a
< switch the usb dock here >
$ lsusb > b
$ opendiff a b명령 출력에서 강조 표시된 선은 어떤 USB ID가 가장 관련이 있는지 보여줍니다.
USB 장치의 전체 목록 :
system_profiler SPUSBDataType
중요 : display-switch.ini의 형식은 vendorid : productId입니다. Vendorid는 system_profiler 출력에서 2 위를 차지했습니다
추가 패키지가 필요하고 : sudo apt install libxi-dev xorg-dev 통해 설치하십시오.
Linux에서 USB 장치의 ID를 찾으려면 먼저 lsusb 설치하십시오. Linux 배포판에 패키지가 있어야합니다. (Debian, Ubuntu 및 Redhat에서는 패키지 이름이 usbutils 입니다.) 그런 다음 터미널에서 다음을 실행하십시오.
$ lsusb > a
<switch the usb dock here>
$ lsusb > b
$ diff -u a b
Diff 출력은 어떤 USB ID가 가장 관련이 있는지 보여줍니다.
/Users/USERNAME/Library/Logs/display-switch/display-switch.log 에 기록됩니다%LOCALAPPDATA%display-switchdisplay-switch.log 로 기록됩니다$XDG_DATA_HOME/display-switch/display-switch.log 또는 ~/.local/share/display-switch/display-switch.log 로 기록됩니다. 녹을 설치 한 다음 cargo build --release 수행하십시오
Xcode를 설치하고 Rust를 설치 한 다음 cargo build --release 설치하십시오
녹을 설치 한 다음 cargo build --release 수행하십시오
targetrelease 에서 display_switch.exe (이전 단계에서 내장 된 위치)에서 %APPDATA%MicrosoftWindowsStart MenuProgramsStartup 복사하십시오.
# Get your INI file in order! (see above)
cp target/release/display_switch /usr/local/bin/
cp dev.haim.display-switch.daemon.plist ~ /Library/LaunchAgents/
launchctl load ~ /Library/LaunchAgents/dev.haim.display-switch.daemon.plist구축 된 실행 파일을 복사 :
cp target/release/display_switch /usr/local/bin/ i2c 그룹의 사용자를 위해 I2C 장치에 대한 읽기/쓰기 액세스를 활성화하십시오. 루트로 실행 :
groupadd i2c
echo ' KERNEL=="i2c-[0-9]*", GROUP="i2c" ' >> /etc/udev/rules.d/10-local_i2c_group.rules
udevadm control --reload-rules && udevadm trigger그런 다음 사용자를 I2C 그룹에 추가하십시오.
sudo usermod -aG i2c $(whoami)
내용으로 사용자 디렉토리 ( /home/$USER/.config/systemd/user/display-switch.service )에서 Systemd 단위 파일을 만듭니다.
[Unit]
Description=Display switch via USB switch
[Service]
ExecStart=/usr/local/bin/display_switch
Type=simple
StandardOutput=journal
Restart=always
[Install]
WantedBy=default.target
/home/$USER/.config/display-switch/display-switch.ini 에서 구성 파일을 만듭니다. 그런 다음 서비스를 활성화하십시오
systemctl --user daemon-reload
systemctl --user enable display-switch.service
systemctl --user start display-switch.service