استخدام WebHID

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

تصف هذه الصفحة جوانب واجهة برمجة التطبيقات الخاصة بالإضافات. يُرجى الرجوع إلى MDN للحصول على التفاصيل الكاملة حول WebHID API.

يمكنك العثور على نموذج تطبيق لواجهة WebHID في مستودع النماذج.

مدى التوفّر في الإضافات

الإصدار 117 من Chrome أو إصدار أحدث

الأذونات

لا يلزم توفُّر أذونات لملف البيان، ولكن يبدأ WebHID عملية الحصول على أذونات المستخدم في المتصفّح.

البيان

لا حاجة إلى مفاتيح البيان لواجهة برمجة التطبيقات هذه.

السياقات الداعمة

يمكن استخدام واجهة برمجة التطبيقات هذه في أي سياق تقريبًا. لا يمكن استخدام الطريقة WebHID.requestDevice() في عناصر الخدمة الإضافية. يُرجى الاطلاع على القسم التالي للحصول على التفاصيل.

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

الاختلافات بين إضافات Chrome

على الرغم من توفّر WebHID لمشغّلي خدمات الإضافات، لا يمكن استدعاء WebHID.requestDevice() في مشغّل خدمات الإضافة، لأنّه يعرض وعدًا يتم حلّه باستخدام مثيل HIDDevice. لحلّ هذه المشكلة، يمكنك الاتصال بالرقم requestDevice() من صفحة إضافة غير مشغّل خدمات الإضافة وإرسال رسالة إلى مشغّل خدمات الإضافة.

يتّبع الرمز البرمجي التالي نمطًا نموذجيًا من خلال استدعاء requestDevice() كجزء من عملية الحصول على الأذونات التي تتطلّب إيماءة من المستخدم. عند الحصول على الجهاز، يرسل رسالة إلى مشغّل الخدمة الذي يمكنه بعد ذلك استرداد الجهاز باستخدام getDevices().

popup.js:

myButton.addEventListener("click", async () => {
  await navigator.hid.requestDevice({
    filters: [{ vendorId: 0x1234, productId: 0x5678 }],
  });
  chrome.runtime.sendMessage("newDevice");
});

service-worker.js

chrome.runtime.onMessage.addListener(async (message) => {
  if (message === "newDevice") {
    const devices = await navigator.hid.getDevices();
    for (const device of devices) {
      // open device connection.
      await device.open();
    }
  }
});