Skip to main content

Call control devices with WebHID Manager

Connect call control devices to synchronize call and mute states of the current meeting.

More details at


import { WebHIDManager } from 'eyeson';

if (WebHIDManager.supported) {
const manager = await WebHIDManager.initialize(); // with options: initialize({ verbose: false })

if (manager.blocked) {
// already used in another tab or window

manager.onEvent(event => {
const { type } = event;
if (type === 'devicelist') {
console.log(event.devices); // list device { id, vendorId, productId, productName }
else if (type === 'error') {
console.log(, event.message); // initialize_failed (WebHID initializing failed), pair_request_failed (Device pair request failed), invalid_device (Invalid device)
else if (type === 'togglemute') {
console.log(; // true/false
else if (type === 'togglecall') {
console.log(; // true/false

Initilializing is asynchronious, because it runs a check to avoid conflicts if used in multiple tabs or windows at the same time.

More functions

manager.offEvent(); // or with offEvent(namedEventFunction)

await manager.pairDeviceRequest();

manager.emitDeviceList(); // (only if needed again)



await manager.removeDevice(deviceId); // "devicelist" event


Error event

The event type "error" has an id and message, where message is just a default english description of the error.

  • initialize_failed - "WebHID initializing failed"
  • pair_request_failed - "Device pair request failed"
  • invalid_device - "Invalid device"