DeskHop – ฟีเจอร์สลับเดสก์ท็อปอย่างรวดเร็ว
(github.com/hrvach)DeskHop - สลับเดสก์ท็อปอย่างรวดเร็ว
- ฟรีและโอเพนซอร์ส
- แทบไม่มีความหน่วงขณะสลับ
- สามารถลากเมาส์พอยน์เตอร์ข้ามระหว่างคอมพิวเตอร์เพื่อสลับได้
- ไม่ต้องติดตั้งซอฟต์แวร์
- ใช้ชิ้นส่วนราคาถูกและหาซื้อง่าย (ต่ำกว่า 15 ยูโร)
- เคสแบบ snap-fit ที่พิมพ์ด้วยเครื่องพิมพ์ 3D ได้
- มีการแยกวงจรแบบ galvanic isolation อย่างสมบูรณ์ระหว่างเอาต์พุต
- ทำงานได้บน Linux, macOS และ Windows
หลักการทำงาน
- อุปกรณ์ทำหน้าที่เป็นตัวกลางระหว่างคีย์บอร์ด/เมาส์กับคอมพิวเตอร์ และรักษาการเชื่อมต่อกับคอมพิวเตอร์ทั้งสองเครื่องพร้อมกัน
- ตัดสินใจว่าจะส่งอินพุตจากเมาส์และคีย์ไปยังคอมพิวเตอร์เครื่องใดตามที่ผู้ใช้เลือก
- เมื่อคุณลากเมาส์ไปยังเดสก์ท็อปอีกฝั่ง คีย์บอร์ดจะสลับตามโดยอัตโนมัติ
เมาส์
- เปลี่ยน mouse HID report descriptor ให้ใช้พิกัดแบบสัมบูรณ์ และสะสม mouse report (การเคลื่อนที่แบบสัมพัทธ์) ภายในเพื่อคงตำแหน่งให้แม่นยำ
- หากพยายามเลื่อนออกนอกพื้นที่จอไปทางจออีกฝั่ง จะคงค่า Y ไว้ เปลี่ยนค่า X สูงสุดเป็นค่า X ต่ำสุด แล้วสลับเอาต์พุต
- ทำให้เคอร์เซอร์ไปปรากฏที่ระดับความสูงเดียวกันบนอีกจอหนึ่ง เพื่อให้รับรู้การสลับได้อย่างลื่นไหล
คีย์บอร์ด
- ในฐานะ USB host ระบบจะโพลคีย์บอร์ดเป็นระยะ และตรวจหาปุ่มลัดที่ตั้งค่าไว้ล่วงหน้า (เช่น Caps Lock) เพื่อส่งอักขระไปยังอีกเอาต์พุตหนึ่ง
- นำ LED ของคีย์บอร์ดมาใช้เป็นฟีดแบ็ก เพื่อให้มองเห็นได้ว่ากำลังใช้งานเอาต์พุตใดอยู่
- จดจำสถานะ LED ของคอมพิวเตอร์แต่ละเครื่องไว้ ทำให้กลับไปทำงานต่อได้ด้วยสถานะเดิม
การใช้ image ที่ build ไว้ล่วงหน้า
- สามารถใช้ image ที่ build ไว้ล่วงหน้าได้
- เสียบบอร์ด Pico เข้ากับสล็อต A ของ PCB แล้วกดปุ่มบนบอร์ดค้างไว้ขณะต่อสาย จากนั้นระบบจะมองเห็นเป็น USB drive
- คัดลอกไฟล์
board_A.uf2ที่ตรงกับรุ่น และทำซ้ำแบบเดียวกันสำหรับ B
การอัปเกรดเฟิร์มแวร์
- ตัวเลือก 1: เปิดเคส แล้วคัดลอกไฟล์
uf2ที่ถูกต้องขณะกดปุ่มค้างไว้ระหว่างเชื่อมต่อ Pico แต่ละตัว - ตัวเลือก 2: ใช้คีย์ผสมเฉพาะ (
Right Shift, P, H, X, Left Shift) เพื่อเข้าสู่โหมด BOOTSEL และสลับ Picos ไปยังโหมดอัปเกรดบูตโหลดเดอร์
ฟีเจอร์อื่น ๆ
- เมื่อต้องการปรับเมาส์อย่างละเอียด หากกด
Right ALTค้างไว้ระหว่างขยับเมาส์ ความเร็วเมาส์จะลดลงมาก ทำให้ทำงานที่ต้องการความแม่นยำได้
ฮาร์ดแวร์
- วงจรมีราคาถูก (ชิ้นละ 4.10 ยูโร) บัดกรีด้วยมือได้ และอิงจากบอร์ด Raspberry Pi Pico สองตัวที่ซัพพลายเออร์ส่วนใหญ่มีสต็อก
- Picos เชื่อมต่อกันผ่าน UART โดยใช้ Analog Devices ADuM1201 digital isolator แบบดูอัลแชนเนล (~3 ยูโร)
- สามารถทำงานเป็นทั้ง USB host และ device ได้ ต้องขอบคุณโปรเจกต์อันน่าทึ่งที่นำ USB มาใช้งานด้วย programmable I/O ของ RP2040
PCB
- เพื่อให้การประกอบแบบ DIY ง่ายที่สุด จึงวางลายวงจรไว้เพียงด้านเดียวและลดจำนวนชิ้นส่วนให้เหลือน้อยที่สุด
- แม้สาย differential USB D+/D- ต้องมีความยาวเท่ากัน แต่บนตัว PICO PCB เองมีการทำให้ไม่สมมาตรเล็กน้อยโดยตั้งใจ เพื่อชดเชยความต่างของความยาวลาย GPIO ที่เกี่ยวข้องและให้ความยาวรวมสอดคล้องกัน
เคส
- เนื่องจากไม่ได้ถนัดงาน 3D modeling มากนัก เคสจึงเรียบง่ายและพื้นฐาน แต่ใช้งานได้ตรงตามวัตถุประสงค์
- พิมพ์ง่าย ใช้เส้นฟิลาเมนต์ประมาณ 33 กรัม และใช้เวลาเพียงไม่กี่ชั่วโมง
- การขยับในแนวนอนของ PCB ถูกกันไว้ด้วยพินที่ลอดผ่านรู ส่วนการขยับในแนวตั้งถูกกันด้วยเดือย snap-fit ด้านข้าง จึงไม่ต้องใช้สกรู
- คอนเน็กเตอร์ micro USB ยื่นออกจากด้านข้างของเคส จึงสามารถทำรูให้ใหญ่ขึ้นเล็กน้อยเพื่อให้สายลอดเข้าได้
- ฝาเป็นดีไซน์ snap-fit และมีช่องสำหรับไขควงเพื่อใช้เปิด
- เครื่องหมายด้านบนเป็นแบบจมลงไป จึงสามารถแต่งด้วยสีเทียนหรือวัสดุอื่นเพื่อเพิ่มความคอนทราสต์ได้ (หรือจะปล่อยไว้แบบเดิมก็ได้)
รายการวัสดุ
- Raspberry Pi Pico 2 ตัว, ADuM1201BRZ 1 ตัว, Cap 1206 SMD 100nF 2 ตัว, คอนเน็กเตอร์ USB-A PCB 2 ตัว, Headers 2.54 1x03 2 ตัว
- ราคารวม: 11.53 ยูโร
- คอนเน็กเตอร์ USB-A สามารถใช้ Molex MX-67643-0910 หรือทางเลือกที่ถูกกว่าซึ่งมีขนาดเท่ากันได้
- ขั้นตอนเพิ่มเติม: ผลิต PCB (มี Gerber ให้, JLC ผลิตได้ในราคาไม่กี่ดอลลาร์, เลือกความหนา 1.6mm), พิมพ์เคส 3D (มีไฟล์
stlให้, ใช้ฟิลาเมนต์ประมาณ 33 กรัม)
FAQ
- ถ้ามีแค่ Pico สองตัวโดยไม่มี PCB และ isolator จะใช้งานได้ไหม?
- แนะนำให้มี isolator แต่ถึงไม่มีก็อาจใช้งานได้
- ถ้าความละเอียดของจอไม่เท่ากันจะเกิดอะไรขึ้น?
- การเคลื่อนที่ของเมาส์ทำในพื้นที่พิกัดเชิงนามธรรม และคอมพิวเตอร์จะคำนวณการแมปกับหน้าจอจริงเอง ดังนั้นควรทำงานได้ไม่มีปัญหา
- ซื้อผลิตภัณฑ์นี้ได้ที่ไหน?
- ไม่มีการวางจำหน่าย และเป็นโปรเจกต์งานอดิเรกส่วนตัวที่ไม่ใช่เชิงพาณิชย์
- เมื่อหน้าจอที่ active ด้วยเมาส์เปลี่ยน คีย์บอร์ดจะย้ายตามไปด้วยหรือไม่ (และในทางกลับกันด้วยหรือไม่)?
- ใช่ ถูกออกแบบมาให้ทำงานเหมือนเป็นคอมพิวเตอร์เครื่องเดียว
- ใช้งานร่วมกับคอมโบดองเกิลคีย์บอร์ด/เมาส์ เช่น Logitech Unifying Receiver ได้หรือไม่?
- ในเวอร์ชันปัจจุบัน ใช้งานไม่ได้ เพราะสมมติว่าเมาส์เชื่อมต่ออยู่คนละพอร์ต จำเป็นต้องศึกษาการทำงานของ Logitech Unifying Receiver และเพิ่มการรองรับ
- ใช้งานร่วมกับเมาส์และคีย์บอร์ดไร้สายที่มีรีซีฟเวอร์แยกกันได้หรือไม่?
- ยังไม่ได้ทดสอบกรณีนี้ จึงอาจมีปัญหาที่ไม่คาดคิดเกิดขึ้นได้ แต่ในทางทฤษฎีควรใช้งานได้ทันที
ข้อเสีย
- ข้อควรทราบ: หากจะใช้ฟีเจอร์นี้ คอมพิวเตอร์ทั้งสองเครื่องต้องเชื่อมต่อและเปิดอยู่ (เพราะแต่ละบอร์ดรับไฟจากคอมพิวเตอร์ที่ต่ออยู่)
- ยังต้องมีการจัดระเบียบโค้ด, รีแฟกเตอร์ และอื่น ๆ
- มีบั๊กและพฤติกรรมแปลก ๆ เกิดขึ้นเป็นครั้งคราว
- ยังไม่ได้ทดสอบกับอุปกรณ์หลากหลาย จึงไม่ทราบว่าจะทำงานกับฮาร์ดแวร์ของผู้ใช้ได้อย่างไร
- Pico-PIO-USB ถูกแพตช์เพื่อรองรับการควบคุม LED ของคีย์บอร์ด ซึ่งตามปกติแล้วในโหมด host จะถูกจัดการโดย TinyUSB
ข้อจำกัดความรับผิดชอบ
- ผู้ที่ทดลองทำโปรเจกต์นี้ต้องเข้าใจและยอมรับว่าผู้สร้างจะไม่รับผิดชอบต่อการบาดเจ็บ ความเสียหาย หรือผลลัพธ์อื่นใดทั้งหมด
- ความปลอดภัยเป็นสิ่งสำคัญ จึงควรใช้มาตรการป้องกันที่จำเป็นและรับผิดชอบต่อความปลอดภัยของตนเองตลอดทั้งโปรเจกต์
- ระวังไฟดูด แผลไหม้ ความเครียด หรืออารมณ์เสีย และขอให้ทำอย่างสนุกและเพลิดเพลิน
GN⁺ ความเห็น:
- บทความนี้อาจมีประโยชน์มากสำหรับผู้ที่ใช้คอมพิวเตอร์สองเครื่อง โดยเฉพาะผู้ใช้ที่ต้องการแชร์คีย์บอร์ดและเมาส์ชุดเดียวเพื่อเพิ่มประสิทธิภาพการทำงาน
- ความเป็นโอเพนซอร์สและแนวทางแบบ DIY ทำให้เป็นโปรเจกต์ที่น่าสนใจสำหรับผู้ที่สนใจเทคโนโลยี ผู้ใช้สามารถปรับแต่งและพัฒนาระบบให้เหมาะกับความต้องการของตนเองได้
- โปรเจกต์นี้แสดงให้เห็นถึงจิตวิญญาณแห่งนวัตกรรมของชุมชนในการแก้ปัญหาทางเทคนิค เมื่อผู้ใช้ลงมือแก้ปัญหาด้วยตนเองและแบ่งปันกระบวนการ ก็ทำให้ผู้อื่นได้รับประโยชน์ไปด้วย
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
น่าสนใจตรงที่สามารถตรวจจับขอบหน้าจอได้โดยไม่ต้องมีซอฟต์แวร์ฝั่งไคลเอนต์
ใช้โซลูชันซอฟต์แวร์ชื่อ Synergy มานานกว่าสิบปีแล้ว สลับได้ทันทีผ่าน Wi-Fi และใช้งานข้าม Windows/Mac/Linux ได้ด้วย
เวลาพยายามเลื่อนสไลเดอร์ใน YouTube ไปยังตำแหน่งที่ต้องการให้แม่น เมาส์มักไวเกินไปจนต้องขยับมืออย่างระมัดระวังมาก
บน Windows สามารถใช้เครื่องมือชื่อ Mouse Without Borders ที่พัฒนาโดย Microsoft Garage และตอนนี้เป็นส่วนหนึ่งของ Windows PowerToys ได้
ได้แรงบันดาลใจจากโปรเจ็กต์คล้ายกันอื่น ๆ เลยทำเวอร์ชันของตัวเองขึ้นมา
เคยซื้อ USB hub มา 4 ตัวเพื่อสลับคีย์บอร์ดกับเมาส์ แต่ส่วนใหญ่แย่มากจนต้องถอดเสียบฮับใหม่จริง ๆ วันละหลายรอบ
หนึ่งในเรื่องที่น่าหงุดหงิดมากคือการใช้ USB 3.0 switch เพื่อสลับอินพุตเมาส์และคีย์บอร์ดระหว่าง PC สองเครื่อง
ตอนนี้ใช้ KVM switch อยู่ และเพราะการสลับใช้เวลา 2-3 วินาที เลยเลือก SSH เข้าอีกเครื่องแล้วใช้ tmux session แทนเป็นส่วนใหญ่
นี่เป็นพัฒนาการที่ยอดเยี่ยม
Synergy แก้ปัญหานี้ได้ดีด้วยซอฟต์แวร์ล้วน ๆ ไม่ฟรีและไม่ใช่โอเพนซอร์ส แต่ราคาค่อนข้างย่อมเยา