שימוש ב-WebHID

מכשיר ממשק אנושי (HID) מקבל קלט מבן אדם או מספק פלט לגביו. הוא מתייחס גם לפרוטוקול HID, תקן לתקשורת דו-כיוונית בין מארח למכשיר שנועד לפשט את תהליך ההתקנה.

בדף הזה מתוארים היבטים של ממשק ה-API שרלוונטיים לתוספים. ב-MDN מופיעים הפרטים המלאים של WebHID API.

אפשר למצוא אפליקציה לדוגמה ל-WebHID במאגר הדוגמאות שלנו.

זמינות בתוספים

Chrome מגרסה 117 ואילך.

הרשאות

לא נדרשות הרשאות לקובץ מניפסט; עם זאת, WebHID מפעיל את תהליך הרשאת המשתמש של הדפדפן.

מניפסט

אין צורך במפתחות מניפסט ל-API הזה.

הקשרים תומכים

אפשר להשתמש ב-API הזה כמעט בכל הקשר. לא ניתן להשתמש בשיטה WebHID.requestDevice() ב-service worker של תוספים. למידע נוסף, עיין בקטע הבא.

כאשר נעשה שימוש ב-API הזה ב-Service Worker של תוסף, סשן החיבור של המכשיר משאיר את קובץ השירות פעיל.

הבדלים בין תוספים ל-Chrome

למרות ש-WebHID זמין ל-service worker של תוסף, לא ניתן לקרוא ל-Service Worker של תוסף WebHID.requestDevice(), שמחזיר הבטחה שנפתרת עם מכונת HIDDevice. כדי לעקוף את הבעיה, יש להתקשר אל requestDevice() מדף של תוסף שאינו ה-service worker של התוסף, ולשלוח הודעה ל-service worker של התוסף.

הקוד הבא בנוי לפי דפוס אופייני. הוא מבצע קריאה ל-requestDevice() כחלק מתהליך ההרשאות, שמחייב תנועה של משתמש. לאחר רכישת המכשיר, הוא שולח הודעה ל-Service Worker, שמסוגל לאחזר את המכשיר באמצעות 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();
    }
  }
});