ใช้ WebHID

อุปกรณ์อินเทอร์เฟซมนุษย์ (HID) รับอินพุตจากหรือให้เอาต์พุตแก่มนุษย์ และยังหมายถึงโปรโตคอล HID ซึ่งเป็นมาตรฐานสำหรับการสื่อสารแบบ 2 ทิศทางระหว่างโฮสต์และอุปกรณ์ที่ออกแบบมาเพื่อทำให้ขั้นตอนการติดตั้งง่ายขึ้น

หน้านี้อธิบายแง่มุมต่างๆ ของ API ที่มีไว้สำหรับส่วนขยายโดยเฉพาะ โปรดดู MDN สำหรับรายละเอียดทั้งหมดของ WebHID API

คุณสามารถค้นหาแอปตัวอย่างสำหรับ WebHID ได้ในที่เก็บตัวอย่างของเรา

ความพร้อมใช้งานในส่วนขยาย

Chrome 117 ขึ้นไป

สิทธิ์

ผู้ใช้ไม่จำเป็นต้องมีสิทธิ์เข้าถึงไฟล์ Manifest แต่ WebHID จะเรียกโฟลว์สิทธิ์ของผู้ใช้ของเบราว์เซอร์

ไฟล์ Manifest

ไม่จำเป็นต้องใช้คีย์ไฟล์ Manifest สำหรับ API นี้

บริบทสนับสนุน

อาจมีการใช้ API นี้กับเกือบทุกบริบท ใช้เมธอด WebHID.requestDevice() ในโปรแกรมทำงานของบริการส่วนขยายไม่ได้ ดูหัวข้อถัดไปสำหรับรายละเอียดเพิ่มเติม

เมื่อใช้ API นี้ในโปรแกรมทำงานของบริการส่วนขยาย เซสชันการเชื่อมต่ออุปกรณ์จะทำให้โปรแกรมทำงานของบริการยังคงอยู่

ความแตกต่างของส่วนขยาย Chrome

แม้ว่า WebHID จะพร้อมใช้งานสำหรับผู้ปฏิบัติงานบริการส่วนขยาย แต่ WebHID.requestDevice() ซึ่งแสดงผลสัญญาที่แก้ไขด้วยอินสแตนซ์ HIDDevice จะไม่สามารถเรียกใช้ในโปรแกรมทำงานของบริการส่วนขยายได้ หากต้องการแก้ไขปัญหานี้ ให้โทรหา requestDevice() จากหน้าส่วนขยายที่ไม่ใช่โปรแกรมทำงานของบริการส่วนขยาย และส่งข้อความถึงโปรแกรมทำงานของบริการส่วนขยาย

โค้ดต่อไปนี้มีรูปแบบปกติโดยการเรียก 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();
    }
  }
});