سؤال هل ترسل لوحة مفاتيح USB إشارات فقط أم أنها تستقبلها أيضًا من الكمبيوتر؟


لوحة المفاتيح لا تحتاج إلى أي إشارة من الكمبيوتر ، فقط السلطة ، أليس كذلك؟ أو هل تحتاج إلى تلقي الإشارات وكذلك إرسالها؟

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


82
2018-03-06 15:28


الأصل


مثلا قد تتلقى حالة من مفاتيح القفل. تحتوي العديد من لوحات المفاتيح على مؤشرات تشير إلى حالة مفاتيح القفل. حاول تشغيل قفل القبعات ، ثم استبدل لوحة المفاتيح ، فمن المرجح أن تظل هذه الحالة مغلقة ، يجب أن تأتي هذه المعلومات من الكمبيوتر الشخصي. - Máté Juhász
حتى لوحات المفاتيح PS / 2 تتلقى إشارات من جهاز الكمبيوتر ، وإلا كيف يمكن تشغيل / إيقاف تشغيل مؤشرات LED؟ - phuclv
Devsman لا يمكنك القيام بذلك ، وإلا فإن حالة القفل ستكون خارج المزامنة لأنه يمكن تغييرها بواسطة البرنامج. على سبيل المثال ، إذا قمت بتوصيل لوحة مفاتيح 2 واضغط numlock على هذا ، فإن مؤشر LED على الآخر سيتحول. يمكن أن يتحقق الشيء نفسه مع لوحة المفاتيح على الشاشة - phuclv
تبديل المصابيح codegolf.stackexchange.com/questions/110974/blink-the-caps-lock - Dohn Joe
يجب أن يكون جهاز USB يحتوي على بيانات ثنائية الاتجاه ، وذلك ببساطة بسبب متطلبات المصافحة الأولية لتمكين فئة الجهاز المعينة. - Steve


الأجوبة:


من "تعريف فئة الجهاز للواجهة البشرية الأجهزة (HID) "الإصدار 11.1" تخصيص:

التزامن بين الدول LED و CAPS LOCK و NUM LOCK و SCROLL   يتم الحفاظ على LOCK و COMPOSE و KANA الأحداث من قبل المضيف وليس   لوحة المفاتيح. في حالة استخدام واصف لوحة المفاتيح في الملحق ب ، تنص LED   يتم تعيين بواسطة إرسال تقرير مطلق 5 بت إلى لوحة المفاتيح عبر   Set_Report (الإخراج) طلب.

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

ومع ذلك ، هناك عملية تفاوض وتعداد مع جميع أجهزة USB التي تتطلب محادثة خلفية بين المضيف والجهاز. لا يمكن أن يكون لديك جهاز USB "للقراءة فقط".

حتى قبل USB ، فإن وحدة تحكم لوحة مفاتيح الكمبيوتر تقبل الأوامر لأنها فعلت بعض الأشياء إلى جانب قراءة لوحة المفاتيح (مرجع):

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

استخدم IBM PC AT شريحة Intel 8042 للتعامل مع لوحة المفاتيح. هذا الكمبيوتر أيضاً يتحكم في الوصول إلى خط A20 لتطبيق حل للمشكلة في رقاقة Intel 80286.1 تم استخدام وحدة تحكم لوحة المفاتيح أيضًا لبدء عملية إعادة تعيين وحدة المعالجة المركزية للبرنامج للسماح للـ CPU بالانتقال من الوضع المحمي إلى الوضع الحقيقي1 لأن 286 لم تسمح وحدة المعالجة المركزية بالانتقال من الوضع المحمي إلى الوضع الحقيقي ما لم تتم إعادة تعيين وحدة المعالجة المركزية. كانت هذه مشكلة لأنه يمكن فقط استدعاء BIOS وخدمات نظام التشغيل بواسطة البرامج في الوضع العادي.

لقد تم استخدام هذه السلوكيات بواسطة الكثير من البرامج التي تتوقع هذا السلوك ، ولذلك استمرت أجهزة التحكم بلوحة المفاتيح بالتحكم في خط A20 وأداء عمليات إعادة تعيين برامج وحدة المعالجة المركزية حتى عندما تم تجنب الحاجة إلى إعادة تعيين عبر وحدة تحكم لوحة المفاتيح من خلال قدرة Intel 80386 على التحول إلى الوضع الحقيقي من الوضع المحمي بدون إعادة تعيين CPU.


100
2018-03-06 15:34



إذا كنا نتحدث عن الأشياء على مستوى "الإشارات" ، حتى إذا نسينا التعداد و LEDs ، فإن إدخال USB يعتمد على الاقتراع. لا يمكن للجهاز إرسال البيانات إلى المضيف بشكل استباقي إلا إذا طلب المضيف ذلك. يتم فقط استجواب جهاز الإدخال بشكل متكرر جدًا لمعرفة ما إذا كان لديه أي شيء جديد للإبلاغ عنه. - Matti Virkkunen
تقصد "الإخراج فقط" أليس كذلك؟ - Daniel
لست متأكدًا من كيفية نطق كلمة tbh هذه ، بلوحة المفاتيح عبارة عن جهاز "مُدخل" ، ويعني "الإدخال فقط" أنه يرسل البيانات إلى المضيف فقط ، ولكنه لا يتلقى أبدًا. يعتمد على ما إذا كانت نقطة العرض هي لوحة المفاتيح أو المضيف. - LawrenceC
Daniel معظم الناس لن يدعوا لوحة المفاتيح جهاز "الإخراج". تكون الأجهزة الطرفية موصولة من الخارج ، لذا فنحن نقف من منظور الكمبيوتر الشخصي لنطلق عليها اسم الإدخال أو الإخراج. إنه الكمبيوتر الذي نريد استخدامه ، وليس لوحة المفاتيح أو الماوس أو الأجهزة الطرفية الأخرى - phuclv
@ LưuVĩnhPhúc أنا أعلم ، لكنه يكتب So it is not an "input-only" device (meaning it only outputs data to the host) الذي يربكني - Daniel


يتطلب أي جهاز USB بغض النظر عن فئته إجراء اتصالات ثنائية الاتجاه. كل جهاز USB (أو وظيفة من حيث المواصفات USB) يمثل مجموعة من النهاية والتي يمكن اعتبارها كمخازن تستقبل البيانات أو تستقبلها. ومع ذلك ، حتى نقاط النهاية التي لا يمكن إلا أن ترسل البيانات الانتظار للحصول على حزمة خاصة تسمى رمز قبل أن يتمكنوا من الرد: enter image description here

(صورة من هنا، ومربعات رمادية تمثل المضيف USB ، مربعات بيضاء تمثل وظيفة USB)

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


55
2018-03-06 17:13





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

بينما يبدو USB بسيطًا على السطح ، فإن أداءه أمر معقد جدًا. يجب "تعداد" أي جهاز USB جديد أولاً قبل بدء تشغيله. التسلسل كما يلي:

  1. بعد توصيل لوحة المفاتيح ، يتلقى منفذ المضيف إشارة "حالة الاتصال" (لإشارات LS ، يتم سحب D- مرتفعًا بواسطة لوحة المفاتيح).

  2. ثم يقوم المضيف بتعيين المنفذ إلى وضع "إعادة تعيين المنفذ" ، ويقوم USB PHY (برنامج تشغيل الطبقة المادية) بإرسال "USB_RESET" لأسفل خطوط D + / D- (يتم توجيه كلا الخطين LOW لفترة محددة من الوقت). يمكن أن تكون بعض المعلومات عن "إعادة تعيين المنفذ" لأجهزة FS / HS وجدت هنا.

  3. ثم يبدأ المضيف لإخراج الحزم الإطار الإطار على الفاصل الزمني 1ms. بالنسبة للأجهزة منخفضة السرعة (LS) مثل لوحة المفاتيح السلكية العادية ، هذه مجرد نبضات "تبقي على قيد الحياة" ، في حين يتم إنشاء رزم بداية التشغيل الخاصة بـ SOF الخاصة. تحافظ هذه الحزم على الجهاز في الوضع النشط وتمنعه ​​من العمل في SUSPEND منخفض الطاقة.

  4. ثم يبدأ "العد". يرسل المضيف طلبًا للحصول على واصف الجهاز. يتم إرسال الطلب إلى "الأنبوب الافتراضي" بعنوان الجهاز "0". [هناك جهاز واحد فقط في هذا الوقت - لوحة المفاتيح - نظرًا لأن جميع الأجهزة الأخرى في الحافلة يجب أن يكون لها عناوين USB المخصصة لها بشكل فردي]

  5. تقوم لوحة المفاتيح بإرجاع المعلومات المطلوبة ، بحيث يتمكن المضيف من تحديد نوع برنامج التشغيل الذي يجب تحميله.

  6. يرسل المضيف معاملة تتطلب من الجهاز تغيير عنوانه الافتراضي إلى العنوان الجديد المخصص.

  7. ثم يبدأ المضيف جولة جديدة من الاتصال مع الجهاز ، والآن في العنوان الجديد المعين. جميع الأجهزة الأخرى تتجاهل هذا الاتصال لأنه غير موجه إليها.

  8. قد يقرأ المضيف المزيد من المعلومات من العديد من الواصفات الأخرى ، وفي النهاية يختار "تكوين الجهاز". هذا يخلص عملية التعداد.

  9. بناءً على فئة جهاز USB ، يبدأ المضيف في الاتصال بالجهاز. في حالة لوحة المفاتيح ، يرسل المضيف بشكل أساسي طلب "IN" بشكل دوري ، بشكل أساسي لاستقصاء الجهاز (حتى إذا كان هذا الأنبوب الدوري يُسمى أنبوب "interrupt"). إذا كانت لوحة المفاتيح تحتوي على أي مفتاح مضغوط / مكتئب ، فستعرض لوحة المفاتيح هذه المعلومات. إذا لم يكن الأمر كذلك ، فلن يتم إرجاع أية بيانات إلى برنامج تشغيل الجهاز.

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


17
2018-03-07 18:27



If keyboard has any key pressed/depressed, the keyboard will return this information - كيف تحدث مفاتيح الأشباح بعد ذلك؟ لقد كنت تحت انطباع أن لوحات المفاتيح يجب أن ترسل أحداثًا أساسية ومفصّلة ، مما يفسر لماذا إذا ما غاب عن حدث إلقاء المفاتيح ، سيكون لديك مفاتيح أشباح ... - Shadow
@ shhadow ، لست متأكدًا مما تسأل عنه. معدل الاستطلاع الخاص بلوحة المفاتيح ، إذا كنت أذكر ، هو 8 مللي ثانية. أنت تضغط على المفاتيح بشكل غير متزامن ، بحيث يمكن لبعض الأحداث (إجراء أو فاصل) الانتقال إلى إطارات استقصاء مختلفة ، سيحدث بعض الأحداث بالضبط عندما يكون طلب IN قيد التقدم. يجب أن يتحكم جهاز التحكم في لوحة المفاتيح بشكل صحيح في جميع معابر الحدث ، ويجب ألا يكون به أحداث مفقودة. ليس لدي أي فكرة عن سبب إنشاء لوحات المفاتيح "مفاتيح أشباح" ، ولكن لا علاقة لها ببروتوكول USB. - Ale..chenski
ترتبط مفاتيح الأشباح بالطريقة التي يتم بها توصيل المفاتيح المادية. لا تملك وحدات التحكم في لوحة المفاتيح الأرخص سعراً منفردًا لكل مفتاح ، بدلاً من ذلك ، يتوفر لديهم نظام شبكة من العناوين على سبيل المثال. الصفوف والأعمدة حيث يؤكد جهاز التحكم على سلك العمود ، ويبحث عن الإشارة على سلك الصف. في هذا السيناريو ، اضغط على مفتاحين ، على سبيل المثال. قد لا يمكن تمييز E و S بشكل متزامن عن الضغط على W و D ، باستثناء التوقيت. - Ben


كما أوضحت الإجابات الأخرى ، يتطلب USB الاتصال ثنائي الاتجاه كجزء من طريقة عمله. PS / 2 ، في حين يسمح بالاتصال ثنائي الاتجاه ، لا يتطلب ذلك لإرسال مفاتيح إلى الكمبيوتر ، ولكنه يتطلب ذلك لتعيين مؤشرات LED الخاصة بلوحة المفاتيح.

نظريًا ، يمكنك إنشاء جهاز لتكرار إشارة PS / 2 وإرساله إلى كمبيوتر آخر ، وتجاهل أي أوامر من أجهزة الكمبيوتر ، بحيث تتمكن من إرسال مفاتيح الضغط إلى أجهزة كمبيوتر متعددة ولكن لم تكن مصابيح LED الخاصة بلوحة المفاتيح الرد على قفل num lock وقفل caps و حالات قفل التمرير (أو أي تغيير آخر لحالة LED ، على سبيل المثال في Linux يتم استخدام مؤشرات LED الخاصة بلوحة المفاتيح أحيانًا لأغراض بديلة).

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

أيضًا ، إذا كان هدفك هو التحكم في جهاز كمبيوتر واحد من جهاز كمبيوتر آخر ، أو جهازي كمبيوتر من نفس المكتب ، أو أيًا كان ، فقد ترغب في النظر في:

  • VNC (يسمح بالتحكم في جهاز كمبيوتر من آخر عبر شبكة)
  • RDP (يسمح أيضًا بالتحكم في جهاز كمبيوتر واحد من آخر عبر شبكة ، مضمن في Microsoft Windows ولكنه يتطلب إصدار Professional)
  • KVM (قطعة من الأجهزة التي تمكنك من تبديل مجموعة واحدة من الأجهزة الطرفية بين جهازي كمبيوتر)

2
2018-03-09 08:41





قبل لوحات مفاتيح USB ، تستخدم لوحات المفاتيح PS / 2 بروتوكولًا أكثر بساطة حيث يمكن توصيل لوحة مفاتيح واحدة بجهازين وتشغيلها. وصلة Y البسيطة هي كل ما هو مطلوب.

لا تزال لوحات مفاتيح USB القديمة تحتوي على وضع مضاهاة PS / 2 مضمّن؛ باستخدام أحد محولات الموصل الأرجواني هذه ، يتيح لك توصيله بمنفذ PS / 2 في الجزء الخلفي للكمبيوتر. لذلك ، باستخدام كابل توصيل USB / PS / 2 على جهازي كمبيوتر ، قد يعمل محول أرجواني مرة أخرى إلى لوحة مفاتيح USB.

أسقطت لوحات مفاتيح USB الحديثة وضع PS / 2 القديم ، لذا لن تعمل لهذه الحالة.


1
2018-03-10 17:28