
นาฬิกายูทิลิตี้นี้สำหรับอุปกรณ์ USB เชื่อมต่อ/ตัดการเชื่อมต่อและสลับการตรวจสอบอินพุตผ่าน DDC/CI สิ่งนี้จะเปลี่ยนสวิตช์ USB แบบง่าย ๆ เป็นโซลูชัน KVM แบบเต็มรูปแบบ: กดปุ่มหนึ่งปุ่มบนสวิตช์ USB ของคุณและจอภาพทั้งหมดของคุณเชื่อมต่อกับอินพุตที่แตกต่างกัน
มันควรจะติดตั้งในคอมพิวเตอร์ทุกเครื่องที่สามารถเชื่อมต่อกับจอภาพเหล่านี้ได้เนื่องจากแอพจะสลับการตรวจสอบ "ทางเดียว" เท่านั้นและอาศัยตัวเองทำงานบนคอมพิวเตอร์เครื่องอื่นเพื่อสลับ "วิธีอื่น" ตามต้องการ
แอพควรทำงานบน MacOS, Windows และ Linux
display_switch สามารถติดตั้งด้วย homebrew: brew install haimgel/tools/display_switchการกำหนดค่าค่อนข้างคล้ายกันในทุกแพลตฟอร์ม:
บน MacOS: ไฟล์การกำหนดค่าคาดว่าใน ~/Library/Preferences/display-switch.ini บน Windows: ไฟล์การกำหนดค่าคาดว่าใน %APPDATA%display-switchdisplay-switch.ini $XDG_CONFIG_HOME/display-switch/display-switch.ini linux: ไฟล์ ~/.config/display-switch/display-switch.ini คาดว่า
การตั้งค่าไฟล์การกำหนดค่า:
usb_device = " 1050:0407 "
on_usb_connect = " Hdmi1 "
on_usb_disconnect = " Hdmi2 " usb_device เป็นอุปกรณ์ USB ที่จะดู (ID ผู้ขาย ID / ID อุปกรณ์ใน HEX) และ on_usb_connect คือการตรวจสอบอินพุตที่จะเปลี่ยนไปเมื่ออุปกรณ์นี้เชื่อมต่อ ค่าที่รองรับคือ Hdmi1 , Hdmi2 , DisplayPort1 , DisplayPort2 , Dvi1 , Dvi2 , Vga1 หากจอภาพของคุณมีพอร์ต USB-C มักจะรายงานว่า DisplayPort2 อินพุตยังสามารถระบุได้ว่าเป็นทศนิยม "ดิบ" หรือค่าเลขฐานสิบหก: on_usb_connect = 0x10
การตั้งค่า on_usb_disconnect เป็นตัวเลือกอนุญาตให้สลับไปในทิศทางอื่นเมื่ออุปกรณ์ USB ถูกตัดการเชื่อมต่อ โปรดทราบว่าวิธีที่ต้องการคือการติดตั้งแอพนี้บนคอมพิวเตอร์ทั้งสองเครื่อง การสลับ "ออกไป" เป็นปัญหา: หากคอมพิวเตอร์เครื่องอื่นทำให้จอภาพนอนหลับพวกเขาจะสลับกลับไปเป็นอินพุตดั้งเดิมทันที
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 ระบุสตริงย่อยที่ไม่ได้รับความรู้สึกเพื่อจับคู่กับรหัสมอนิเตอร์ ตัวอย่างเช่น 'len' จะจับคู่ LEN P27u-10 S/N 1144206897 รหัสมอนิเตอร์ หากมีมากกว่าหนึ่งส่วนมีการจับคู่จะใช้ส่วนแรก 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ในการค้นหา ID ของ ID อุปกรณ์ USB ของคุณบน Windows:
HIDVID_046D&PID_C52B&MI_00 (ค่าที่แน่นอนจะแตกต่างกัน) - รหัสอุปกรณ์ USB คือการรวมกันของ ID ผู้ขาย และ รหัสผลิตภัณฑ์ - ตัวอย่างเช่นในกรณีนี้มันจะเป็น 046D:C52B ในการค้นหา ID ของ ID อุปกรณ์ USB ของคุณบน MacOS ให้เปิดเทอร์มินัลและเรียกใช้สิ่งต่อไปนี้:
brew install lsusb
$ lsusb > a
< switch the usb dock here >
$ lsusb > b
$ opendiff a bในเอาต์พุตคำสั่งบรรทัดที่ไฮไลต์แสดงให้คุณเห็นว่า ID USB ใดมีความเกี่ยวข้องมากที่สุด
สำหรับรายการอุปกรณ์ USB ทั้งหมด:
system_profiler SPUSBDataType
สำคัญ : รูปแบบสำหรับ display-switch.ini ของคุณคือผู้ขาย: ProductId Vendorid จะถูกแยกออก เป็นครั้งที่สอง ในเอาต์พุต system_profiler
ต้องใช้แพ็คเกจเพิ่มเติมติดตั้งผ่าน: sudo apt install libxi-dev xorg-dev
ในการค้นหา ID ของอุปกรณ์ USB ของคุณบน Linux ให้ติดตั้ง lsusb ก่อนซึ่ง Linux distro ของคุณควรมีแพ็คเกจสำหรับ (บน Debian, Ubuntu และ Redhat ชื่อแพ็คเกจคือ usbutils ) จากนั้นในเทอร์มินัลรันต่อไปนี้:
$ lsusb > a
<switch the usb dock here>
$ lsusb > b
$ diff -u a b
เอาต์พุต DIFF จะแสดงว่า ID USB ที่เกี่ยวข้องมากที่สุด
/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 ติดตั้ง Rust จากนั้นทำ cargo build --release
ติดตั้ง xcode, ติดตั้ง Rust จากนั้นทำ cargo build --release
ติดตั้ง Rust จากนั้นทำ cargo build --release
คัดลอก display_switch.exe จาก targetrelease (โดยที่มันถูกสร้างขึ้นในขั้นตอนก่อนหน้า) ถึง %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)
สร้างไฟล์หน่วย Systemd ในไดเรกทอรีผู้ใช้ของคุณ ( /home/$USER/.config/systemd/user/display-switch.service ) ด้วยเนื้อหา
[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