استخدام 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-work.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();
    }
  }
});