NKRO إلى USB. المشاكل والعكازات في حلولها

مرحبا GT. في واحدة من بلدي الماضية المشاركات (على وجه الخصوص، عن لوحة المفاتيح STEELSERIES أبيكس M800) المستخدم monah_tukطرح سؤالًا مثيرًا للاهتمام في التعليقات: كيف يتم تنفيذ NKRO (تمرير مفتاح n ، والتثبيت المتزامن للعديد من المفاتيح) في لوحات مفاتيح USB. هذا السؤال أثار اهتمامي ، وعندما تعمقت قليلاً في العمق ... بشكل عام ، هناك اسطبلات أوجيان مثل تلك التي كانت هناك معلومات كافية لمنصب كامل ، وإن كان قليلاً. يبدو أن USB 2.0 ، حتى في الوضع منخفض السرعة ، يوفر نقلًا يصل إلى 1500 كيلوبت في الثانية (حوالي 185 كيلوبت / ثانية) ، ما هي مشكلة إرسال ضغطات المفاتيح؟ ولكن ليس بهذه البساطة.





لمعرفة المشاكل التي يعاني منها اتصال USB ، سيتعين علينا الخوض في التاريخ ، وقليلًا من تصميم لوحة المفاتيح.

مشاكل التمديد: الظلال


لنفترض أن لديك لوحة مفاتيح بمفاتيح 104/105 قياسية. في الحالة المثالية ، للحصول على معلومات دقيقة بنسبة 100٪ حول المفاتيح التي تم تثبيتها ، ستحتاج إلى "أسلاك" واحدة أكثر من الأزرار: 104/105 أسلاك من الأزرار ، و "أرضي" واحدة مشتركة.

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



إذا ضغطت مثلا، S و G وتريد إضافة بعض المفتاح الثالث على التوالي مختلفة، ويمكن التحكم لم تعد معرفة أي من خطوط أغلقت: في أحسن الأحوال فإنه لا كشف واحد من الثلاثة، في أسوأ الأحوال - من بالنسبة لميزات الأسلاك ، سأرسم رابعًا آخر لم تنقر عليه. هذا يسمى الظلال.

يتم التعامل مع هذا السلوك بحيل مختلفة في مجال الأسلاك: يتم تعليق المجموعات الأكثر شيوعًا على "خطوط" مختلفة ، ويتم تعيين خطوط الوظائف ، والتي غالبًا ما تكون عناصر مفاتيح الاختصار ، خطوط منفصلة. يظل التصميم بسيطًا بما فيه الكفاية ، ولكن لوحات المفاتيح غير باهظة الثمن نادرة 5 + KRO - عادة ما تكون محدودة بـ 3-4 أثناء الضغط على المفتاح.

بالإضافة إلى ذلك ، يمكن لوحدة التحكم حظر "الجيران" في الكتلة لإزالة عملية "إضافية". أي ، يمكن للوحة المفاتيح رسميًا دعم 6KRO ، والسماح بصراحة للضغط على CTRL + AWFBNM في نفس الوقت ، ولكن لا تسمح باستمرار AWSD ، مما يقتصر على تشغيل نوع WAS أو WDS.

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

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

أكثر تكلفة (غالبًا لوحات مفاتيح الألعاب أو الأعمال) تستخدم دوائر أكثر تعقيدًا ، والعديد من وحدات التحكم ، والاتصالات الفردية ، ولوحات الدوائر المطبوعة متعددة الطبقات ، بشكل عام ، طرق مختلفة تقلل أو تزيل الظلال تمامًا ، ولكنها تؤدي إلى زيادة في سعر الجهاز. اكتشفنا مشاكل الأجهزة المحتملة لـ NKRO ، وننتقل إلى مشكلات البرامج.

لوحات مفاتيح تصل إلى USB


كان الموصل المشترك الرئيسي لتوصيل لوحة المفاتيح والماوس بـ USB هو PS / 2. إليك مثل هذا الترتيب الأنيق:



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

لسوء الحظ ، كان لدى PS / 2 بعض العيوب (مثل مشاكل Plug'n'Play وموصل غير ملائم) ، وأدى انتشار USB إلى حقيقة أن الأجهزة الطرفية PS / 2 قد تم دفعها بالكامل تقريبًا خارج السوق. ومع ذلك ، هناك لوحات أم حديثة تمامًا مع USB 3.0 واثنين (!) PS / 2:


بالمناسبة ، المنافذ المدمجة ، نظرًا لميزات pinout (إمدادات الطاقة العامة ، ودبابيس مختلفة للبيانات + / البيانات في الماوس ولوحة المفاتيح) ، تسمح لك أيضًا بالاتصال كلا الجهازين من خلال منفذ واحد باستخدام محول:



مشاكل NKRO USB: يقع اللوم على USB HID


لكي تعمل لوحات مفاتيح USB قبل تحميل النظام (أي في BIOS / UEFI) ، يتم استخدام برنامج تشغيل HID القياسي ، الذي تم تطويره للحصول على أوسع دعم ممكن للوحات المفاتيح ومضيفات USB. تصف فئة USB HID الأجهزة بحيث يمكن للتطبيق القياسي لمضيف USB وأجهزة USB الاتصال دون تثبيت برامج تشغيل خاصة.

تستخدم لوحة المفاتيح القياسية (المصممة مع دعم USB HID القياسي) دفق بيانات الإخراج (الإخراج من مضيف USB) (نقطة نهاية مكدس USB) للحصول على معلومات حول حالة المؤشرات (Num / Caps / Scroll Lock) ، ودفق الإدخال (القادم من لوحة المفاتيح ، "الوارد" لمضيف USB) لإرسال معلومات حول المفاتيح التي تم الضغط عليها.

إذا اتبعت مواصفات USB HID v1.11 الأكثر صرامة ، والتي تدعم وضع تمهيد USB (وتسمح لك باستخدام لوحة مفاتيح USB للدخول إلى BIOS والعمل فيه) ، فسترسل لوحة المفاتيح مقاطعات إلى وحدة المعالجة المركزية في كل مرة يقوم فيها مضيف USB باستقصائها بغض النظر عما إذا كانت حالتها قد تغيرت أم لا. وبالتالي ، يتم "محاكاة" عمل لوحات المفاتيح PS / 2 مع الحد الأدنى من النفقات العامة.

في هذه الحالة ، تعمل لوحة المفاتيح وفقًا لمعيار USB 1.1 (أحيانًا 2.0) منخفض السرعة ، ومعدل اقتراع المنفذ هو 100 هرتز. في هذا الوضع ، يبلغ الحد الأقصى لطول الحزمة على USB 8 بايت ، ويتم إرسالها كل 10 مللي ثانية. تم حجز أحد البايتات ، بحيث تبقى 7 بايت حتى تعمل لوحة المفاتيح ، أي المبلغ يكفي لترميز الضغط على أي مفتاح تعديل وستة مفاتيح أخرى.

تبين من تعمل لوحة المفاتيح في وضع 6-KRO ، وهي قياسية لمعظم لوحات مفاتيح USB. إن القيام بأقل قدر ممكن (أحيانًا بوعي ، وأحيانًا لا ، بسبب الظلال وانحشار المفاتيح) ، أكثر - فقط في انتهاك لمواصفات USB HID.

بعد التحميل ، يمكن للنظام زيادة وتيرة الاقتراع على منفذ USB ، وتحميل برنامج تشغيل خاص يسمح ، على سبيل المثال ، بمفاتيح الوسائط المتعددة ووحدات الماكرو.

تطبيقات NKRO USB


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

الحل الثاني يأسر ببساطته وإبداعه ، ولكنه في الواقع عكاز:


شكرًا لك على لقطة الشاشة Myfeargear، لوحظ شيء من هذا القبيل لوجيتك G710 + يتم تقديم

لوحة المفاتيح ببساطة إلى النظام من قبل العديد من أجهزة HID ، لكل منها 6KRO الخاصة به. أظهر استطلاع سريع للأصدقاء يطلب منهم تحديد طراز لوحة المفاتيح وإرسال لقطة شاشة كهذه أن Logitech و A4tech و Cougar و SteelSeries يستخدمون هذا الاختراق - بشكل عام ، كل من وجد NKRO في وصف لوحات مفاتيح USB.

انتباه! قبل التحقق من لوحة المفاتيح ، تأكد من عدم وجود أي ماوس USB متطور متعدد الأزرار متصل (حتى لاسلكيًا). نظرًا لأن كل روعة الأزرار المتعددة بنفس الطريقة يمكن أن تتظاهر بأنها لوحات مفاتيح "إضافية".

استنتاج


في الواقع ، هذا كل شيء. اختارت جميع الشركات المصنعة تقريبًا طريقة "العكاز" ، ولكن الطريقة التي تعمل ولا تخلق أي مشاكل خاصة للمستخدم ، ويمكن تحقيق NKRO الصادق (حسنًا ، صريحًا نسبيًا) على USB.

Source: https://habr.com/ru/post/ar384797/


All Articles