- DeskHop एक open source hardware प्रोजेक्ट है, जो तब उपयोगी है जब दो कंप्यूटर एक ही keyboard/mouse साझा करते हैं और बटन वाले USB switch की जगह shortcut keys और mouse pointer movement से इनपुट target को तेज़ी से बदला जा सके
- यह डिवाइस keyboard/mouse और दो कंप्यूटरों के बीच USB Host/Device की भूमिका निभाती है, दोनों ओर का connection एक साथ बनाए रखती है, और चुने गए output पर mouse movement और key input भेजती है
- mouse switching के लिए HID report descriptor को absolute coordinates में बदला जाता है और अंदरूनी तौर पर relative movement को accumulate किया जाता है, ताकि screen boundary पार करने पर cursor दूसरी कंप्यूटर screen पर उसी ऊंचाई पर दिखाई दे
- प्रमुख विशेषताओं में लगभग बिना महसूस होने वाली latency, किसी software installation की ज़रूरत नहीं, Linux/macOS/Windows support, 15€ से कम लागत वाले parts, 3D printed case, और outputs के बीच galvanic isolation शामिल हैं
- सीमाएं भी स्पष्ट हैं: Windows 10 KB5003637 के बाद multi-screen absolute coordinates की समस्या है, macOS multi-screen के लिए experimental workaround चाहिए, और advanced keyboards, ज़्यादा buttons वाले mouse, तथा विभिन्न devices के साथ compatibility की गारंटी नहीं है
दो कंप्यूटरों के बीच तेज़ी से आने-जाने वाला hardware switch
- DeskHop की शुरुआत उस उपयोग-परिदृश्य से हुई, जहां उपयोगकर्ता रोज़ दो कंप्यूटर चलाते हैं और एक ही keyboard/mouse साझा करना चाहते हैं
- इसका उद्देश्य पारंपरिक USB switching box की उस समस्या को हल करना है जिसमें switch होने में समय लगता है और button ढूंढना असुविधाजनक होता है
- वांछित व्यवहार दो तरह का है
- keyboard shortcut से output switch करना
- mouse pointer को monitors के बीच खींचने पर automatic switch करना
- इसे अलग-अलग operating systems वाले कंप्यूटरों के बीच भी काम करने के लिए design किया गया है
- User Manual उपलब्ध है
मुख्य फीचर्स
- पूरी तरह मुफ़्त open source है और Open Source Hardware certification प्राप्त है
- switching के समय महसूस होने वाली latency नहीं के बराबर है
- mouse pointer को कंप्यूटरों के बीच खींचकर ले जाया जा सकता है
- कंप्यूटर पर कोई अतिरिक्त software install नहीं करना पड़ता
- parts की लागत 15€ से कम बताई गई है
- 3D print होने योग्य snap-fit case का उपयोग करता है
- outputs के बीच पूर्ण galvanic isolation प्रदान करता है
- Linux, macOS, Windows पर काम करता है
यह कैसे काम करता है
- यह डिवाइस keyboard/mouse और कंप्यूटर के बीच मध्यस्थ डिवाइस की तरह काम करती है
- यह दोनों कंप्यूटरों के साथ connection एक साथ स्थापित और बनाए रखती है
- वर्तमान selection state के आधार पर तय करती है कि mouse movement और key input किस कंप्यूटर को भेजना है
- keyboard mouse का अनुसरण करता है, और mouse भी keyboard switching state का अनुसरण करता है
- mouse को दूसरे desktop पर खींचने पर keyboard input target भी साथ बदल जाता है
mouse switching का implementation
- mouse cursor के screens के बीच जाने का एहसास देने के लिए HID report descriptor को absolute coordinates मोड में बदला जाता है
- वास्तविक mouse reports अब भी relative movement के रूप में आते हैं, और डिवाइस अंदर इन्हें accumulate करके current position संभालती है
- जब cursor दूसरी monitor दिशा में current screen area से बाहर जाने लगता है, तो Y coordinate को बनाए रखते हुए X coordinate को उल्टी boundary पर बदला जाता है और output switch कर दिया जाता है
- इससे cursor दूसरी कंप्यूटर screen पर उसी ऊंचाई पर दिखाई देता है और switching स्वाभाविक लगती है
- वास्तविक switch उस क्षण होता है जब एक ओर का pointer रुकता है और दूसरी ओर का pointer चलना शुरू करता है
keyboard switching और LED state
- डिवाइस USB Host के रूप में काम करते हुए keyboard को समय-समय पर poll करती है
- HID report में पहले से configured shortcut मिलने पर उसके बाद के characters दूसरे output को भेजे जाते हैं
- उदाहरण:
Ctrl + Caps Lock
- उदाहरण:
- कौन सा output सक्रिय है, यह दिखाने के लिए keyboard LED का पुन: उपयोग किया जा सकता है
- यह हर कंप्यूटर की LED state याद रखती है, इसलिए पिछली स्थिति को जारी रखा जा सकता है
build और firmware update
- version mismatch और path समस्या कम करने तथा बड़े SDK download से बचने के लिए minimal pico sdk और tinyusb साथ में शामिल हैं
- Debian/Ubuntu पर
build-essential,cmake,gcc-arm-none-eabi,libnewlib-arm-none-eabi,python3install होना चाहिए - default build निम्न commands से किया जाता है
cmake -S . -B buildcmake --build build
- Docker के जरिए reproducible build भी उपलब्ध है
docker-compose -f misc/docker.yml run --rm build_container
- pre-built images भी इस्तेमाल किए जा सकते हैं
- version 0.6 से एक single universal image उपलब्ध है
.uf2file को डिवाइस में copy करके उपयोग किया जाता है
firmware upgrade का तरीका
- Option 1: firmware 0.6 या उससे ऊपर में
left ctrl + right shift + c + oसे config mode में प्रवेश किया जाता है- keyboard से जुड़ी ओर वाला डिवाइस reboot होकर
DESKHOPनाम की USB drive के रूप में दिखता है .uf2file copy करने पर image verification के बाद flash और reboot होता है, फिर दूसरी board का upgrade भी जारी रहता है- यह drive सामान्य USB storage device नहीं है, इसलिए इसे file copy के सामान्य उपयोग के लिए नहीं लिया जा सकता
- keyboard से जुड़ी ओर वाला डिवाइस reboot होकर
- Option 2: ROM bootloader का उपयोग करके हर Pico की board button दबाए रखते हुए उसे connect करें और दिखाई देने वाली flash drive में
.uf2copy करें - Option 3: debug build में
DH_DEBUG_CDC_FLASH=ONके साथ build किया गया हो, तो CDC serial command से bootloader mode में जाया जा सकता हैecho -n 'flash' > /dev/tty.usbmodem11104
अतिरिक्त फीचर्स
-
Mouse slowdown
right CTRL + right ALTसे slow mouse mode toggle होता है- जब बहुत सटीक position adjustment चाहिए हो, तब pointer speed काफ़ी कम हो जाती है
-
Switch Lock
RIGHT CTRL + Kसे current screen पर lock किया जा सकता है- इससे गलती से दूसरी screen पर जाने से बचा जा सकता है
-
Lock Both Screens
RIGHT CTRL + Lसे दोनों कंप्यूटर एक साथ lock किए जा सकते हैं- इसके लिए हर output का operating system configure करना होता है
-
Gaming Mode
LEFT CTRL + RIGHT SHIFT + Gसे toggle होता है- इसमें current screen पर lock हो जाता है और mouse standard relative coordinate mouse की तरह काम करता है
- यह उन games, virtual machines, या अभी unsupported operating systems की समस्याओं के लिए है जो absolute mouse mode के साथ ठीक नहीं चलते
-
Screensaver
- default रूप से बंद रहता है
- enable करने पर inactivity के बाद mouse pointer Pong ball की तरह screen पर उछलता रहता है
- उस screen पर input भेजते ही यह अपने आप बंद हो जाता है
hardware configuration
- schematic दो Raspberry Pi Pico boards पर आधारित है
- Pico को इसलिए चुना गया क्योंकि यह लगभग 4.10€ प्रति unit सस्ता है, हाथ से solder किया जा सकता है, और आसानी से उपलब्ध है
- दोनों Pico UART से जुड़े होते हैं
- दोनों sides को digital isolator से अलग किया गया है
- Analog Devices
ADuM1201लगभग 3€ - TI
ISO7721DRलगभग 1.5€ है, और यह सस्ता, तेज़, तथा pin-compatible होने के कारण पसंद किया गया है
- Analog Devices
- RP2040 मूल रूप से dual USB support नहीं करता, लेकिन Pico-PIO-USB के जरिए PIO पर USB implement करके यह USB Host और Device दोनों भूमिकाएं निभाता है
PCB और case
- DIY assembly आसान बनाने के लिए PCB traces को एक तरफ रखा गया है और parts की संख्या कम की गई है
- USB D+/D- differential lines सिद्धांततः समान लंबाई की होनी चाहिए, लेकिन Pico PCB की GPIO trace length difference की भरपाई के लिए इन्हें जानबूझकर थोड़ा asymmetric बनाया गया है
- differential impedance target 90Ω है और व्यवहार में लगभग 107Ω हासिल किया गया है
- PCB thickness snap-fit case के अनुरूप 1.6mm रखी गई है
- PCB v1.1 में v1.0 की तुलना में ये additions हैं
- ESD protection
TPD4E1U06DBVR - keyboard/mouse connector के लिए VBUS capacitors
- silkscreen direction markers
- pre-soldered header वाले clone boards के लिए holes और बेहतर alignment
- USB 27Ω resistors
- ESD protection
- v1.1 में छोटे TVS IC और 0805 resistors के कारण hand-soldering थोड़ी कठिन है
- case case में उपलब्ध है, लगभग 33g filament उपयोग करता है, और कुछ घंटों में print किया जा सकता है
- यह बिना screws के snap-fit structure से बंद होता है, और lid में screwdriver से खोलने के लिए slot दिया गया है
लागत और parts
- PCB v1.1 BOM की कुल लागत 11.22€ बताई गई है
- मुख्य parts ये हैं
- Raspberry Pi Pico 2 units: 8.20€
- USB-A PCB connectors 2 units: 0.40€
- TI ISO7721DR 1 unit: 1.40€
- 100nF capacitors 2 units: 0.18€
- 27Ω resistors 4 units: 0.12€
- TPD4E1U06DBVR 2 units: 0.62€
- 4.7uF capacitors 2 units: 0.14€
- 2.54mm 1x03 headers 2 units: 0.16€
- इसके अलावा PCB fabrication की ज़रूरत है और Gerber उपलब्ध है
- 3D printing के लिए STL files भी उपलब्ध हैं
shortcut keys और settings
- firmware 0.68 या उससे ऊपर के लिए मुख्य shortcuts ये हैं
Left Ctrl + Right Shift + C + O: config mode में प्रवेशRight Shift + F12 + D: flash settings हटाएंRight Shift + F12 + Y: screen switching offset save करेंRight CTRL + Right ALT: slow mouse mode toggleRight CTRL + K: mouse desktop switching lock/unlockRight CTRL + L: दोनों outputs एक साथ lockLeft CTRL + Right Shift + G: gaming mode toggleLeft CTRL + Right Shift + S: screensaver enableLeft CTRL + Right Shift + X: screensaver disableLeft CTRL + Caps Lock: output switch
- कुछ keyboards दोनों Shift को एक साथ सही तरह नहीं भेजते, इसलिए shortcut बदले गए
web configuration mode
- firmware 0.6 से बेहतर configuration mode जोड़ा गया है
Left Ctrl + Right Shift + C + Oदबाने पर डिवाइस reboot होकर settings mode में जाती हैDESKHOPनाम की USB drive दिखती है, जिसके अंदरconfig.htmनाम की एक file होती है- इस file को Chromium या Chrome में खोलना चाहिए
- Firefox WebHID implementation से बचता है, इसलिए फिलहाल supported नहीं है
- connection की अनुमति देने के बाद options set करके save करने पर वे डिवाइस में लिख दिए जाते हैं
- online settings page के बजाय local file method का उपयोग इसलिए किया गया है क्योंकि input devices के साथ interact करने वाली JavaScript को किसी मनमानी online location से load करना संभावित security risk हो सकता है
- storage space limitation के कारण settings web page self-extracting format में है, और पूरा source repository में शामिल है
security और safety design
- systems के बीच copy/paste या information sharing feature नहीं है
- यह information leakage रोकने के लिए जानबूझकर रखी गई सीमा है
- output computer से आने वाले incoming connections नहीं होते
- अपवाद सिर्फ standard keyboard LED on/off messages हैं, जो 1-byte data तक सीमित हैं
- output computer से firmware upgrade trigger नहीं किया जा सकता
- केवल विशेष keyboard shortcut के जरिए स्पष्ट user action की अनुमति है
- connected keyboard/mouse के custom endpoints expose नहीं किए जाते और न ही उनकी जानकारी डिवाइस की ओर भेजी जाती है
- input records store नहीं किए जाते
- डिवाइस अपने आप key inputs generate नहीं करती
- केवल वही output होता है जिसे user ने input किया या trigger किया
- outputs physically isolated हैं और कम से कम 2kV isolation voltage वाली galvanic isolation का उपयोग होता है
- devices के बीच packets fixed length के हैं, और भेजे जाने वाले configuration options एक छोटी सूची तक सीमित हैं
- Bluetooth, Wi-Fi, networking, या internet access नहीं है
- connected computers को किसी भी स्थिति में trusted entity नहीं माना जाता
- configuration mode inactivity के बाद अपने आप बंद हो जाती है
- code binary blobs के बिना open source के रूप में उपलब्ध है
FAQ और compatibility
- PCB और isolator के बिना सिर्फ दो Pico से भी यह चल सकता है, लेकिन isolator का उपयोग recommended है
- अलग monitor resolutions पर भी mouse movement abstract coordinate space में process होता है और कंप्यूटर इसे physical screen पर map करता है, इसलिए इसे काम करना चाहिए
- यह बिक्री के लिए commercial product नहीं है, बल्कि एक व्यक्तिगत non-commercial hobby project है
- Elecrow पर PCB, assembled PCB, और complete device को single-unit मात्रा में order करने की update है
- user reports के अनुसार board खाली स्थिति में आता है और firmware खुद flash करना पड़ता है
- Logitech Unifying जैसे keyboard/mouse combo dongles को हालिया firmware update के बाद बेहतर support मिला है
- अलग wireless receiver वाले wireless mouse और keyboard, Anker wireless mouse test में सही काम करते हैं
- build समस्याओं के लिए Troubleshooting Wiki देखी जा सकती है
software alternatives
- Barrier: मुफ़्त, open source
- Input Leap: मुफ़्त, open source
- Synergy: commercial
- Mouse Without Borders: मुफ़्त, केवल Windows
- Universal Control: Apple feature
ज्ञात सीमाएं और योजनाएं
- Windows 10
KB5003637के बाद HID absolute coordinates behavior टूट गया है, इसलिए Windows पर 1 से अधिक screens का उपयोग नहीं किया जा सकता- mouse main screen पर ही रहता है, experimental workaround मौजूद है, और बेहतर workaround विकसित किया जा रहा है
- code को cleanup और refactoring की ज़रूरत है
- विभिन्न devices पर पर्याप्त testing नहीं हुई है, इसलिए hardware के अनुसार यह तुरंत काम न भी करे
- knobs, extra buttons, और sliders वाले advanced keyboards में वे अतिरिक्त hardware features काम नहीं कर सकते
- बहुत अधिक buttons वाले आधुनिक mouse में कुछ buttons अपेक्षित रूप से काम नहीं कर सकते
- यह तभी काम करता है जब दोनों कंप्यूटर जुड़े हों और USB power दे रहे हों
- क्योंकि हर board उस कंप्यूटर से power लेती है जिससे वह जुड़ी है
- macOS में 2 या अधिक screens पर समस्या है, और नवीनतम firmware इसके लिए experimental workaround देता है
- planned features में Windows/macOS multi-screen workaround सुधार, transparent/gaming mode, 2 से अधिक outputs support, settings UI सुधार आदि शामिल हैं
- केवल single Pico W board पर बुनियादी फीचर्स देने वाला lite version भी बनाया जा रहा है
- mouse polling फिलहाल 1000Hz तक काम कर सकती है
1 टिप्पणियां
Hacker News की राय
क्लाइंट सॉफ़्टवेयर के बिना स्क्रीन के किनारे को detect कर पाना अच्छा लगा
माउस कर्सर को स्वाभाविक रूप से पार जाने देने के लिए mouse HID report descriptor को absolute coordinates में बदलते हैं, और वास्तव में relative movement के रूप में आने वाली mouse reports को अंदर ही accumulate करके सटीक position बनाए रखते हैं
इसलिए यह clipboard फीचर और client software के बिना synergykm / Barrier की तरह काम करता है
उदाहरण के लिए automation script या ऐसे game जिनमें कर्सर को स्क्रीन के बीच में lock किया जाता है
YouTube में अलग hardware के बिना भी
,और.keys से वीडियो को frame-by-frame आगे-पीछे किया जा सकता हैtouch interface में बारीक चयन slider से करना वाकई बहुत खराब है
पहले किसने शुरू किया, यह नहीं पता, लेकिन मैंने इसे mpv में जाना और YouTube पर संयोग से दबाया तो यह काम कर गया
Windows में Microsoft Garage द्वारा बनाया गया और अब Windows PowerToys में शामिल Mouse Without Borders इस्तेमाल किया जा सकता है
लिंक:
https://www.microsoft.com/en-us/garage/profiles/mouse-without-borders
https://github.com/microsoft/PowerToys
लेकिन अभी देखा तो इसका maintenance बंद हो चुका है, और इसका उत्तराधिकारी Input Leap है
https://github.com/debauchee/barrier
https://github.com/input-leap/input-leap
खासकर कंप्यूटरों के बीच files को drag-and-drop करके copy करना आसान हो जाता है
Keyboard और mouse switch करने के लिए मैंने 4 USB hubs खरीदे, लेकिन ज़्यादातर device इतने खराब हैं कि बहुत झुंझलाहट होती है
दिन में कई बार hub को physically unplug और replug करना पड़ता है, और webcam या USB mic जोड़ दें तो स्थिति और खराब हो जाती है
मैं Synergy अच्छी तरह इस्तेमाल कर रहा हूँ, लेकिन webcam, mic, audio तक को ठीक से संभाल सके और keyboard shortcut से सिर्फ़ connected devices के set को move कर सके, ऐसा ढंग का KVM चाहिए
KVM users को निश्चित रूप से पर्याप्त support नहीं मिल रहा है
हर DisplayPort input के साथ USB ports जुड़े होते हैं, और USB-C peripherals, display input और काफ़ी ठीक power output तक संभालता है
डेस्क पर लगे छोटे switch से इसे बदला जाता है, और जिन input को दिखाया नहीं जा रहा उन पर भी monitor connected दिखता रहता है, इसलिए Windows को दोबारा rearrange करते हुए blink नहीं करना पड़ता और switching कहीं ज़्यादा तेज़ और smooth होती है
यह आम use case जैसा लगता है, इसलिए अफ़सोस है
पहले dock में भी निकाला जा सकता है, लेकिन मैं जो monitor resolution इस्तेमाल करता हूँ वह ऊँची है, इसलिए ज़्यादातर docks पर बोझ पड़ता है या वे सिर्फ़ 30Hz support करते हैं
Mac को एक Thunderbolt 4 cable से, और PC को HDMI 2.1 तथा USB3 10Gbps से upstream जोड़ा जाता है
monitor से ethernet और keyboard/mouse जुड़े हैं, और shortcut या monitor OSD से सही device पर switch हो जाता है
PIP फीचर से दोनों devices को एक साथ भी देखा जा सकता है
इसकी सीमा बस यह है कि इसमें केवल USB 2 host controller है, इसलिए कुछ high-speed devices जैसे webcam को switch करना मुश्किल होता है
अगर Apple products मिलाने हों, तो Apple को MST पसंद नहीं है, इसलिए display के दो channels अलग रखने के लिए Mac पर physical USB3 cables दो लगानी पड़ती हैं
files जल्दी transfer करने के लिए मैं USB drive लगाकर इस्तेमाल करता हूँ, और अगर device USB power पर चलता है तो आमतौर पर काम कर जाता है
USB 3+, DP आदि वाले मॉडल चुनें तो महंगे हैं, लेकिन सिर्फ़ USB switching वाले सस्ते मॉडल भी हैं
हालांकि एक बड़ी कमी यह है कि special keys वाले कुछ mouse और keyboard 100% काम नहीं करते हैं
मैं इस काम के लिए Synergy को 10 साल से ज़्यादा समय से इस्तेमाल कर रहा हूँ
https://symless.com/synergy है, तेज़ है, Wi‑Fi पर भी तुरंत switch हो जाता है, और Windows/Mac/Linux तीनों को support करता है
इनमें बाद वाले दो free open source हैं, और Synergy में devices के बीच boundaries configure करने का तरीका अच्छा है
लेकिन अच्छा होता अगर कोई भी solution custom monitor layout को ठीक से support करता
मेरे setup में monitors एक सीध में नहीं हैं, और हर monitor अलग-अलग device पर independently switch हो सकता है, इसलिए अगर monitor-wise और device-wise boundaries तय की जा सकतीं तो कमाल होता, लेकिन software या hardware किसी में भी ऐसा दिखता नहीं
मैंने हाल ही में Synergy से पूछा तो उन्होंने कहा कि यह एक popular feature request है और roadmap में है, उम्मीद है जल्दी आएगा
पहले computer में login करने की ज़रूरत नहीं होती, और screen edge पार करके या key combination से switch किया जा सकता है
जुड़े हुए USB devices को भी keyboard और mouse से अलग independently switch किया जा सकता है
ऐसे products को boundless, borderless, roaming KM switch भी कहा जाता है
https://www.cdw.com/product/siig-4-port-roaming-km-switch-wi...
मेरे अनुभव में यह Synergy से काफ़ी बेहतर चला
मैं तब इस पर switch हुआ जब Synergy developers ने कई साल पुराने bugs पर प्रतिक्रिया देना बंद कर दिया और वह मेरे लिए इस्तेमाल लायक नहीं रहा
उदाहरण: https://github.com/symless/synergy-core/issues/5992
कमी यह है कि 1 साल बाद भी updates पाने हों तो “maintenance renewal” करना पड़ता है, लेकिन मैंने अभी renew नहीं किया है और फिर भी इसे अच्छी तरह इस्तेमाल कर रहा हूँ
जाँचने पर पता चला कि setup 4~5 साल से बिना किसी समस्या के चल रहा था, और paid software में यह काफ़ी value-for-money है
security हर चीज़ में default और free होनी चाहिए; यह luxury नहीं, minimum requirement है
फिर भी, अगर इस्तेमाल करके ठीक लगा तो copy-paste feature की वजह से premium license लेने का सोच सकता हूँ
एक similar project https://github.com/jfedor2/screen-hopper से प्रेरित होकर बनाया गया एक project है
मेरे बनाए version में दो programs हैं
एक Linux desktop पर चलता है, Linux input subsystem evdev के input events सुनता है, और एक खास key दबाने पर सारे events consume करके USB serial के ज़रिए RPI Pico को भेज देता है
दोबारा दबाने पर यह passive listening mode में लौट आता है
RPI Pico serial से मिले Linux evdev events को USB HID events में बदलकर दूसरे Windows PC को भेजता है
नतीजा यह होता है कि Linux PC और किसी भी OS चलाने वाले PC के बीच तुरंत switch होने वाला KM switch बन जाता है
wiring की फोटो: https://ibb.co/m0zhzgz
मैंने एक और Pico को USB serial adapter की तरह इस्तेमाल किया, और hardware beginner होने के नाते सिर्फ 2 तारों की ज़रूरत पड़ना बहुत राहत की बात थी
दोनों programs 100 lines से कम के थे, और Linux evdev को सुनने वाले Rust crates और Python packages बहुत हैं
Pico side भी एक बड़े switch statement वाले loop जैसा ही है, और USB HID events भेजने के लिए Rust crate मौजूद है
COBS इस्तेमाल करें तो framing की चिंता के बिना serial पर भेजा जा सकता है
USB serial bug की वजह से मैंने आखिरकार इसे open source नहीं किया, क्योंकि disconnect होने के बाद यह Linux desktop पर ठीक से reconnect नहीं होता था
यह Linux की वजह से था या Pico की, पता नहीं, और क्योंकि मैं cable निकालता नहीं हूँ, इसलिए अभी भी बिना समस्या के इस्तेमाल कर रहा हूँ
मैं FPS games बहुत खेलता हूँ, इसलिए absolute coordinate feature जानबूझकर नहीं रखा, और switch key को mouse के side button से bind कर दिया ताकि keyboard को छुए बिना systems बदले जा सकें
मुझे screen-hopper project के बारे में कल ही पता चला, और लगा जैसे उस theory की पुष्टि हो गई कि आप जो भी बनाने की सोचें, कोई ज़्यादा होशियार इंसान उसे पहले ही और बेहतर बना चुका होता है
मैं गेम बिल्कुल नहीं खेलता, इसलिए absolute coordinates मेरे लिए ठीक हैं, लेकिन इसे configurable बनाने की entry to-do list में है
इससे कोई उस bug को पैदा करने वाली बारीकियों में उतरने के लिए nerd-sniped हो सकता है
जैसा है वैसा source यहाँ है: https://github.com/null-dev/picokvm
USB 3.0 switch से दो PCs के बीच mouse और keyboard input बदलना मेरी बड़ी परेशानियों में से एक था
जब Teams meeting में मुझे ज़्यादा बोलना नहीं होता था और कोई मेरा नाम पुकार देता या message भेज देता, तो Teams खुले हुए PC पर input वापस ले जाने के लिए button ढूँढते हुए घबराहट होती थी
मैंने सोचा था कि ESP32 या Rpi Pico W और कुछ photocouplers को USB switch के button pins से जोड़कर एक HTTP endpoint expose किया जाए, फिर AutoHotkey script और shortcut key से दोनों devices के input toggle किए जाएँ
लेकिन अभी कौन-सा input active है, यह पता लगाने का तरीका समझ नहीं आया, इसलिए छोड़ दिया; यह solution पसंद आया
कंपनी से मिला मेरा Logitech headset cable पर volume, call end, और mute buttons देता है, इसलिए multitasking करते समय unmute करना काफ़ी आसान हो जाता है
Synergy इस उपयोग को pure software से अच्छी तरह संभालता है
यह मुफ़्त या open source नहीं है, लेकिन काफ़ी सस्ता है
https://symless.com/synergy
दोनों open source हैं
[0] https://github.com/debauchee/barrier
[1] https://github.com/input-leap/input-leap
1.9 version से fork हुआ एक open source fork भी है: https://github.com/debauchee/barrier#what-is-it
उदाहरण के लिए, अगर आप macOS host इस्तेमाल करते हैं, तो Windows/Linux clients पर cursor position की गणना में macOS acceleration curve का उपयोग होता है, लेकिन असली cursor movement में नहीं
इसलिए host के पास वाली Windows screen के एक-तिहाई हिस्से में काम करने की कोशिश करते समय अनजाने में फिर वापस चले जाते हैं
लगता है सभी solutions सिर्फ desktop OS पर ही काम करते हैं
इन तकनीकों में एक भी चीज़ स्थिर नहीं है, और Synergy ने कई बार जुड़े हुए keyboard तक को फ्रीज़ कर दिया, जिससे कंप्यूटर को power cycle करने पर ही वह फिर responsive हुआ
यह सचमुच कमाल का है
कम से कम 20 साल से left-to-right Linux-Mac-Windows boxes वाले desktop setup का उपयोग करने वाले व्यक्ति के नज़रिए से तो खासकर ऐसा लगता है
अगर programming languages में multilingual fluency होती है, तो hardware में multi-platform setup होता है
अच्छी बात यह है कि पिछले कुछ सालों में system on chip (SoC) designs बढ़ने से यह और आसान हो गया है
मौजूदा setup में Shenzhen से आए $250 के Ryzen SoC Mac mini clones के 2 units और एक M1 MBP हैं
अफ़सोस यह है कि Synergy जैसे कभी मज़बूत रहे open source KVM solutions की दुनिया forks के recursive nightmare में बदल गई है, इसलिए ऐसा multi-platform open source software KVM ढूँढना मुश्किल हो गया है जो मुफ़्त में ठीक से काम करे
अभी तो आखिरकार पुराना KVM switch ही इस्तेमाल कर रहा हूँ, लेकिन button दबाना ध्यान भंग करता है
कभी न कभी इसे फिर से आज़माना चाहूँगा
अगर इसे commercialize करने के लिए साथ काम करने वाला कोई हो, तो मैं plastic injection molding, marketing, large-scale assembly और ज़रूरी दूसरे कामों की लागत उठाने और उन्हें संभालने के लिए तैयार हूँ
ईमेल प्रोफ़ाइल में है
मेरे लिए यह deal-breaker है
boundless, borderless, roaming KM switch खोजकर देखिए