इस प्रोजेक्ट के बारे में

DeskHop एक हार्डवेयर प्रोजेक्ट है जो दो कंप्यूटरों के बीच एक ही कीबोर्ड और माउस साझा करने के लिए है। USB स्विच बॉक्स के बजाय, यह पेरिफेरल्स और दोनों मशीनों के बीच बैठता है, दोनों से एक साथ कनेक्शन बनाए रखता है और इनपुट को चुने गए आउटपुट पर भेजता है। यह कैसे काम करता है: डिवाइस कीबोर्ड/माउस के लिए USB होस्ट और प्रत्येक कंप्यूटर के लिए USB डिवाइस के रूप में कार्य करता है। माउस HID रिपोर्ट डिस्क्रिप्टर को एब्सोल्यूट कोऑर्डिनेट में बदला जाता है, जबकि आने वाली रिलेटिव मूवमेंट को स्थिति ट्रैक करने के लिए आंतरिक रूप से जमा किया जाता है। जब पॉइंटर एक स्क्रीन के किनारे पर पहुंचता है, तो Y कोऑर्डिनेट रखा जाता है और X रेंज बदल दी जाती है, जिससे कर्सर दूसरे मॉनिटर पर समान ऊंचाई पर दिखाई देता है और आउटपुट फ्लिप हो जाते हैं। एक कॉन्फ़िगर करने योग्य हॉटकी (आमतौर पर Ctrl + Caps Lock) कीबोर्ड स्विच करती है, और कीबोर्ड LED सक्रिय आउटपुट को इंगित कर सकती है; प्रति-कंप्यूटर LED स्थिति याद रखी जाती है। प्रोजेक्ट द्वारा सूचीबद्ध विशेषताएं: कोई ध्यान देने योग्य स्विचिंग देरी नहीं, कंप्यूटरों के बीच कर्सर ड्रैग, कोई सॉफ्टवेयर इंस्टॉल नहीं, लगभग 15 EUR से कम के कंपोनेंट, एक 3D-प्रिंटेबल स्नैप-फिट केस, आउटपुट के बीच पूर्ण गैल्वेनिक आइसोलेशन, और Linux, macOS और Windows के लिए समर्थन। यह प्रमाणित ओपन-सोर्स हार्डवेयर है। हार्डवेयर: दो Raspberry Pi Pico बोर्ड्स UART पर जुड़े हुए और एक डिजिटल आइसोलेटर (ADuM1201 या पिन-कम्पैटिबल TI ISO7721DR) द्वारा अलग किए गए। दोहरी USB भूमिका समर्थन Pico-PIO-USB प्रोजेक्ट से आता है। PCB v1.1 में ESD सुरक्षा, VBUS कैपेसिटर, सिल्कस्क्रीन मार्किंग और USB सीरीज रेसिस्टर्स जोड़े गए हैं; Gerber फाइलें और STL केस फाइलें प्रदान की गई हैं। एक बिल ऑफ मटेरियल्स में लगभग 11 EUR के पार्ट्स सूचीबद्ध हैं। बिल्डिंग: रिपॉजिटरी में एक न्यूनतम Pico SDK और TinyUSB बंडल है। Debian/Ubuntu पर, build-essential, cmake, gcc-arm-none-eabi, libnewlib-arm-none-eabi और python3 इंस्टॉल करें, फिर cmake कॉन्फ़िगर और बिल्ड चलाएं; पुनरुत्पादक बिल्ड के लिए Docker Compose प्रदान किया गया है। पूर्व-निर्मित .uf2 इमेज रिलीज़ में प्रकाशित होती हैं। फर्मवेयर को कॉन्फ़िग मोड में प्रवेश करके (Left Ctrl + Right Shift + C + O) अपडेट किया जा सकता है, जो DESKHOP नाम की USB ड्राइव को उजागर करता है, या ROM बूटलोडर के माध्यम से, या डिबग बिल्ड में CDC फ्लैश कमांड के माध्यम से। अतिरिक्त सुविधाओं में एक स्लो-माउस टॉगल (Right Ctrl + Right Alt), स्विच लॉक (Right Ctrl + K), दोनों आउटपुट को लॉक करना (Right Ctrl + L), एक गेमिंग मोड जो रिलेटिव माउस मूवमेंट का उपयोग करता है (Left Ctrl + Right Shift + G), और एक वैकल्पिक स्क्रीनसेवर शामिल हैं। गलत संरेखित या अलग आकार के मॉनिटर के लिए कर्सर ऊंचाई अंशांकन उपलब्ध है। एक वेब कॉन्फ़िगरेशन पेज डिवाइस से स्थानीय रूप से सर्व किया जाता है और WebHID के माध्यम से Chromium/Chrome में खोला जाता है; प्रोजेक्ट नोट करता है कि Firefox असमर्थित है। प्रति आउटपुट कई स्क्रीन के लिए OS और स्क्रीन काउंट सेट करना आवश्यक है, और इन्हें प्रयोगात्मक बताया गया है। सुरक्षा विकल्प जानबूझकर हैं: सिस्टम के बीच कोई क्लिपबोर्ड या डेटा साझा नहीं, मानक कीबोर्ड LED संदेशों से परे आउटपुट से कोई इनबाउंड कनेक्टिविटी नहीं, आउटपुट से कोई फर्मवेयर अपग्रेड ट्रिगर नहीं, कोई इनपुट इतिहास बनाए नहीं रखा जाता, डिवाइस-प्रारंभिक कीस्ट्रोक नहीं, निश्चित-लंबाई के इंटर-डिवाइस पैकेट, कोई नेटवर्किंग नहीं, और निष्क्रियता के बाद कॉन्फ़िगरेशन मोड से स्वचालित निकास। कोड पूरी तरह से ओपन है और इसमें कोई बाइनरी ब्लॉब नहीं है। ज्ञात सीमाएं: Windows 10 बिल्ड KB5003637 ने HID एब्सोल्यूट कोऑर्डिनेट तोड़ दिया, इसलिए प्रयोगात्मक वर्कअराउंड के बिना Windows पर एक से अधिक स्क्रीन समस्याग्रस्त है; macOS मल्टी-स्क्रीन समर्थन भी प्रयोगात्मक है; अतिरिक्त नियंत्रण वाले उन्नत कीबोर्ड और माउस पूरी तरह से काम नहीं कर सकते; दोनों कंप्यूटर जुड़े होने चाहिए और USB पावर की आपूर्ति करनी चाहिए; और लेखक नोट करता है कि कोड को सफाई और व्यापक डिवाइस परीक्षण की आवश्यकता है। उल्लिखित सॉफ्टवेयर विकल्पों में Barrier, Input Leap, Synergy, Mouse Without Borders और Universal Control शामिल हैं। नियोजित कार्य में बेहतर मल्टी-स्क्रीन वर्कअराउंड, एक पारदर्शी/गेमिंग मोड, दो से अधिक आउटपुट के लिए समर्थन, कॉन्फ़िगरेशन UI सुधार, और एक सिंगल-Pico "लाइट" संस्करण शामिल है।