DeskHop – chuyển đổi desktop nhanh
(github.com/hrvach)DeskHop - chuyển đổi desktop nhanh
- Miễn phí và mã nguồn mở
- Gần như không có độ trễ khi chuyển đổi
- Có thể chuyển bằng cách kéo con trỏ chuột giữa các máy tính
- Không cần cài đặt phần mềm
- Sử dụng linh kiện rẻ và dễ kiếm (dưới 15 euro)
- Vỏ snap-fit có thể in bằng máy in 3D
- 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ị đóng vai trò trung gian giữa bàn phím/chuột và máy tính, đồng thời duy trì kết nối với hai máy tính cùng lúc
- Theo lựa chọn của người dùng, thiết bị quyết định sẽ gửi tín hiệu chuột và bàn phím tới máy tính nào
- Khi kéo chuột sang desktop khác, bàn phím cũng tự động chuyển theo
Chuột
- Sửa đổi HID report descriptor của chuột để dùng tọa độ tuyệt đối, đồng thời cộng dồn nội bộ các báo cáo chuột (di chuyển tương đối) để giữ vị trí chính xác
- Khi cố di chuyển ra khỏi vùng màn hình theo hướng sang màn hình khác, hệ thống giữ nguyên tọa độ Y, đổi X tối đa thành X tối thiểu rồi chuyển đầu ra
- Con trỏ xuất hiện ở cùng độ cao trên màn hình kia, giúp cảm nhận việc chuyển đổi mượt mà
Bàn phím
- Với vai trò USB host, hệ thống thăm dò bàn phím theo chu kỳ, tìm các phím tắt được cấu hình sẵn (như Caps Lock) và chuyển ký tự sang đầu ra khác
- Tái sử dụng LED trên bàn phím để cung cấp phản hồi trực quan về đầu ra đang được sử dụng
- Ghi nhớ trạng thái LED của từng máy tính để có thể tiếp tục công việc đúng như trạng thái trước đó
Sử dụng image dựng sẵn
- Có thể dùng image dựng sẵn
- Kết nối bo Pico vào khe A của PCB và giữ nút trên bo trong lúc cắm cáp, khi đó hệ thống sẽ hiện ra như một ổ USB
- Sao chép tệp
board_A.uf2tương ứng và lặp lại tương tự cho B
Nâng cấp firmware
- Tùy chọn 1: mở vỏ, giữ nút khi kết nối từng Pico rồi sao chép đúng tệp uf2
- Tùy chọn 2: dùng tổ hợp phím cụ thể (
Right Shift, P, H, X, Left Shift) để vào chế độ BOOTSEL, chuyển các Pico sang chế độ nâng cấp bootloader
Tính năng khác
- Khi cần tinh chỉnh chuột chính xác, giữ
Right ALTtrong lúc di chuyển chuột để tốc độ chuột giảm đáng kể, phù hợp cho thao tác chính xác
Phần cứng
- Mạch có giá rẻ (4,10 euro mỗi chiếc), có thể hàn thủ công, và dựa trên hai bo Raspberry Pi Pico mà hầu hết nhà cung cấp đều còn hàng
- Các Pico được kết nối qua UART bằng bộ cách ly số hai kênh Analog Devices ADuM1201 (~3 euro)
- Có thể hoạt động như USB host và device nhờ một dự án ấn tượng triển khai USB bằng phép màu programmable IO của RP2040
PCB
- Để việc tự lắp ráp đơn giản nhất có thể, các đường mạch chỉ được đặt trên một mặt và số lượng linh kiện được giữ ở mức tối thiểu
- Các đường vi sai USB D+/D- phải có chiều dài bằng nhau, nhưng được làm hơi bất đối xứng có chủ ý để bù cho chênh lệch chiều dài đường GPIO tương ứng ngay trên PCB của PICO, nhằm đảm bảo tổng chiều dài khớp nhau
Vỏ
- Vì không quá thành thạo thiết kế 3D nên phần vỏ đơn giản và cơ bản, nhưng đáp ứng đúng mục đích
- Dễ in, dùng khoảng 33g filament và hoàn thành trong vài giờ
- Chuyển động ngang của PCB được chặn bằng các chốt xuyên qua lỗ, còn chuyển động dọc được giữ bằng các gờ snap-fit ở cạnh bên nên không cần vít
- Đầu nối micro USB nhô ra khỏi cạnh bên của vỏ, nên chỉ cần tạo một lỗ hơi lớn hơn để cáp đi qua
- Nắp dùng thiết kế snap-fit và có khe cho tua vít để mở ra
- Ký hiệu ở mặt trên được làm lõm xuống để có thể tô bằng bút sáp hoặc vật liệu tương tự nhằm tăng độ tương phản (hoặc để nguyên cũng được)
Danh sách vật liệu
- 2 Raspberry Pi Pico, 1 ADuM1201BRZ, 2 Cap 1206 SMD 100nF, 2 đầu nối USB-A PCB, 2 Headers 2.54 1x03
- Tổng giá: 11,53 euro
- Đầu nối USB-A có thể dùng Molex MX-67643-0910 hoặc phương án thay thế rẻ hơn có cùng kích thước
- Bước bổ sung: làm PCB (có cung cấp Gerber, JLC có thể sản xuất với giá vài đô la, chọn độ dày 1,6mm), in 3D vỏ (có cung cấp tệp stl, cần khoảng 33g filament)
FAQ
- Chỉ có hai Pico mà không có PCB và bộ cách ly thì có hoạt động không?
- Khuyến nghị dùng bộ cách ly, nhưng không có thì vẫn có thể hoạt động.
- Nếu màn hình có độ phân giải khác nhau thì sao?
- Việc di chuyển chuột diễn ra trong không gian tọa độ trừu tượng, còn máy tính sẽ tính toán ánh xạ sang màn hình vật lý, nên về lý thuyết sẽ hoạt động bình thường.
- Có thể mua sản phẩm này ở đâu?
- Không bán, đây là một dự án cá nhân phi thương mại mang tính sở thích.
- Khi màn hình được kích hoạt bằng chuột thay đổi thì bàn phím có chuyển theo không (và ngược lại)?
- Có, nó được tạo ra để hoạt động như thể chỉ có một máy tính.
- Có hoạt động với dongle combo bàn phím/chuột như Logitech Unifying Receiver không?
- Phiên bản hiện tại giả định chuột được kết nối ở cổng khác nên không hoạt động. Cần nghiên cứu cách Logitech Unifying Receiver vận hành và triển khai hỗ trợ.
- Có hoạt động với chuột và bàn phím không dây có bộ thu riêng biệt cho từng thiết bị không?
- Chưa được thử nghiệm cho trường hợp này nên có thể phát sinh vấn đề ngoài dự kiến, nhưng về lý thuyết thì sẽ hoạt động ngay.
Nhược điểm
- Lưu ý: để dùng tính năng này, cả hai máy tính phải được kết nối và bật nguồn (mỗi bo được cấp điện từ máy tính mà nó kết nối).
- Cần dọn dẹp mã, refactor, v.v.
- Thỉnh thoảng có lỗi và hành vi bất thường.
- Chưa được thử nghiệm với nhiều thiết bị khác nhau nên chưa rõ sẽ hoạt động thế nào trên phần cứng của người dùng.
- Pico-PIO-USB đã được vá để hỗ trợ điều khiển LED bàn phím; thông thường việc này do TinyUSB xử lý ở chế độ host.
Miễn trừ trách nhiệm
- Bất kỳ ai thử dự án này cần hiểu và thừa nhận rằng bản thân tự chịu trách nhiệm cho mọi chấn thương, thiệt hại hoặc hậu quả khác.
- An toàn là quan trọng, vì vậy cần thực hiện các biện pháp phòng ngừa cần thiết và tự chịu trách nhiệm cho sự an toàn của bản thân trong suốt dự án.
- Đừng bị điện giật, bỏng, căng thẳng hay nổi giận; hãy làm việc vui vẻ và tận hưởng quá trình.
Ý kiến của GN⁺:
- Bài viết này có thể rất hữu ích cho những người sử dụng hai máy tính. Đặc biệt hấp dẫn với người muốn tăng hiệu quả làm việc bằng cách dùng chung một bàn phím và chuột.
- Việc mã nguồn mở và cách tiếp cận DIY có thể khiến đây trở thành một dự án thú vị với những người quan tâm đến công nghệ. Người dùng có thể điều chỉnh và cải tiến hệ thống theo nhu cầu của mình.
- Dự án này thể hiện tinh thần đổi mới của cộng đồng trong việc giải quyết các vấn đề kỹ thuật. Việc người dùng tự giải quyết vấn đề và chia sẻ quá trình đó cũng có thể mang lại lợi ích cho người khác.
1 bình luận
Ý kiến Hacker News
Điều đáng chú ý là có thể phát hiện mép màn hình mà không cần phần mềm client.
Tôi đã dùng giải pháp phần mềm Synergy hơn chục năm nay. Chuyển đổi tức thì qua Wi‑Fi và cũng hoạt động giữa Windows/Mac/Linux.
Khi cố di chuyển chính xác thanh trượt trên YouTube đến một vị trí cụ thể, đôi lúc chuột nhạy quá mức khiến phải rê tay cực kỳ cẩn thận.
,) và dấu chấm (.) để tua video theo từng khung hình.Trên Windows, có thể dùng công cụ Mouse Without Borders do Microsoft Garage phát triển và hiện là một phần của Windows PowerToys.
Tôi đã lấy cảm hứng từ các dự án tương tự khác để làm phiên bản của riêng mình.
Tôi đã mua 4 hub USB để chuyển bàn phím và chuột, nhưng hầu hết thiết bị đều quá tệ đến mức phải rút hub ra cắm lại bằng tay vài lần mỗi ngày.
Một trong những nỗi bực bội lớn của tôi là dùng công tắc USB 3.0 để chuyển đầu vào chuột và bàn phím giữa hai PC.
Hiện tôi đang dùng KVM switch, và vì mất 2-3 giây để chuyển nên phần lớn thời gian tôi SSH vào máy còn lại và dùng phiên tmux.
Đây là một bước tiến đáng kinh ngạc.
Synergy giải quyết khá tốt vấn đề này chỉ bằng phần mềm. Nó không miễn phí hay mã nguồn mở, nhưng giá tương đối hợp lý.