DeskHop – Tính năng chuyển desktop nhanh
(github.com/hrvach)- DeskHop là một dự án phần cứng mã nguồn mở cho phép hai máy tính dùng chung một bàn phím/chuột, chuyển nhanh thiết bị nhận nhập liệu bằng phím tắt và di chuyển con trỏ chuột thay cho công tắc USB dạng nút bấm
- Thiết bị đóng vai trò USB Host/Device giữa bàn phím/chuột và hai máy tính, duy trì đồng thời kết nối với cả hai phía rồi chuyển chuyển động chuột và phím bấm tới đầu ra đang được chọn
- Việc chuyển chuột được thực hiện bằng cách đổi HID report descriptor sang tọa độ tuyệt đối và nội bộ tích lũy lượng dịch chuyển tương đối, để khi vượt qua mép màn hình thì con trỏ xuất hiện trên màn hình của máy còn lại ở cùng độ cao
- Các điểm nổi bật gồm gần như không cảm nhận được độ trễ, không cần cài phần mềm, hỗ trợ Linux/macOS/Windows, linh kiện dưới 15€, vỏ in 3D và cách ly galvanic giữa các đầu ra
- Các giới hạn cũng khá rõ: sau Windows 10 KB5003637 có vấn đề với tọa độ tuyệt đối trên nhiều màn hình, đa màn hình trên macOS cần biện pháp vòng tránh thử nghiệm, và không đảm bảo tương thích với bàn phím cao cấp, chuột nhiều nút hay nhiều loại thiết bị khác nhau
Công tắc phần cứng để chuyển nhanh giữa hai máy tính
- DeskHop bắt đầu từ nhu cầu sử dụng hằng ngày hai máy tính nhưng muốn dùng chung một bàn phím/chuột
- Dự án nhằm giải quyết nhược điểm của các hộp chuyển USB hiện có là mất thời gian khi chuyển và bất tiện vì phải tìm nút bấm
- Hành vi mong muốn có hai dạng
- Chuyển đầu ra bằng phím tắt bàn phím
- Tự động chuyển khi kéo con trỏ chuột qua giữa các màn hình
- Được thiết kế để hoạt động ngay cả giữa các máy tính dùng hệ điều hành khác nhau
- Có cung cấp User Manual
Tính năng chính
- Hoàn toàn miễn phí và mã nguồn mở, đồng thời có chứng nhận Open Source Hardware
- Không có độ trễ có thể cảm nhận được khi chuyển
- Có thể kéo con trỏ chuột qua lại giữa các máy tính
- Không cần cài thêm phần mềm trên máy tính
- Chi phí linh kiện được nêu là dưới 15€
- Dùng vỏ snap-fit có thể in 3D
- Cung cấp cách ly galvanic hoàn toàn giữa các đầu ra
- Hoạt động trên Linux, macOS, Windows
Cách hoạt động
- Thiết bị hoạt động như một thiết bị trung gian giữa bàn phím/chuột và máy tính
- Thiết lập và duy trì đồng thời kết nối với cả hai máy tính
- Tùy theo trạng thái đang chọn, thiết bị quyết định sẽ gửi chuyển động chuột và phím bấm tới máy nào
- Bàn phím đi theo chuột, và chuột cũng đi theo trạng thái chuyển của bàn phím
- Khi kéo chuột sang desktop còn lại, đích nhận nhập liệu của bàn phím cũng đổi theo
Cơ chế chuyển chuột
- Để tạo cảm giác con trỏ chuột di chuyển giữa các màn hình, HID report descriptor được đổi sang chế độ tọa độ tuyệt đối
- Báo cáo chuột thực tế vẫn đi vào dưới dạng lượng dịch chuyển tương đối, và thiết bị sẽ tích lũy chúng để quản lý vị trí hiện tại
- Khi cố đi ra khỏi vùng màn hình hiện tại theo hướng sang màn hình kia, thiết bị giữ nguyên tọa độ Y, đổi tọa độ X sang biên đối diện rồi chuyển đầu ra
- Nhờ vậy con trỏ xuất hiện trên màn hình của máy còn lại ở cùng độ cao, giúp việc chuyển trông tự nhiên hơn
- Việc chuyển thực sự xảy ra vào khoảnh khắc mũi tên ở một phía dừng lại và mũi tên ở phía kia bắt đầu di chuyển
Chuyển bàn phím và trạng thái LED
- Thiết bị hoạt động như USB Host và thăm dò bàn phím theo chu kỳ
- Nếu tìm thấy phím tắt được cấu hình trước trong HID report, các ký tự sau đó sẽ được gửi sang đầu ra khác
- Ví dụ sử dụng là
Ctrl + Caps Lock
- Ví dụ sử dụng là
- Có thể tận dụng lại LED bàn phím để hiển thị đang dùng đầu ra nào
- Thiết bị ghi nhớ trạng thái LED của từng máy tính, nên có thể tiếp tục từ trạng thái trước đó
Build và cập nhật firmware
- Để giảm lỗi lệch phiên bản và vấn đề đường dẫn, đồng thời tránh phải tải SDK lớn, dự án đi kèm bản tối thiểu của pico sdk và tinyusb
- Trên Debian/Ubuntu cần cài
build-essential,cmake,gcc-arm-none-eabi,libnewlib-arm-none-eabi,python3 - Build mặc định được thực hiện bằng các lệnh sau
cmake -S . -B buildcmake --build build
- Cũng có cung cấp build tái lập được bằng Docker
docker-compose -f misc/docker.yml run --rm build_container
- Có thể dùng pre-built images
- Từ phiên bản 0.6 trở đi có một image phổ dụng duy nhất
- Chỉ cần chép file
.uf2vào thiết bị để sử dụng
Cách nâng cấp firmware
- Option 1: với firmware 0.6 trở lên, vào config mode bằng
left ctrl + right shift + c + o- Thiết bị phía có bàn phím kết nối sẽ khởi động lại và xuất hiện dưới dạng ổ USB tên
DESKHOP - Sao chép file
.uf2, thiết bị sẽ kiểm tra image rồi flash và khởi động lại, sau đó tiếp tục nâng cấp bo mạch còn lại - Ổ này không phải thiết bị lưu trữ USB thông thường nên không thể dùng để sao chép file thông thường
- Thiết bị phía có bàn phím kết nối sẽ khởi động lại và xuất hiện dưới dạng ổ USB tên
- Option 2: dùng ROM bootloader, giữ nút trên từng bo Pico khi cắm vào rồi chép
.uf2vào ổ flash xuất hiện - Option 3: trong bản debug được build với
DH_DEBUG_CDC_FLASH=ON, có thể vào bootloader mode bằng lệnh CDC serialecho -n 'flash' > /dev/tty.usbmodem11104
Tính năng bổ sung
-
Mouse slowdown
- Bật/tắt chế độ chuột chậm bằng
right CTRL + right ALT - Giảm mạnh tốc độ con trỏ khi cần căn chỉnh vị trí chính xác
- Bật/tắt chế độ chuột chậm bằng
-
Switch Lock
- Khóa vào màn hình hiện tại bằng
RIGHT CTRL + K - Ngăn việc vô tình chuyển sang màn hình khác
- Khóa vào màn hình hiện tại bằng
-
Lock Both Screens
- Có thể khóa đồng thời cả hai máy tính bằng
RIGHT CTRL + L - Cần cấu hình hệ điều hành của từng đầu ra
- Có thể khóa đồng thời cả hai máy tính bằng
-
Gaming Mode
- Bật/tắt bằng
LEFT CTRL + RIGHT SHIFT + G - Sẽ khóa vào màn hình hiện tại và chuột hoạt động như chuột tọa độ tương đối tiêu chuẩn
- Đây là chế độ để xử lý game, máy ảo hoặc các vấn đề hệ điều hành hiện chưa hỗ trợ vốn không phù hợp với chế độ chuột tuyệt đối
- Bật/tắt bằng
-
Screensaver
- Mặc định tắt
- Khi bật, sau một khoảng không hoạt động con trỏ sẽ nảy khắp màn hình như quả bóng Pong
- Tự động tắt khi gửi nhập liệu tới màn hình đó
Cấu hình phần cứng
- Sơ đồ mạch dựa trên hai bo Raspberry Pi Pico
- Pico được chọn vì rẻ, khoảng 4.10€ mỗi bo, có thể hàn tay và dễ mua
- Hai Pico được nối với nhau qua UART
- Hai phía được tách biệt bằng bộ cách ly số
- Analog Devices
ADuM1201giá khoảng 3€ - TI
ISO7721DRgiá khoảng 1.5€, rẻ hơn, nhanh hơn và tương thích chân nên được ưu tiên
- Analog Devices
- RP2040 vốn không hỗ trợ dual USB theo mặc định, nhưng thông qua Pico-PIO-USB, USB được triển khai bằng PIO để đảm nhiệm cả vai trò USB Host lẫn Device
PCB và vỏ
- Để dễ tự làm, các trace trên PCB được đặt ở một mặt và số lượng linh kiện được tối giản
- Đường vi sai USB D+/D- về nguyên tắc phải dài bằng nhau, nhưng được thiết kế hơi bất đối xứng có chủ ý để bù chênh lệch độ dài trace GPIO trên PCB của Pico
- Mục tiêu trở kháng vi sai là 90Ω, và thực tế đạt khoảng 107Ω
- Độ dày PCB được thiết kế là 1.6mm để vừa với vỏ snap-fit
- PCB v1.1 bổ sung các điểm sau so với v1.0
- Bảo vệ ESD
TPD4E1U06DBVR - Tụ VBUS cho đầu nối bàn phím/chuột
- Ký hiệu hướng trên silkscreen
- Lỗ dành cho bo clone có header hàn sẵn và cải thiện căn chỉnh
- Điện trở USB 27Ω
- Bảo vệ ESD
- v1.1 hơi khó hàn tay hơn do IC TVS nhỏ và điện trở 0805
- Vỏ được cung cấp tại case, dùng khoảng 33g filament và có thể in trong vài giờ
- Cấu trúc snap-fit cố định không cần vít, nắp có khe để mở bằng tua vít
Chi phí và linh kiện
- Tổng BOM của PCB v1.1 được nêu là 11.22€
- Các linh kiện chính gồm
- 2 Raspberry Pi Pico: 8.20€
- 2 đầu nối USB-A PCB: 0.40€
- 1 TI ISO7721DR: 1.40€
- 2 tụ 100nF: 0.18€
- 4 điện trở 27Ω: 0.12€
- 2 TPD4E1U06DBVR: 0.62€
- 2 tụ 4.7uF: 0.14€
- 2 header 2.54mm 1x03: 0.16€
- Ngoài ra còn cần gia công PCB, và có cung cấp Gerber
- Cũng có cung cấp file STL cho in 3D
Phím tắt và cấu hình sử dụng
- Theo firmware 0.68 trở lên, các phím tắt chính như sau
Left Ctrl + Right Shift + C + O: vào config modeRight Shift + F12 + D: xóa cấu hình trong flashRight Shift + F12 + Y: lưu offset chuyển màn hìnhRight CTRL + Right ALT: bật/tắt chế độ chuột chậmRight CTRL + K: khóa/mở khóa chuyển desktop bằng chuộtRight CTRL + L: khóa đồng thời hai đầu raLeft CTRL + Right Shift + G: bật/tắt gaming modeLeft CTRL + Right Shift + S: bật screensaverLeft CTRL + Right Shift + X: tắt screensaverLeft CTRL + Caps Lock: chuyển đầu ra
- Một số bàn phím không gửi đúng tổ hợp nhấn đồng thời hai phím Shift nên phím tắt đã được thay đổi
Chế độ cấu hình trên web
- Từ firmware 0.6, dự án đưa vào configuration mode được cải tiến
- Nhấn
Left Ctrl + Right Shift + C + O, thiết bị sẽ khởi động lại và vào chế độ cấu hình - Một ổ USB tên
DESKHOPsẽ xuất hiện, bên trong chỉ có fileconfig.htm - File này cần được mở bằng Chromium hoặc Chrome
- Firefox hiện chưa được hỗ trợ vì tránh triển khai WebHID
- Sau khi cho phép kết nối, người dùng có thể đặt tùy chọn và lưu để ghi vào thiết bị
- Lý do dùng file cục bộ thay vì trang cấu hình trực tuyến là vì việc tải JavaScript tương tác với thiết bị nhập liệu từ một vị trí trực tuyến tùy ý có thể tạo ra rủi ro bảo mật tiềm tàng
- Trang web cấu hình dùng cơ chế tự giải nén do giới hạn dung lượng lưu trữ, và toàn bộ mã nguồn đều có trong repository
Thiết kế bảo mật và an toàn
- Không có chức năng copy/paste hay chia sẻ thông tin giữa các hệ thống
- Đây là giới hạn có chủ đích để ngăn rò rỉ thông tin
- Không có kết nối đi vào từ các máy tính đầu ra
- Ngoại lệ duy nhất là thông điệp bật/tắt LED bàn phím chuẩn, giới hạn ở dữ liệu 1 byte
- Không thể kích hoạt nâng cấp firmware từ máy tính đầu ra
- Chỉ cho phép hành động người dùng rõ ràng thông qua phím tắt đặc biệt trên bàn phím
- Không phơi bày custom endpoint của bàn phím/chuột đã kết nối hay chuyển thông tin đó về phía thiết bị
- Không lưu lịch sử nhập liệu
- Thiết bị không tự tạo phím bấm tùy ý
- Chỉ xuất những gì người dùng nhập hoặc kích hoạt
- Các đầu ra được tách biệt vật lý và dùng cách ly galvanic tối thiểu 2kV
- Gói tin giữa các thiết bị có độ dài cố định, và các tùy chọn cấu hình được truyền đi chỉ nằm trong một danh sách ngắn
- Không có Bluetooth, Wi‑Fi, mạng nội bộ hay truy cập Internet
- Máy tính được kết nối không bao giờ được xem là đáng tin cậy
- Chế độ cấu hình sẽ tự tắt sau một khoảng không hoạt động
- Mã nguồn được cung cấp dưới dạng mã mở, không có binary blob
FAQ và khả năng tương thích
- Có thể hoạt động chỉ với hai Pico mà không cần PCB và bộ cách ly, nhưng vẫn khuyến nghị dùng bộ cách ly
- Với các màn hình có độ phân giải khác nhau, việc di chuyển chuột được xử lý trong không gian tọa độ trừu tượng và máy tính sẽ ánh xạ sang màn hình vật lý nên về lý thuyết vẫn hoạt động
- Đây không phải sản phẩm thương mại, mà là dự án cá nhân phi thương mại mang tính sở thích
- Có cập nhật rằng có thể đặt mua PCB, PCB đã lắp ráp, hoặc thiết bị hoàn chỉnh theo từng chiếc tại Elecrow
- Theo phản hồi người dùng, bo mạch đến ở trạng thái trống và cần tự nạp firmware
- Dongle combo bàn phím/chuột như Logitech Unifying được cho là hỗ trợ tốt hơn sau các bản cập nhật firmware gần đây
- Chuột và bàn phím không dây dùng đầu thu riêng hoạt động bình thường trong thử nghiệm với chuột không dây Anker
- Nếu gặp vấn đề build, có thể tham khảo Troubleshooting Wiki
Giải pháp thay thế bằng phần mềm
- Barrier: miễn phí, mã nguồn mở
- Input Leap: miễn phí, mã nguồn mở
- Synergy: thương mại
- Mouse Without Borders: miễn phí, chỉ cho Windows
- Universal Control: tính năng của Apple
Giới hạn đã biết và kế hoạch
- Sau Windows 10
KB5003637, cơ chế tọa độ tuyệt đối của HID bị hỏng nên trên Windows không thể dùng quá 1 màn hình- Chuột sẽ bị giữ ở màn hình chính; hiện có biện pháp vòng tránh thử nghiệm và đang phát triển biện pháp tốt hơn
- Mã nguồn cần được dọn dẹp và refactor
- Chưa được thử nghiệm đầy đủ với nhiều loại thiết bị nên có thể sẽ không hoạt động ngay trên một số phần cứng
- Các bàn phím cao cấp có núm xoay, nút phụ hoặc thanh trượt có thể không dùng được các phần cứng bổ sung đó
- Các chuột hiện đại có rất nhiều nút có thể có một số nút không hoạt động như mong đợi
- Cần cả hai máy tính đều được kết nối và cấp nguồn USB thì thiết bị mới hoạt động
- Vì mỗi bo nhận nguồn từ máy tính mà nó kết nối
- macOS có vấn đề khi dùng từ 2 màn hình trở lên, và firmware mới nhất cung cấp biện pháp vòng tránh mang tính thử nghiệm cho trường hợp này
- Các tính năng dự kiến gồm cải thiện biện pháp vòng tránh đa màn hình cho Windows/macOS, transparent/gaming mode, hỗ trợ hơn 2 đầu ra, cải thiện UI cấu hình, v.v.
- Cũng đang phát triển phiên bản lite chỉ dùng một bo Pico W để cung cấp tính năng cơ bản
- Tần số polling chuột hiện có thể đạt 1000Hz
1 bình luận
Các ý kiến trên Hacker News
Điểm hay là có thể phát hiện mép màn hình mà không cần phần mềm client
Để con trỏ chuột di chuyển qua một cách tự nhiên, họ đổi mouse HID report descriptor sang tọa độ tuyệt đối, rồi bên trong tích lũy các báo cáo chuột thực tế vốn đi vào dưới dạng di chuyển tương đối để duy trì vị trí chính xác
Vì vậy nó hoạt động giống synergykm / Barrier nhưng không có tính năng clipboard và không cần phần mềm client
Ví dụ như script tự động hóa hoặc game cố định con trỏ ở giữa màn hình
Trên YouTube, ngay cả khi không có phần cứng riêng, cũng có thể dùng phím
,và.để tua video theo từng khung hìnhViệc chọn chính xác bằng thanh trượt trên giao diện cảm ứng thật sự rất tệ
Không biết bên nào có trước, nhưng tôi biết đến nó trong mpv, rồi tình cờ bấm thử trên YouTube thì thấy hoạt động
Trên Windows có thể dùng Mouse Without Borders, do Microsoft Garage phát triển và hiện được đưa vào Windows PowerToys
Liên kết:
https://www.microsoft.com/en-us/garage/profiles/mouse-without-borders
https://github.com/microsoft/PowerToys
Tuy nhiên nhìn lại thì dự án đã ngừng bảo trì, và bản kế nhiệm là Input Leap
https://github.com/debauchee/barrier
https://github.com/input-leap/input-leap
Đặc biệt là việc kéo thả tệp giữa các máy tính để sao chép trở nên dễ dàng hơn
Tôi đã mua tới 4 USB hub để chuyển đổi bàn phím và chuột, nhưng phần lớn thiết bị quá tệ nên rất bực
Có ngày tôi phải rút rồi cắm lại hub nhiều lần, và nếu nối thêm webcam hoặc micro USB thì còn tệ hơn
Tôi vẫn dùng Synergy ổn, nhưng cần một KVM đúng nghĩa có thể xử lý tốt cả webcam, micro, âm thanh và cho phép chỉ chuyển cụm thiết bị đang kết nối bằng phím tắt
Người dùng KVM rõ ràng chưa được hỗ trợ đầy đủ
Mỗi đầu vào DisplayPort có cổng USB đi kèm, còn USB-C đảm nhiệm cả thiết bị ngoại vi, đầu vào hiển thị và cả công suất cấp nguồn khá ổn
Chuyển đổi bằng một công tắc nhỏ trên bàn; nó vẫn làm cho máy thấy màn hình như đang được kết nối ngay cả với đầu vào không hiển thị, nên Windows không bị nhấp nháy để sắp xếp lại, và việc chuyển đổi nhanh, mượt hơn nhiều
Có vẻ đây là trường hợp sử dụng phổ biến nên khá tiếc
Cũng có thể tách ra trước bằng dock, nhưng độ phân giải màn hình tôi dùng cao nên hầu hết dock đều đuối hoặc chỉ hỗ trợ 30Hz
Mac kết nối bằng một sợi cáp Thunderbolt 4, còn PC dùng HDMI 2.1 và USB3 10Gbps làm upstream
Tôi cắm Ethernet và bàn phím/chuột vào màn hình, rồi chuyển sang đúng thiết bị bằng phím tắt hoặc OSD của màn hình
Tính năng PIP cũng cho phép xem đồng thời cả hai thiết bị
Hạn chế là nó chỉ có host controller USB 2, nên khó chuyển đổi một số thiết bị tốc độ cao như webcam
Nếu phải dùng lẫn sản phẩm Apple, vì Apple không thích MST, nên cần dùng hai cáp USB3 vật lý từ Mac để phân biệt hai kênh hiển thị
Tôi cắm USB drive để chuyển tệp nhanh, và nhìn chung thiết bị nào chạy bằng nguồn USB thì đều được
Nếu chọn USB 3+, DP, v.v. thì đắt, nhưng cũng có các mẫu rẻ chỉ chuyển USB
Tuy nhiên nhược điểm lớn là một số chuột và bàn phím có phím đặc biệt không hoạt động 100%
Tôi đã dùng Synergy cho mục đích này hơn 10 năm
https://symless.com/synergy, nhanh, chuyển tức thì ngay cả qua Wi‑Fi, và hỗ trợ cả Windows/Mac/Linux
Hai cái sau là mã nguồn mở miễn phí, còn Synergy có cách cấu hình ranh giới giữa các thiết bị khá tốt
Tuy nhiên, dù là giải pháp nào thì tôi cũng mong nó hỗ trợ đúng nghĩa bố cục màn hình tùy chỉnh
Môi trường cá nhân của tôi có các màn hình không nằm trên một hàng, và từng màn hình có thể được chuyển độc lập sang từng thiết bị, nên nếu có thể chỉ định ranh giới theo từng màn hình·từng thiết bị thì tuyệt, nhưng có vẻ cả phần mềm lẫn phần cứng đều chưa có
Gần đây hỏi Synergy thì họ nói đây là yêu cầu tính năng phổ biến và đã có trong lộ trình, hy vọng sẽ sớm ra mắt
Không cần đăng nhập vào máy tính trước; có thể chuyển bằng cách đi qua mép màn hình hoặc bằng tổ hợp phím
Các thiết bị USB được kết nối cũng có thể chuyển độc lập với bàn phím·chuột
Những sản phẩm như vậy đôi khi được gọi là boundless, borderless, roaming KM switch
https://www.cdw.com/product/siig-4-port-roaming-km-switch-wi...
Cá nhân tôi thấy nó hoạt động tốt hơn Synergy rất nhiều
Tôi chuyển sang nó sau khi các nhà phát triển Synergy không phản hồi với một lỗi đã tồn tại nhiều năm, khiến tôi không thể tiếp tục dùng nữa
Ví dụ: https://github.com/symless/synergy-core/issues/5992
Nhược điểm là nếu muốn tiếp tục nhận cập nhật sau 1 năm thì phải “gia hạn bảo trì”, nhưng dù chưa gia hạn tôi vẫn dùng tốt
Kiểm tra lại thì cấu hình đó đã hoạt động 4~5 năm không vấn đề gì, và thuộc nhóm phần mềm trả phí rất đáng tiền
Bảo mật nên là mặc định và miễn phí trong mọi thứ; đó không phải xa xỉ mà là điều kiện tối thiểu
Dù vậy, nếu dùng thử thấy ổn thì tôi vẫn có thể mua giấy phép premium vì tính năng sao chép·dán
Có một dự án tôi làm lấy cảm hứng từ dự án tương tự https://github.com/jfedor2/screen-hopper
Phiên bản tự làm của tôi gồm hai chương trình
Một chương trình chạy trên desktop Linux, lắng nghe các sự kiện đầu vào từ evdev, hệ thống con nhập liệu của Linux, và khi nhấn một phím nhất định thì nó tiêu thụ toàn bộ sự kiện rồi gửi qua USB serial đến RPI Pico
Nhấn lại thì quay về chế độ lắng nghe thủ công
RPI Pico chuyển các sự kiện Linux evdev nhận qua serial thành sự kiện USB HID rồi gửi sang một PC Windows khác
Kết quả là một KM switch chuyển tức thì giữa PC Linux và một PC chạy hệ điều hành bất kỳ
Ảnh dây nối: https://ibb.co/m0zhzgz
Tôi dùng thêm một Pico khác làm bộ chuyển đổi USB serial, và với tư cách người mới về phần cứng thì việc chỉ cần 2 dây là một sự nhẹ nhõm lớn
Cả hai chương trình đều dưới 100 dòng, và có rất nhiều crate Rust cũng như package Python để lắng nghe Linux evdev
Phía Pico cũng gần như chỉ là một vòng lặp với một câu lệnh switch lớn, và có crate Rust để gửi sự kiện USB HID
Dùng COBS thì có thể gửi qua serial mà không phải lo về framing
Cuối cùng tôi không công bố mã nguồn mở vì lỗi USB serial: sau khi ngắt kết nối, nó không kết nối lại đúng cách với desktop Linux
Không biết do Linux hay do Pico, và vì tôi không rút dây nên đến giờ vẫn dùng không vấn đề gì
Vì chơi FPS nhiều nên tôi cố ý bỏ tính năng tọa độ tuyệt đối, và gán phím chuyển đổi vào nút cạnh chuột để có thể đổi hệ thống mà không cần chạm vào bàn phím
Tôi mới biết dự án screen-hopper hôm qua, và cảm giác như nó xác nhận giả thuyết rằng bất kể mình định làm gì thì đã có ai đó thông minh hơn làm tốt hơn rồi
Tôi hoàn toàn không chơi game nên tọa độ tuyệt đối cũng ổn, nhưng trong danh sách việc cần làm có mục biến nó thành tùy chọn cấu hình được
Có thể nerd snipe ai đó đào sâu vào chi tiết tinh vi gây ra lỗi
Mã nguồn được cung cấp nguyên trạng ở đây: https://github.com/null-dev/picokvm
Một trong những điều tôi rất khó chịu là phải chuyển đầu vào chuột và bàn phím giữa hai PC bằng một USB 3.0 switch
Khi trong cuộc họp Teams mà mình không có nhiều việc phải nói, nếu ai đó gọi tên hoặc nhắn tin, tôi lại luống cuống tìm nút để chuyển đầu vào về PC đang bật Teams
Tôi từng nghĩ đến việc nối ESP32 hoặc Rpi Pico W cùng vài optocoupler vào chân nút của USB switch, rồi expose một HTTP endpoint để dùng script AutoHotkey và phím tắt toggle đầu vào giữa hai máy
Nhưng tôi đã bỏ cuộc vì không nghĩ ra cách xác định đầu vào hiện đang active, còn giải pháp này thì tôi thích
Headset Logitech công ty cấp cho tôi có các nút âm lượng, kết thúc cuộc gọi và mute trên dây, nên việc bật lại tiếng trong lúc đa nhiệm dễ hơn nhiều
Synergy xử lý tốt nhu cầu này bằng phần mềm thuần túy
Dù không miễn phí hay mã nguồn mở, nhưng giá tương đối rẻ
https://symless.com/synergy
Cả hai đều là mã nguồn mở
[0] https://github.com/debauchee/barrier
[1] https://github.com/input-leap/input-leap
Cũng có một fork mã nguồn mở tách ra từ phiên bản 1.9: https://github.com/debauchee/barrier#what-is-it
Ví dụ, khi dùng host macOS, trên client Windows/Linux nó dùng đường cong tăng tốc của macOS để tính vị trí con trỏ, nhưng lại không dùng cho chuyển động con trỏ thực tế
Vì vậy khi cố làm việc ở một phần ba màn hình Windows gần host, bạn sẽ vô tình bị nhảy trở lại
Có vẻ mọi giải pháp đều chỉ hoạt động trên hệ điều hành desktop
Trong các công nghệ kiểu này chẳng có cái nào ổn định, và Synergy từng nhiều lần làm đơ cả bàn phím đang kết nối, khiến máy tính phải tắt rồi bật lại mới phản hồi
Thật sự rất ấn tượng
Đặc biệt là với người đã dùng cấu hình desktop đặt các máy Linux-Mac-Windows từ trái sang phải trong ít nhất 20 năm như tôi
Nếu trong ngôn ngữ lập trình có đa ngôn ngữ, thì trong phần cứng có cấu hình đa nền tảng
May là vài năm gần đây việc thiết kế system-on-chip (SoC) tăng lên nên mọi thứ đã dễ hơn
Cấu hình hiện tại là 2 bản sao Mac mini Ryzen SoC giá 250 đô từ Thâm Quyến và một M1 MBP
Thật tiếc là thế giới các giải pháp KVM mã nguồn mở như Synergy, vốn từng khá vững chắc, đã biến thành cơn ác mộng đệ quy của các bản fork, khiến việc tìm một KVM phần mềm mã nguồn mở đa nền tảng hoạt động miễn phí trở nên khó khăn
Giờ cuối cùng tôi vẫn dùng switch KVM truyền thống, nhưng việc phải bấm nút làm mất tập trung
Một ngày nào đó tôi muốn thử lại những thứ như thế này
Nếu có ai muốn cùng thương mại hóa thứ này, tôi sẵn sàng chịu chi phí và đảm nhận ép phun nhựa, marketing, lắp ráp hàng loạt và những việc cần thiết khác
Email nằm trong hồ sơ của tôi
Với tôi đó là điều kiện khiến không thể chấp nhận
Hãy tìm bằng các từ khóa boundless, borderless, roaming KM switch