هل سبق لك أن لاحظت كيف ، في عالم التكنولوجيا المجنون ، هناك دائمًا مشروع صغير ملتوي يحاول حل مشكلة بحيث يكون منافسيها الوحيدون مفك البراغي الأيسر وساعة إنذار مختبئ ذاتيًا؟
أستخدم جهاز كمبيوتر مختلفان في سير العمل اليومي ومشاركة زوج مفتاح واحد/ماوس بينهما. جعلني تجربة العديد من صناديق تبديل USB الموجودة على Amazon أدرك أنها جميعًا تعاني من مشكلات مماثلة - يستغرق التبديل بعض الوقت ، والعملية خرقاء للغاية عند محاولة العثور على الزر وبصراحة ، لا تتحسن مع مرور الوقت.
كل ما أردته هو وسيلة لاستخدام اختصار لوحة المفاتيح لتبديل المخرجات بسرعة ، مقترنة بالقدرة على القيام بنفس الشيء من خلال تحريك مؤشر الماوس بطريقة سحرية بين الشاشات. يمكّنك هذا المشروع من القيام بالأمرين ، حتى لو كانت أجهزة الكمبيوتر الخاصة بك تعمل على أنظمة تشغيل مختلفة!
يعمل الجهاز كوسيط بين لوحة المفاتيح/الماوس والكمبيوتر ، وإنشاء وصيانة الاتصالات مع كلا الكمبيوترين في وقت واحد. ثم يختار مكان إعادة توجيه ماوس وضغط المفاتيح ، اعتمادًا على اختيارك. تتبع لوحة المفاتيح الماوس والعكس بالعكس ، لذا فإن سحب الماوس إلى سطح المكتب الآخر سيتبديل كليهما.
للحصول على مؤشر الماوس للقفز بطريقة سحرية ، تم تغيير واصف تقرير HID للماوس لاستخدام الإحداثيات المطلقة ، ثم تتراكم تقارير الماوس (التي لا تزال في حركات نسبية) داخليًا ، مع الحفاظ على الحصيلة الدقيقة في هذا المنصب.
عندما تحاول مغادرة منطقة الشاشة في اتجاه الشاشة الأخرى ، فإنها تحافظ على إحداثيات Y ومبادلة الحد الأقصى X لأحد الحد الأدنى X ، ثم يقلب المخرجات. هذا يضمن أن المؤشر يظهر بسلاسة في نفس الارتفاع على الشاشة الأخرى ، مما يعزز تصور الانتقال السلس.

يؤدي سحب الماوس من MAC إلى Linux تلقائيًا إلى تبديل المخرجات.
يحدث التبديل الفعلي في اللحظة التي يتوقف فيها أحد السهم عن التحرك ويبدأ الآخر.
بمثابة مضيف USB والاستعلام عن لوحة المفاتيح بشكل دوري ، فإنه يبحث عن مفتاح hotkeary تم تكوينه في تقرير HID (عادةً ما يكون قفل CTRL + CAPS بالنسبة لي). عند العثور عليها ، سيتم توجيه جميع الشخصيات اللاحقة إلى الإخراج الآخر.
للحصول على إشارة مرئية التي تستخدمها في أي لحظة معينة ، يمكنك إعادة تعيين مصابيح LED لوحة المفاتيح وجعلها تقدم التعليقات اللازمة.
كما يتذكر حالة LED لكل جهاز كمبيوتر ، بحيث يمكنك التقاط كيفية تركها بالضبط.

لتجنب عدم تطابق الإصدار ومسائل المسار المبلغ عنها عند البناء ، وكذلك لإنقاذك من الاضطرار إلى تنزيل SDK كبير ، يحدد المشروع الآن الحد الأدنى من Pico SDK و TinyUSB.
على أنظمة Debian/Ubuntu ، تأكد من تثبيت هذه:
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential
يجب أن تكون قادرًا على البناء عن طريق التشغيل:
cmake -S . -B build
cmake --build build
بالإضافة إلى ذلك ، لإعادة بناء واجهة المستخدم على الويب ، تحقق من WebConfig/ وتنفيذ ./render.py ، ستحتاج إلى تثبيت Jinja2.
لإعادة بناء القرص ، تحقق من القرص/ المجلد وتشغيله ./create.sh ، تعديل نظامك إذا لزم الأمر. ستحتاج إلى dosfstools (لتوفير MKDOSFS) ،
بدلاً من ذلك ، يمكنك استخدام الصور المدمجة مسبقًا. منذ الإصدار 0.6 لا يوجد سوى صورة عالمية واحدة. تحتاج إلى ملف .uf2 الذي تقوم ببساطة بنسخه إلى الجهاز في إحدى الطرق التالية:
الخيار 1 - (البرامج الثابتة 0.6 وما بعدها) ضع الجهاز في "وضع التكوين" عن طريق الضغط في وقت واحد على Ctrl + Right Shift + C + O. الجهاز الذي يتم توصيل لوحة المفاتيح الخاصة بك سوف يعيد تشغيله ويتحول إلى محرك أقراص USB يسمى "Deskhop". كل ما عليك فعله هو نسخ ملف .uf2 إليه. بمجرد التحقق من الصورة ، سيومض الجهاز وإعادة تشغيله ، ثم تابع ترقية اللوحة الأخرى. خلال هذه العملية ، سوف تومض LED. بمجرد الانتهاء من ذلك ، ستكتب فلاش وإعادة التشغيل ، وإكمال العملية.
ملاحظة - هذا ليس محرك أقراص USB عام فعلي ، لا يمكنك استخدامه لنسخ الملفات إليه.
الخيار 2 - باستخدام ROM Bootloader - امسك الزر الموجود على متن الطائرة أثناء توصيل كل PICO ونسخ UF2 إلى محرك أقراص فلاش الذي يظهر. الصور في وقت لاحق من 0.6 دعم الضغط على الزر دون الاضطرار إلى التناوب حول مصدر الطاقة ، ولكن يجب أن يعمل "زر الحجز أثناء التوصيل" دائمًا ، بغض النظر عن حالة الجهاز.
من أي وقت مضى حاول نقل شريط التمرير الخاص بـ YT إلى وضع معين ، لكن الماوس يتحرك بشكل كبير وفجأة تحرك يدك ببراعة كما لو كنت في الخامسة ولعب "العملية" مرة أخرى؟
اضغط على اليمين Ctrl + alt الأيمن لتبديل وضع البطيء الماوس. سوف يتباطأ مؤشر الماوس بشكل كبير ، مما يتيح لك أن ينجز العمل الدقيق الدقيق ولا يزال يتحرك الماوس بشكل طبيعي عن طريق الضغط بسرعة على نفس المفاتيح مرة أخرى.
إذا كنت ترغب في قفل نفسك على شاشة واحدة ، فاستخدم RIGHT CTRL + K سيؤكد هذا أنك لن تترك شاشتك الحالية عن طريق الخطأ. لإيقاف تشغيل ، اضغط على نفس التحرير والسرد المفتاح مرة أخرى.
يمكنك قفل كلا الكمبيوتر في وقت واحد باستخدام RIGHT CTRL + L . للاستفادة من هذه الميزة ، قم أولاً بإعداد نظام التشغيل لكل إخراج في التكوين (نظرًا لأن الاختصارات مختلفة).
إذا كنت تلعب ألعابًا ، فهناك فرصة قد لا تعمل لعبتك بشكل صحيح مع وضع الماوس المطلق. لمعالجة هذه المشكلة ، يتم تقديم وضع ألعاب ، تم تبديله بواسطة LEFT CTRL + RIGHT SHIFT + G عندما تكون في وضع الألعاب ، تكون مغلقًا على الشاشة الحالية ويتصرف الماوس مثل الماوس النسبي القياسي. هذا يجب أن يصلح أيضًا العديد من مشكلات الجهاز الظاهري ، وهي أنظمة التشغيل غير المدعومة حاليًا وما إلى ذلك.
من المفترض أن تكون مدمجة لمنع دخول الكمبيوتر ، ولكن يتم إخبار الحقيقة - من الممتع مشاهدة. بشكل افتراضي ، سيجعل مؤشر الماوس الخاص بك يرتد حول الشاشة مثل كرة بونغ. عند تمكينه ، يتم تنشيطه بعد فترة من عدم النشاط المحدد في رأس تكوين المستخدم ويتم إيقاف تشغيله تلقائيًا بمجرد إرسال أي إخراج نحو تلك الشاشة.
مثال على الاستخدام المحتمل - لدي رصيف USB عربات التي تجرها الدواب التي لن تستأنف الفيديو من الاستعداد ، لذا فإن عدم السماح له بالنوم يمكن أن يكون حلًا مفيدًا.
تعتمد الدائرة على لوحين من Raspberry Pi Pico ، تم اختيارهما لأنها رخيصة (4.10 € / PC) ، يمكن أن تكون لحام يدويًا ويحصل معظم الموردين على مخزونها.
يتم توصيل PICOs باستخدام UART وفصلها عن طريق الأجهزة التناظرية ADUM1201 عزل رقمي مزدوج القناة (~ 3 €) أو TI ISO7721DR أرخص بكثير وأسرع ومتوافق مع دبوس (~ 1.5 €) وهو الخيار المفضل.
على الرغم من أنهم عادة لا يحصلون على دعم لـ Dual USB ، بفضل مشروع مدهش حيث يتم تنفيذ USB باستخدام معالج IO القابل للبرمجة الموجود في RP2040 ، هناك دعم له للعمل كمضيف وجهاز USB.
للحفاظ على الأمور بسيطة قدر الإمكان للبناء DIY ، تم الاحتفاظ بالآثار على جانب واحد وعدد الأجزاء المحفوظة إلى الحد الأدنى.

يجب أن تكون الخطوط التفاضلية USB D+/D متطابقة في الطول ، لكنها غير متناظرة قليلاً عن الغرض لمواجهة اختلاف الطول على آثار GPIO المقابلة Pico PCB نفسها ، لذلك يجب أن تتطابق الأطوال الإجمالية.
تهدف ZD (المعاوقة التفاضلية) إلى 90 أوم (تمكنت من الحصول على ~ 107 ، قريبة بما فيه الكفاية :)).
تم تصميم السُمك ليكون 1.6 مم للاضطراب للعمل كما هو متوقع.
هناك نسختان من PCB (لا توجد اختلافات كبيرة للمستخدم). Original (v1.0) أسهل في اللحام والتجميع ، بينما يقدم V1.1 بعض الترقيات مثل:
هذا الإصدار أكثر صعوبة قليلاً في تسليم اللحام بسبب قمع الجهد العابر الصغير IC و 0805 ، لكنه قابل للتنفيذ تمامًا. يمكن حذف أجهزة التلفزيون من الناحية النظرية (غير المشورة) وستظل تعمل.
القادم - اللوحة مع RP2040s التي لا تحتاج إلى Picos ، أصغر وأكثر ملاءمة.
بما أنني لست جيدًا جدًا مع 3D ، فإن القضية بسيطة وواسعة ولكنها تقوم بالمهمة. يجب أن يكون من السهل الطباعة ، ويستخدم ~ 33 جم من الشعيرة ويستغرق بضع ساعات.
تتم مواجهة حركات ثنائي الفينيل متعدد الكلور الأفقي عن طريق الأوتاد المنزلق عبر الثقوب والحركات الرأسية عن طريق العروات المذهلة على الجانبين - لا توجد مسامير مطلوبة. أعطيت العلبة إعادة تصميم طفيفة لإظهار الشعار واثنين من العروات الإضافية الملائمة ، لذلك يوفر ختم أفضل.
يتم تعويض موصلات USB الصغيرة على كلا اللوحين من جانب العلبة ، لذلك يجب أن تسمح الثقوب الأكبر قليلاً للوصول إلى الكابلات.
الغطاء من تصميم ملاءمة ، مع فتحة مفك البراغي للفتح. يتم راحة العلامات الموجودة في الأعلى ويمكن الانتهاء منها باستخدام ملون EG لإعطاء تباين أفضل (أو ببساطة ترك كما هو).

| عنصر | كتي | سعر الوحدة / € | السعر / € |
|---|---|---|---|
| التوت بي بيكو | 2 | 4.10 | 8.20 |
| ADUM1201BRZ | 1 | 2.59 | 2.59 |
| CAP 1206 SMD 100NF | 2 | 0.09 | 0.18 |
| USB-A PCB Conn. | 2 | 0.20 | 0.40 |
| الرؤوس 2.54 1x03 | 2 | 0.08 | 0.16 |
| المجموع | 11.53 |
يمكن استخدام Ti ISO7721DR بدلاً من ADUM - إنه متوافق مع دبوس ، وأرخص بكثير وبمواصفات أفضل.
| عنصر | جزء | كتي | سعر الوحدة / € | السعر / € |
|---|---|---|---|---|
| U1 ، U2 | التوت بي بيكو | 2 | 4.10 | 8.20 |
| J1 ، J4 | USB-A PCB Conn. | 2 | 0.20 | 0.40 |
| U4 | TI ISO7721DR | 1 | 1.40 | 1.40 |
| ( أو ADUM1201BRZ) | ||||
| C1 ، C2 | CAP 0805 SMD 100NF | 2 | 0.09 | 0.18 |
| R1 ، R2 ، R3 ، R4 | الدقة 0805 SMD 27OHM | 4 | 0.03 | 0.12 |
| U3 ، U5 | TPD4E1U06DBVR | 2 | 0.31 | 0.62 |
| C3 ، C4 | CAP 4.7UF SMD 0805 | 2 | 0.07 | 0.14 |
| J2 ، J3 | الرؤوس 2.54 1x03 | 2 | 0.08 | 0.16 |
| المجموع | 11.22 |
يمكن أن يكون موصل USB-A MOLEX MX-67643-0910 أو موصلًا أرخص/ميزانية يشترك في نفس الأبعاد.
خطوات إضافية:
إذا كان لديك بعض الخبرة مع الإلكترونيات ، فلن تحتاج إلى ذلك. ومع ذلك ، قد لا يساعد بعضكم ، وفي هذه الحالة قد يساعد هذا الفيديو في إرشادك خلال العملية. يرجى ملاحظة ، بعد اللحام يجب عليك تنظيف التدفق من ثنائي الفينيل متعدد الكلور لمنع التآكل.
العملية القياسية للقيام بذلك هي استخدام كحول الأيزوبروبيل وفرشاة أسنان قديمة. لكن خمن ماذا؟ أنا لا أضع فرشاة الأسنان القديمة على الإنترنت ، لذلك سيتعين عليك فقط الارتجال هذا الجزء :)

[ملاحظة] يغطي دليل تجميع الفيديو PCB V1.0. النسخة المنقحة متشابهة للغاية والإجراء هو نفسه في الأساس.
تكوين
Left ShiftLeft Ctrl + Right Shift + C + O - أدخل وضع التكوينRight Shift + F12 + D - إزالة تكوين الفلاشRight Shift + F12 + Y - حفظ إزاحة مفتاح الشاشةالاستخدام
Right CTRL + Right ALT - تبديل وضع الماوس أبطأRight CTRL + K - قفل/فتح سطح المكتب الماوسRight CTRL + L - قفل كلا المخرجين مرة واحدة (اضبط OUTPUT OS من قبل ، انظر الاختصارات أدناه)Left ShiftLeft CTRL + Right Shift + G - Toggle Gaming Mode (Lock to Screen ، يعمل كماوس قياسي)Left CTRL + Right Shift + S - تمكين شاشة الشاشةLeft CTRL + Right Shift + X - تعطيل شاشة الشاشةLeft CTRL + Caps Lock - التبديل بين المخرجاتملاحظة: لا ترسل بعض لوحات المفاتيح كلتا التحولات في نفس الوقت بشكل صحيح ، ولهذا السبب تم تغيير الاختصار - للعمل من أجل الجميع. يعتذر عن الارتباك.
هذه الخطوة غير مطلوبة ، ولكن يمكن أن تكون مفيدة إذا لم تكن شاشاتك محاذاة أو تختلف في الحجم تمامًا. الهدف هو أن يخرج مؤشر الماوس بنفس الطول تمامًا.

ما عليك سوى إيقاف الماوس على الشاشة الأكبر في ذروة الشاشة الأصغر/السفلية (مصورة) واضغط على Right Shift + F12 + Y يجب أن تومض LED (وقفل القبعات) في التأكيد.
كرر الحدود السفلية (إذا كان فوق حدود الشاشة الأكبر). سيتم حفظ هذا للفلاش ويجب أن يحافظ على قيمة المعايرة هذه من الآن فصاعدًا.
تواجه Windows و Mac مشكلات مع شاشات متعددة وتحديد المواقع المطلقة ، لذلك هناك حاجة إلى حلول (لا تزال تجريبية). هناك حل أفضل قيد الإنشاء ، ولكن يجب عليك الآن تعيين نظام التشغيل لكل مخرج وعدد الشاشات.
يجب أن تكون شاشاتك الرئيسية في الشاشة (الشاشة) المتوسطة والثانوية على الحواف. لتكوين الخيارات الفعلية ، افتح صفحة تكوين الويب لجهازك.

بدءًا من FW 0.6 ، يتم تقديم وضع تكوين محسّن. لتكوين جهازك ، اتبع هذه التعليمات:


س: لماذا لا تنشئ ببساطة صفحة ويب لطيفة على الإنترنت مثل VIA بدلاً من التعامل مع شيء محرك USB الغريب؟ ج: تحميل جافا سكريبت من موقع عشوائي عبر الإنترنت يتفاعل مع أجهزة الإدخال الخاصة بك هو خطر أمان محتمل. صفحة ويب التكوين محلية فقط ولا يتم تحميل أي شيء خارجيًا.
س: الكروم على Linux لا يعمل. ج: ربما تحتاج إلى تعديل /ديف أذونات أو إنشاء ملف قواعد UDEV المقابل والتأكد من أن المستخدم الخاص بك في المجموعة الصحيحة ، مثل ذلك:
/etc/udev/rules.d/99-deskhop.rules
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="c000", GROUP="plugdev", MODE="0660"
يرجى ملاحظة أن صفحة ويب التكوين ليست "غريبة" بسبب تعويضات متعمدة - إنها تحلل ذاتيًا بسبب التخزين المحدود للغاية. المصدر بأكمله مفتوح 100 ٪ وجزء من هذا الريبو. نشجعك على إعادة بناء كل شيء بنفسك.
عندما تقوم بتوصيل طرفية USB جديدة ، ستقوم اللوحة بميض LED مرتين ، وتوجيه اللوحة الأخرى إلى فعل الشيء نفسه. وبهذه الطريقة يمكنك اختبار ما إذا كان USB والاتصال الصادر يعمل لكل لوحة.
قم بهذا الاختبار عن طريق توصيل لوحة المفاتيح أولاً على جانب واحد ثم على الجانب الآخر. إذا كان كل شيء على ما يرام ، فسيومض مصابيح LED بسرعة ذهابًا وإيابًا في كلتا الحالتين.
بعض الميزات مفقودة عن قصد ، على الرغم من أنها ستجعل الجهاز أسهل في الاستخدام أو أبسط تكوينه. فيما يلي انهيار سريع لهذه القرارات:
لا يزال هذا لا يضمن أي شيء ، لكنني أعتقد أنه يصنع مجموعة معقولة من القواعد الأساسية للحفاظ على سلامتك ومحمية.
بالتأكيد. يوصى بوجود عزل ولكن يجب أن يعمل بدونه.
تتم حركة الماوس في مساحة إحداثيات مجردة ويكتشف الكمبيوتر الخاص بك كيف يتوافق ذلك مع الشاشة الفعلية ، لذلك يجب أن تعمل فقط.
أنا لا أبيع أي شيء ، هذا مجرد مشروع هواية شخصي وغير تجاري.
[تحديث] يبدو أنه يمكنك طلب ذلك في Qty من 1 (بالنسبة إلى PCB أو PCB المجمعة أو جهاز تم تجميعه بالكامل) من Elecrow إذا اتبعت هذا الرابط كما ذكر المستخدمون ، فستصل لوحتك فارغة وعليك كتابة البرامج الثابتة بنفسك.
[Update2] - لم أطلب من Elecrow أي شيء ، ولكن قبل يومين عرضوا رعاية المشروع بميزانية صغيرة سيتم استخدامها في النماذج الأولية للوحة المستقبلية. نظرًا لأن هدفي هو إنشاء لوحة أفضل مع أكثر من مخرجتين وما إلى ذلك ، أعتقد أن خدمات النماذج الأولية قد تكون مفيدة للمشروع.
نعم ، كانت الفكرة هي جعلها تتصرف كما لو كانت جهاز كمبيوتر واحد.
يجب أن تعمل. بعد تحديث FW حديثًا ، يجب أن يكون دعم مستقبلات التحرير والسرد أفضل بكثير.
يجب أن تعمل - جربت الماوس اللاسلكي Anker مع جهاز استقبال منفصل وكان يعمل بشكل جيد.
تحقق من wiki استكشاف الأخطاء وإصلاحها التي قد تحتوي على بعض الإجابات.
هناك العديد من بدائل البرمجيات التي يمكنك استخدامها إذا كان ذلك يعمل في موقفك الخاص.
إذن ، ما هي الصفقة مع كل الحماس؟ لا أصدق ذلك - من فضلك اسمح لي أن أشكركم جميعًا! لم أتوقع مطلقًا هذا النوع من الاهتمام بمشروع شخصي بسيط ، وبالتالي فإن الميزات الأولية أساسية (تمامًا مثل مهارات الطهي الخاصة بي) وغالبًا ما تغطي موقع usecase الخاص بي. ترقبوا تحديثات البرامج الثابتة التي يجب أن تجلب توافقًا أوسع للأجهزة ، والمزيد من الميزات والأخطاء الأقل. نظرًا لأن هذا مشروع هواية ، فأنا أقدر فهمك لكونك مقيدًا بالوقت وأعد ببذل قصارى جهدي.
الميزات المخطط لها:
العمل على إصدار Lite الذي يوفر الوظائف الأساسية مع لوحة Pico W واحدة فقط ، مما يؤدي إلى خفض التكلفة بشكل أكبر وتمكينك من تجربتها حتى مع عدم وجود أجهزة مضافة أو ثنائي الفينيل متعدد الكلور.
يجب أن يعمل استطلاع الماوس الآن على 1000 هرتز (الانخفاضات في الرسم البياني هي ذراعي تؤلمني من كل الحركة :-)):

أنا لا أفعل هذا من أجل الربح أو أي سبب آخر باستثناء محاولة مساعدة الناس من خلال إنشاء بيئة عمل أفضل للجميع. إذا كنت ترغب في دعم المشروع بشكل أكبر ، فيرجى التفكير في تقديم تبرع صغير تجاه مؤسسة خيرية مثل الأطباء بدون حدود .
واسمحوا لي أن أشكر كل من ساعد أو يفكر في ذلك!
أرجو أن أطلب من أي شخص يحاول بناء هذا المشروع يفهم ويعترف بأنني لست مسؤولاً عن أي إصابات أو أضرار أو عواقب أخرى. سلامتك مهمة ، وأشجعك على التعامل مع هذا المشروع بعناية ، واتخاذ الاحتياطات اللازمة وتوافق المسؤولية الشخصية عن رفاهك طوال العملية. من فضلك لا تتعرض للكهرباء أو المحترقة أو الإجهاد أو الغضب. استمتع واستمتع!
مفتاح سعيد!