WebHID ব্যবহার করুন

একটি হিউম্যান ইন্টারফেস ডিভাইস (HID) মানুষের কাছ থেকে ইনপুট নেয় বা আউটপুট প্রদান করে। এটি HID প্রোটোকলকেও নির্দেশ করে, একটি হোস্ট এবং একটি ডিভাইসের মধ্যে দ্বি-দিকনির্দেশক যোগাযোগের জন্য একটি মান যা ইনস্টলেশন পদ্ধতিকে সহজ করার জন্য ডিজাইন করা হয়েছে।

এই পৃষ্ঠাটি API এর দিকগুলি বর্ণনা করে যা এক্সটেনশনগুলির জন্য বিশেষ। WebHID API- এর সম্পূর্ণ বিবরণের জন্য MDN দেখুন।

আপনি আমাদের নমুনা সংগ্রহস্থলে WebHID-এর জন্য একটি নমুনা অ্যাপ খুঁজে পেতে পারেন।

এক্সটেনশনে উপলব্ধতা

Chrome 117 বা তার পরে।

অনুমতি

কোনো ম্যানিফেস্ট ফাইল অনুমতির প্রয়োজন নেই; যদিও WebHID ব্রাউজারের ব্যবহারকারীর অনুমতি প্রবাহকে ট্রিগার করে।

উদ্ভাসিত

এই API এর জন্য কোন ম্যানিফেস্ট কী প্রয়োজন নেই।

সাপোর্টিং প্রসঙ্গ

এই API প্রায় কোনো প্রসঙ্গে ব্যবহার করা যেতে পারে. WebHID.requestDevice() পদ্ধতি এক্সটেনশন পরিষেবা কর্মীদের ব্যবহার করা যাবে না। বিস্তারিত জানার জন্য পরের অধ্যায় দেখুন।

যখন এই APIটি একটি এক্সটেনশন পরিষেবা কর্মীতে ব্যবহার করা হয়, তখন ডিভাইস সংযোগ সেশন পরিষেবা কর্মীকে জীবিত রাখে৷

ক্রোম এক্সটেনশন পার্থক্য

যদিও 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();
    }
  }
});