جدول المحتويات:

لوحة مفاتيح قابلة للبرمجة: 5 خطوات (بالصور)
لوحة مفاتيح قابلة للبرمجة: 5 خطوات (بالصور)

فيديو: لوحة مفاتيح قابلة للبرمجة: 5 خطوات (بالصور)

فيديو: لوحة مفاتيح قابلة للبرمجة: 5 خطوات (بالصور)
فيديو: 32 اختصارًا سرّيًّا على لوحة المفاتيح 2024, يوليو
Anonim
لوحة مفاتيح قابلة للبرمجة
لوحة مفاتيح قابلة للبرمجة
لوحة مفاتيح قابلة للبرمجة
لوحة مفاتيح قابلة للبرمجة

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

تم اكتشاف لوحة المفاتيح هذه كلوحة مفاتيح في جميع أنظمة التشغيل الرئيسية ، ولا حاجة إلى برامج تشغيل إضافية.

اللوازم

  • التشفير الروتاري.
  • الكثير من الأزرار الانضغاطية (حسب احتياجاتك).
  • Arduino Pro Micro أو Arduino Leonardo أو أي لوحة تطوير أخرى مزودة بـ Atmega32U4 MCU.
  • سلك ، لحام ، لحام حديد ، إلخ.
  • (اختياري) بعض القواعد الثقيلة للحفاظ على لوحة المفاتيح من الانزلاق ، فأنا أستخدم محرك الأقراص الثابتة القديم مقاس 3.5 بوصة

الخطوة 1: الدائرة الكهربائية

دائرة كهربائية
دائرة كهربائية

اخترت استخدام لوحة Arduino Pro Micro dev مع Atmega32U4 MCU التي تحتوي على 18 دبابيس رقمية قابلة للاستخدام.

تم تحديد المسامير لتوصيل الأزرار الانضغاطية والمشفرة الدوارة بدون ترتيب معين ، ولكن يجب ملاحظة بعض الأشياء:

  1. تحتوي جميع المسامير القادرة على القراءة الرقمية على عمليات سحب داخلية تسمح بتخفيف مقاومات السحب الخارجية. بالطبع يجب تحديث الكود وفقًا لذلك ، لأنه يتوقع أن تنتقل حالة الدبوس من منخفض إلى مرتفع عند الضغط على أزرار الضغط.
  2. في مثال مكتبة encoder.h ، لاحظ أنه يتم الوصول إلى أفضل أداء لجهاز التشفير عندما يتم توصيل كلا المسامير المتصلة بمنافذ MCU القادرة على مقاطعة. لا تتمتع معظم المسامير التناظرية في Atmega32U4 بإمكانية المقاطعة.
  3. قيم المقاوم المنسدلة الدقيقة لا تهم كثيرًا ، أي شيء من 1 كيلو أوم إلى 100 كيلو أوم سيعمل بشكل جيد. تسمح قيم المقاومة الأكبر بتبديد أقل للطاقة ولكنها تؤدي إلى استجابة أبطأ لتغيرات الجهد. ما عليك سوى اختيار أي مقاومات ذات قيمة لديك أكثر.
  4. لا تعتبر أجهزة التشفير الميكانيكية من الأشياء الأكثر موثوقية بسبب تآكل التلامس والارتداد. لهذا السبب هناك حاجة إلى حل شطب جيد. ربما لن تقدم قيم المكثف التي اخترتها وأوقات التأخير في الكود أفضل النتائج بالنسبة لك. لذلك هناك حاجة إلى القليل من التجريب. أو قم بالتبديل إلى شيء مثل التشفير البصري ، لكن سعره أعلى بكثير.

الخطوة 2: التجميع

المجسم
المجسم
المجسم
المجسم
المجسم
المجسم
المجسم
المجسم

كنت أرغب في جعل لوحة المفاتيح تبدو نظيفة قدر الإمكان ، لذلك قمت بلحام جميع المكونات الموجودة على الجزء الخلفي من لوحة النموذج الأولي. اعتقدت أن لوحة المفاتيح ستكون أكثر راحة إذا تم استخدامها بزاوية صغيرة. لهذا السبب قمت بلحام Arduino Pro Micro على لوحة منفصلة وقمت بتوصيل جميع المسامير الرقمية بسلك لدفع الأزرار. من الأنسب توصيل كابل USB بهذه الطريقة.

لقد وجدت محرك الأقراص الثابتة القديم مقاس 3.5 بوصة لاستخدامه كقاعدة للوحة المفاتيح ، فهو ثقيل للغاية ويمنع شكل اللوحة من الانزلاق عبر المكتب عند التشغيل (تساعد الوسادات المضادة للانزلاق أيضًا). كما أنه يحتوي على فتحات لولبية مريحة مقاس 3 مم قمت فيها بربط المواضع النحاسية و ثبت اللوحة بزاوية طفيفة.

الخطوة الثالثة: البرمجة

تمت كتابة الكود باستخدام Arduino IDE. ستحتاج إلى تثبيت مكتبتين:

  • التشفير بول Stoffregen
  • لوحة المفاتيح من Arduino

لتجميع Atmega32U4 ، تحتاج أيضًا إلى تثبيت ملف لوحة Arduino Pro Micro ، لدى Sparkfun برنامج تعليمي رائع حول كيفية القيام بذلك.

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

في الحلقة الرئيسية MCU يقرأ أولاً كل حالة زر ضغط ، إذا تم اكتشاف تغيير الحالة من LOW إلى HIGH ، يتم تنفيذ وظيفة keyboard_shortcut (i). المتغير i هو معرف الزر المضغوط ، يتم تحديد إجمالي رقم زر الضغط بواسطة ALL_BUTTONS (في حالتي 15). عند التنفيذ ، ترسل keyboard_shortcut (i) CTRL + SHIFT ثم حرفًا تم تعيينه لمعرف الزر: 1-> A ، 2-> B ، 3-> C إلخ. تم حذف بعض التركيبات مثل CTRL + SHIFT + N لأنها مستخدم بالفعل في Windows10 افتراضيًا (في هذه الحالة لإنشاء مجلد جديد). فيما يلي قائمة بجميع اختصارات Windows الافتراضية. بعد تأخير قصير ، ترسل MCU إشارة لتحرير جميع المفاتيح ومخارج الوظائف إلى الحلقة الرئيسية.

بعد فحص جميع الأزرار ، يتحقق MCU من تغيير موضع المشفر الدوار وإذا حدث ذلك ، يتم تنفيذ keyboard_shortcut (i) بمعرف فريد.

الضغط على زر التشفير يعكس المتغير المنطقي encoderButtonFlag. عند تدوير برنامج التشفير ، يتم إرسال اختصار مختلف إلى جهاز الكمبيوتر ، اعتمادًا على اتجاه الدوران وقيمة encoderButtonFlag.

إذا تم تعيين debugFlag على 1 ، يتم إرسال رسائل تصحيح الأخطاء عبر UART إلى جهاز العرض التسلسلي.

الخطوة 4: تكوين الاختصارات

تكوين الاختصارات
تكوين الاختصارات
تكوين الاختصارات
تكوين الاختصارات

ما يفعله كل اختصار هو أمر متروك لك أيضًا ، فلدينا جميعًا تفضيلات مختلفة. سأقدم الاختصارات التي قمت بتكوينها لنفسي كمثال. أنا أستخدم Linux Mint 19.3 مع مدير سطح المكتب xfce4 ، لذلك تتضمن أمثلتي بشكل أساسي البرامج النصية bash ، لكنني سأعرض بعض الأمثلة الأساسية لنظام التشغيل Windows10 أيضًا.

في الصورة الأولى ، يمكنك رؤية البرامج النصية التي قمت بتعيينها إلى الاختصارات. يتم ذلك من قائمة إعدادات xfce ، عملية ذلك مباشرة إلى الأمام. يمكنك العثور على هذه البرامج النصية في مستودع GitHub الخاص بي

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

نصوص أخرى:

  • 2nd_display_control.sh - التبديل بين تشغيل / إيقاف الشاشة الثانية.
  • moon_lamp.sh - يقوم بتشغيل / إيقاف مصباح القمر الخاص بي.
  • pc_load.sh - يُنشئ فقاعة إعلام باستخدام وحدة المعالجة المركزية ووحدة معالجة الرسومات الحالية ودرجات الحرارة.
  • shutdown.sh - يقوم بتهيئة إيقاف تشغيل الكمبيوتر مع تأخير لمدة دقيقة واحدة وإنشاء فقاعة إعلام يتم فيها عرض الوقت المتبقي.
  • spec_vpn.sh - يتصل بخادم OpenVPN محدد أو في حالة وجود اتصال بالفعل ، يتم قطع الاتصال بالخادم.
  • shortcut_controll.sh - يأخذ الأمر (زائد ، ناقص ، علامة تبويب ، إغلاق) كوسيطة ، ويكتشف النافذة التي يتم التركيز عليها الآن وإذا تم العثور على تطبيق معين نشطًا ، فسيتم تنفيذ إجراء التحكم. على سبيل المثال ، لفتح علامة تبويب جديدة في محرر نصوص سامي ، يكون الاختصار الافتراضي هو "CTRL + N" وفي محطة xfce - "CTRL + T" ، لذا فإن هذا البرنامج النصي يسمح بفتح علامة تبويب جديدة في سامية ومحطة بذات زر الضغط.

تتمثل الوظيفة الأولى للمشفّر الدوار في التحكم في مستوى الصوت ، وتتمثل الوظيفة الثانية في التحكم في تكبير النافذة النشط عبر shortcut_controll.sh.

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

بعض الأمثلة البسيطة على بناء جملة AHK:

؛التحكم في مستوى الصوت

^ + t:: أرسل {Volume_Up}

إرجاع

^ + v:: أرسل {Volume_Down}

إرجاع

؛ إغلاق النافذة النشطة

^ + h:: WinGetTitle ، العنوان ، A

PostMessage ، 0x112 ، 0xF060 ، ، ،٪ Title٪

إرجاع

؛اغلق جهاز الحاسوب

^ + ب:: تشغيل الاغلاق / ثانية

الخطوة 5: التحسينات

تحسينات
تحسينات

بعض التحسينات الممكنة:

  • أزرار ضغط ذات جودة أفضل.
  • ينثني النموذج الأولي ثنائي الفينيل متعدد الكلور كثيرًا عند الضغط على الأزرار.
  • إضاءة RGB لتغيير اللون حسب الوظيفة التي تم ضبط المشفر الدوار عليها.
  • المزيد من الأزرار (استخدم IO موسع IC).
  • جهاز تشفير دوار أفضل (أو حل إزالة أفضل).

موصى به: