WebHID API๋ฅผ ์ฌ์ฉํ์ฌ ์น ๋ธ๋ผ์ฐ์ ์์ ์ง์ ํด๋จผ ์ธํฐํ์ด์ค ์ฅ์น(HID)์ ์ ์ฌ๋ ฅ์ ํ์ฉํ์ธ์. ์ด ๊ฐ์ด๋๋ API, ๊ธฐ๋ฅ, ๊ตฌํ, ๋ณด์ ๊ณ ๋ ค ์ฌํญ ๋ฐ ๋ฏธ๋ ๊ฐ๋ฅ์ฑ์ ํ๊ตฌํฉ๋๋ค.
ํ๋ก ํธ์๋ WebHID API: ํด๋จผ ์ธํฐํ์ด์ค ์ฅ์น์์ ์ฐ๊ฒฐ
WebHID API๋ ํด๋จผ ์ธํฐํ์ด์ค ์ฅ์น(HID)์์ ์ง์ ์ ์ธ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค. ์ด API๋ฅผ ํตํด ์น์ฌ์ดํธ๋ ํ์ค ์น API๋ฅผ ํตํด ์ผ๋ฐ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋ ๊ด๋ฒ์ํ ์ฅ์น์ ์ํธ ์์ฉํ์ฌ ์น ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ณ ํ์ ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ฐฝ์ถํ ์ ์์ต๋๋ค. ์ด ๊ฐ์ด๋๋ WebHID API, ์ ํ๋ฆฌ์ผ์ด์ , ๊ตฌํ ์ธ๋ถ ์ ๋ณด ๋ฐ ์ค์ํ ๋ณด์ ๊ณ ๋ ค ์ฌํญ์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
WebHID๋ ๋ฌด์์ ๋๊น?
WebHID(Web Human Interface Device API)๋ ์น ํ์ด์ง๊ฐ HID ์ฅ์น์ ์ก์ธ์คํ๊ณ ์ํธ ์์ฉํ ์ ์๋๋ก ํ๋ ์น API์ ๋๋ค. HID๋ ์ธ๊ฐ์ด ์ปดํจํฐ์ ์ํธ ์์ฉํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ด๋ฒ์ํ ์ฅ์น ๋ฒ์ฃผ์ด๋ฉฐ, ๋ค์์ ํฌํจํฉ๋๋ค.
- ํค๋ณด๋
- ๋ง์ฐ์ค
- ๊ฒ์ํจ๋ ๋ฐ ์กฐ์ด์คํฑ
- ํน์ ์ ๋ ฅ ์ฅ์น(์: ๋ฐ์ฝ๋ ์ค์บ๋, ๊ณผํ ๊ธฐ๊ธฐ, ๋ง์ถคํ ์ปจํธ๋กค๋ฌ)
์ ํต์ ์ผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ฌํ ์ฅ์น์ ์ง์ ์ํธ ์์ฉํ๋ ๋ฐ ์ ํ์ด ์์์ต๋๋ค. WebHID API๋ JavaScript๋ฅผ ํตํด ์น ํ์ด์ง๊ฐ HID์ ํต์ ํ ์ ์๋ ์์ ํ๊ณ ์ ์ด๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ์ด๋ฌํ ๊ฒฉ์ฐจ๋ฅผ ํด์ํฉ๋๋ค.
WebHID๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
WebHID API๋ HID ์ฅ์น์ ์ํธ ์์ฉํ๋ ๊ธฐ์กด ๋ฐฉ๋ฒ์ ๋นํด ๋ช ๊ฐ์ง ์ฅ์ ์ ์ ๊ณตํฉ๋๋ค.
- ์ง์ ์ก์ธ์ค: ํ์ค ๋ธ๋ผ์ฐ์ API์ ์ ํ์ ์ฐํํ์ฌ ์ฅ์น์ ์ง์ ํต์ ํ ์ ์์ต๋๋ค.
- ํ์ฅ๋ ๊ธฐ๋ฅ: ํ์ค API์์ ์ธ์ํ์ง ๋ชปํ ์ ์๋ ํน์ ํ๋์จ์ด๋ฅผ ํฌํจํ์ฌ ๋ ๋์ ๋ฒ์์ ์ฅ์น๋ฅผ ์ง์ํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ์ํธ ์์ฉ: ๊ฐ๋ฐ์๊ฐ ํน์ ์ฅ์น์ ์ํธ ์์ฉํ๊ธฐ ์ํ ์ฌ์ฉ์ ์ ์ ํ๋กํ ์ฝ ๋ฐ ๋ฐ์ดํฐ ํ์์ ์ ์ํ ์ ์์ต๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ํ ๋ ํฐ ์ ์ด๋ฅผ ์ ๊ณตํ์ฌ ๋์ฑ ๋ชฐ์ ๊ฐ ์๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ญ๋๋ค.
- ํฌ๋ก์ค ํ๋ซํผ ํธํ์ฑ: WebHID๋ API๋ฅผ ์ง์ํ๋ ๋ค์ํ ์ด์ ์ฒด์ ๋ฐ ๋ธ๋ผ์ฐ์ ์์ ์ผ๊ด๋ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
WebHID ์ฌ์ฉ ์ฌ๋ก
WebHID API๋ ๋ค์ํ ์ฐ์ ๋ถ์ผ์์ ๊ด๋ฒ์ํ ์ ์ฌ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ฒ์ด๋ฐ
WebHID๋ ์น ๊ธฐ๋ฐ ๊ฒ์์ ๋ํ ๊ณ ๊ธ ๊ฒ์ํจ๋ ๋ฐ ์กฐ์ด์คํฑ ์ง์์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ๋์ฑ ์ ํํ ์ ์ด์ ๋ชฐ์ ๊ฐ ์๋ ๊ฒ์ ํ๋ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ ์ฉ ๋นํ ์คํฑ์ ์ฌ์ฉํ์ฌ ํ์ค์ ์ธ ์ ์ด๋ฅผ ์ํ ๋นํ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ์์ ํ ์คํํ๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ์ผ๋ฐ ๊ฒ์ํจ๋ ์ง์์ ๊ตญํ๋์ง ์๊ณ ์๋ฎฌ๋ ์ดํฐ๋ ๋นํ ์คํฑ์ ๊ฐ ์ถ๊ณผ ๋ฒํผ์์ ์ง์ ์ ๋ ฅ์ ์ฝ์ ์ ์์ต๋๋ค.
์ ๊ทผ์ฑ
API๋ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์น ์ฝํ ์ธ ์ ๋์ฑ ํจ๊ณผ์ ์ผ๋ก ์ํธ ์์ฉํ ์ ์๋๋ก ์ง์ํ๋ ๊ธฐ์ ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํค๋ ํธ๋์ปค ๋๋ ํก์ -ํผํ ์ค์์น์ ๊ฐ์ ํน์ ์ ๋ ฅ ์ฅ์น๋ฅผ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ ํตํฉํ์ฌ ์ฌ์ฉ์ ์ ์๋ ์ ๋ ฅ ๋ฐฉ๋ฒ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ด๋ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๋ ์น์ฌ์ดํธ๋ฅผ ํ์ํ๊ณ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋์ฑ ์ฝ๊ฒ ์ํธ ์์ฉํ ์ ์์ต๋๋ค.
๊ณผํ ๋ฐ ์ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ
WebHID๋ ๊ณผํ ๊ธฐ๊ธฐ ๋ฐ ์ฐ์ ์ฅ๋น๋ฅผ ์ ์ดํ๊ณ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํ ์น ๊ธฐ๋ฐ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฐ๊ตฌ์๊ณผ ์์ง๋์ด๋ ์๊ฒฉ ์์น์์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ๋ถ์ํ ์ ์์ต๋๋ค. ์จ๋์ ์๋ ฅ์ ์ธก์ ํ๋ ์คํ์ค ์ฅ๋น๋ฅผ ๊ณ ๋ คํด ๋ณด์ญ์์ค. WebHID๋ฅผ ์ฌ์ฉํ๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฅ๋น์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ค์๊ฐ์ผ๋ก ํ์ํ ์ ์์ผ๋ฏ๋ก ๋ก์ปฌ ์ปดํจํฐ์ ์ค์น๋ ํน์ ์ํํธ์จ์ด๊ฐ ํ์ํ์ง ์์ต๋๋ค.
๊ต์ก
WebHID๋ ์ค์ต ํ์ต์ ์ํด ํน์ ์ ๋ ฅ ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ ๋ํํ ๊ต์ก ๋๊ตฌ๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ์ ํด๋ถ ๋๊ตฌ๋ ํ ํฑ ํผ๋๋ฐฑ ์ฅ์น๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ์กฐ์ง์ ๋๋์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ํ์๋ค์๊ฒ ๋์ฑ ํ์ค์ ์ด๊ณ ๋งค๋ ฅ์ ์ธ ํ์ต ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์ ์ ํ๋์จ์ด ์ธํฐํ์ด์ค
API๋ ์น ๋ธ๋ผ์ฐ์ ์์ ์ง์ ์ฌ์ฉ์ ์ ์ ๋น๋ ํ๋์จ์ด ์ฅ์น์ ์ํธ ์์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ, ์ผ์ ๋ฐ ๊ธฐํ ์ ์ ๋ถํ๊ณผ ๊ด๋ จ๋ ํ์ ์ ์ธ ํ๋ก์ ํธ๊ฐ ๊ฐ๋ฅํด์ง๋๋ค. ๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ์ ์ฐ๊ฒฐ๋ ์ฌ์ฉ์ ์ ์ LED ์กฐ๋ช ์์คํ ์ ์ ์ดํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ํด ๋ณด์ญ์์ค. ์ ํ๋ฆฌ์ผ์ด์ ์ WebHID๋ฅผ ์ฌ์ฉํ์ฌ ๋ง์ดํฌ๋ก ์ปจํธ๋กค๋ฌ์ ๋ช ๋ น์ ๋ณด๋ด ์กฐ๋ช ์ ์์๊ณผ ๊ฐ๋๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
WebHID ์๋ ๋ฐฉ์: ๊ธฐ์ ๊ฐ์
API ๊ตฌ์กฐ
WebHID API๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ฃผ์ ์ธํฐํ์ด์ค์ ๋ฉ์๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
navigator.hid: WebHID API์ ์ง์ ์ ์ ๋๋ค.HID.requestDevice(): ์ฌ์ฉ์์๊ฒ ์ฐ๊ฒฐํ HID ์ฅ์น๋ฅผ ์ ํํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค.HIDDevice: ์ฐ๊ฒฐ๋ HID ์ฅ์น๋ฅผ ๋ํ๋ ๋๋ค.HIDDevice.open(): ์ฅ์น์ ๋ํ ์ฐ๊ฒฐ์ ์ฝ๋๋ค.HIDDevice.close(): ์ฅ์น์ ๋ํ ์ฐ๊ฒฐ์ ๋ซ์ต๋๋ค.HIDDevice.addEventListener('inputreport', ...): ์ฅ์น์์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํฉ๋๋ค.HIDDevice.sendReport(): ์ฅ์น๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ ๋๋ค.HIDDevice.sendFeatureReport(): ์ฅ์น๋ก ๊ธฐ๋ฅ ๋ณด๊ณ ์๋ฅผ ๋ณด๋ ๋๋ค.HIDDevice.getFeatureReport(): ์ฅ์น์์ ๊ธฐ๋ฅ ๋ณด๊ณ ์๋ฅผ ๊ฒ์ํฉ๋๋ค.
HID ์ฅ์น์ ์ฐ๊ฒฐ
HID ์ฅ์น์ ์ฐ๊ฒฐํ๋ ํ๋ก์ธ์ค๋ ๋ค์ ๋จ๊ณ๋ฅผ ํฌํจํฉ๋๋ค.
- ์ก์ธ์ค ์์ฒญ:
navigator.hid.requestDevice()๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉ์์๊ฒ ์ฅ์น๋ฅผ ์ ํํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค. ์ด ๋ฉ์๋๋ ๊ด์ฌ ์๋ ์ฅ์น ์ ํ์ ์ง์ ํ ์ ์๋ ์ ํ์ ํํฐ ์ธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. - ์ฅ์น ์ ํ: ๋ธ๋ผ์ฐ์ ์ ์ฅ์น ์ ํ๊ธฐ๊ฐ ํ์๋์ด ์ฌ์ฉ์๊ฐ HID ์ฅ์น๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
- ์ฐ๊ฒฐ ์ด๊ธฐ: ์ฌ์ฉ์๊ฐ ์ฅ์น๋ฅผ ์ ํํ๋ฉด
HIDDevice.open()์ ํธ์ถํ์ฌ ์ฐ๊ฒฐ์ ์ค์ ํฉ๋๋ค. - ๋ฐ์ดํฐ ์์ : ์ฅ์น์์ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ค๋ฉด
HIDDevice๊ฐ์ฒด์์'inputreport'์ด๋ฒคํธ๋ฅผ ์์ ํฉ๋๋ค. - ๋ฐ์ดํฐ ๋ณด๋ด๊ธฐ(์ ํ ์ฌํญ): ์ฅ์น๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ค๋ฉด
HIDDevice.sendReport()๋๋HIDDevice.sendFeatureReport()๋ฅผ ํธ์ถํฉ๋๋ค. - ์ฐ๊ฒฐ ๋ซ๊ธฐ: ์๋ฃ๋๋ฉด
HIDDevice.close()๋ฅผ ํธ์ถํ์ฌ ์ฐ๊ฒฐ์ ๋ซ์ต๋๋ค.
์์ ์ฝ๋ ์ค๋ํซ
HID ์ฅ์น์ ์ฐ๊ฒฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
async function connectToHIDDevice() {
try {
const devices = await navigator.hid.requestDevice({
filters: [{
usagePage: 0x0001, // Generic Desktop Controls
usage: 0x0004 // Joystick
}]
});
if (devices.length > 0) {
const device = devices[0];
device.addEventListener('inputreport', event => {
const { data, reportId } = event;
const bytes = new Uint8Array(data.buffer);
console.log(`Received data from report ${reportId}:`, bytes);
// Process the data here
});
await device.open();
console.log(`Connected to device: ${device.productName}`);
} else {
console.log('No HID devices selected.');
}
} catch (error) {
console.error('Error connecting to HID device:', error);
}
}
connectToHIDDevice();
๋ณด์ ๊ณ ๋ ค ์ฌํญ
๋ณด์์ WebHID API์ ์ค์ํ ์ธก๋ฉด์ ๋๋ค. API๋ ํ๋์จ์ด์ ๋ํ ์ง์ ์ก์ธ์ค๋ฅผ ํ์ฉํ๋ฏ๋ก ์ ์ฑ ์ฝ๋๊ฐ ์ทจ์ฝ์ ์ ์ ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ณด์ ์กฐ์น๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ์ฌ์ฉ์ ๊ถํ: API๋ ์น์ฌ์ดํธ๊ฐ HID ์ฅ์น์ ์ก์ธ์คํ๊ธฐ ์ ์ ๋ช ์์ ์ธ ์ฌ์ฉ์ ๊ถํ์ ์๊ตฌํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์ ์ฅ์น ์ ํ๊ธฐ๊ฐ ํ์๋์ด ์ฌ์ฉ์๊ฐ ์ฐ๊ฒฐํ ์ฅ์น๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
- HTTPS๋ง: WebHID API๋ ๋ณด์(HTTPS) ์ฐ๊ฒฐ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์ค๊ฐ์ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- Origin ๊ฒฉ๋ฆฌ: API๋ ๋์ผ ์ถ์ฒ ์ ์ฑ ์ ์ ์ฉ์ ๋ฐ์ ๋ค๋ฅธ ๋๋ฉ์ธ์ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ํํฉ๋๋ค.
- ์ ๋ ฅ ์ญ์ : ์ฃผ์ ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด HID ์ฅ์น์์ ์์ ํ ์ ๋ ฅ์ ํญ์ ์ญ์ ํฉ๋๋ค.
- ์ต์ ๊ถํ: ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ํน์ HID ์ฅ์น ๋ฐ ๊ธฐ๋ฅ์ ๋ํ ์ก์ธ์ค๋ง ์์ฒญํฉ๋๋ค.
- ์ ๊ธฐ ์ ๋ฐ์ดํธ: ์ต์ ๋ณด์ ํจ์น๋ฅผ ํ๋ณดํ๋ ค๋ฉด ๋ธ๋ผ์ฐ์ ์ ์ด์ ์ฒด์ ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ์ญ์์ค.
WebHID ๊ฐ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด ๊ฐ๋ ฅํ๊ณ ์ฌ์ฉ์ ์นํ์ ์ธ WebHID ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ๋ช ํํ ์ง์นจ ์ ๊ณต: ์ ํ๋ฆฌ์ผ์ด์ ์์ HID ์ฅ์น์ ์ก์ธ์คํด์ผ ํ๋ ์ด์ ์ ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์์๊ฒ ๋ช ํํ๊ฒ ์ค๋ช ํฉ๋๋ค.
- ์ค๋ฅ๋ฅผ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ: ์ฅ์น๋ฅผ ์ฐพ์ ์ ์๊ฑฐ๋ ์ฐ๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ค๋ฅ ์ฒ๋ฆฌ๋ฅผ ๊ตฌํํฉ๋๋ค.
- ์ฑ๋ฅ ์ต์ ํ: ๋๊ธฐ ์๊ฐ์ ์ต์ํํ๊ณ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๋๋ก ์ฝ๋๋ฅผ ์ต์ ํํฉ๋๋ค.
- ์ฒ ์ ํ ํ ์คํธ: ํธํ์ฑ์ ํ์ธํ๊ธฐ ์ํด ๋ค์ํ HID ์ฅ์น๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํฉ๋๋ค.
- ์ ๊ทผ์ฑ ๊ณ ๋ ค: ์ ๊ทผ์ฑ์ ์ผ๋์ ๋๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๊ณํ์ฌ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
- ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก ์ค์: ์ฌ์ฉ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณดํธํ๊ธฐ ์ํด ์์ ์ค๋ช ๋ ๋ณด์ ์ง์นจ์ ์ค์ํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ์ง์
WebHID API๋ ํ์ฌ ๋ค์ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋ฉ๋๋ค.
- Google Chrome(๋ฒ์ 89 ์ด์)
- Microsoft Edge(๋ฒ์ 89 ์ด์)
๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์ ๋ํ ์ง์์ด ๊ฐ๋ฐ ์ค์ ๋๋ค. WebHID ์ง์์ ๋ํ ์ต์ ์ ๋ณด๋ ๋ธ๋ผ์ฐ์ ์ ๊ณต์ ๋ฌธ์๋ฅผ ํ์ธํ์ญ์์ค.
WebHID์ ๋ฏธ๋
WebHID API๋ ๋น ๋ฅด๊ฒ ์งํํ๋ ๊ธฐ์ ์ด๋ฉฐ ์ ๋งํ ๋ฏธ๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ง์์ด ํ์ฅ๋๊ณ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋จ์ ๋ฐ๋ผ API๋ ์น ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๋ ๋ง์ ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค ๊ฒ์ ๋๋ค.
๋ช ๊ฐ์ง ์ ์ฌ์ ์ธ ํฅํ ๊ฐ๋ฐ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํฅ์๋ ์ฅ์น ๊ฒ์: ์ฌ์ฉ์๊ฐ HID ์ฅ์น๋ฅผ ๋ ์ฝ๊ฒ ์ฐพ๊ณ ์ฐ๊ฒฐํ ์ ์๋๋ก ์ฅ์น ์ ํ๊ธฐ๊ฐ ๊ฐ์ ๋์์ต๋๋ค.
- ํ์คํ๋ ๋ฐ์ดํฐ ํ์: ๊ฐ๋ฐ์ ๋จ์ํํ๊ณ ์ํธ ์ด์ฉ์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ์ผ๋ฐ์ ์ธ HID ์ฅ์น์ ๋ํ ํ์คํ๋ ๋ฐ์ดํฐ ํ์์ด ๊ฐ๋ฐ๋์์ต๋๋ค.
- ํฅ์๋ ๋ณด์ ๊ธฐ๋ฅ: ์ ์ฑ ์ฝ๋๋ก๋ถํฐ ์ฌ์ฉ์๋ฅผ ๋์ฑ ๋ณดํธํ๊ธฐ ์ํด ์ถ๊ฐ ๋ณด์ ์กฐ์น๊ฐ ๊ตฌํ๋์์ต๋๋ค.
- Bluetooth ์ง์: Bluetooth HID ์ฅ์น๋ฅผ ์ง์ํ๋๋ก API๊ฐ ํ์ฅ๋์์ต๋๋ค.
๊ฒฐ๋ก
WebHID API๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ฅ์ ์ค์ํ ๋ฐ์ ์ ๋๋ค. ํด๋จผ ์ธํฐํ์ด์ค ์ฅ์น์ ๋ํ ์ง์ ์ก์ธ์ค๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ API๋ ํ์ ์ ์ด๊ณ ๋ชฐ์ ๊ฐ ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ฐฝ์ถํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ์ธ๊ณ๋ฅผ ์ด์ด์ค๋๋ค. ์น ๊ธฐ๋ฐ ๊ฒ์, ์ง์ ๊ธฐ์ , ๊ณผํ ๊ธฐ๊ธฐ ๋๋ ์ฌ์ฉ์ ์ ์ ํ๋์จ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋ฐํ๋ WebHID API๋ฅผ ์ฌ์ฉํ๋ฉด ์ด์ ์๋ ๋ถ๊ฐ๋ฅํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. API, ๋ณด์ ๊ณ ๋ ค ์ฌํญ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํดํจ์ผ๋ก์จ WebHID์ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ฐจ์ธ๋ ์น ๊ฒฝํ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.