说明
使用 chrome.hid
API 与已连接的 HID 设备交互。借助此 API,您可以在应用环境中访问 HID 操作。使用此 API,应用可以充当硬件设备的驱动程序。通过设置 runtime.lastError
并执行函数的常规回调来报告此 API 生成的错误。在这种情况下,回调的常规参数将处于未定义状态。
权限
hid
类型
DeviceFilter
属性
-
productId
编号(选填)
设备产品 ID,仅当供应商 ID 匹配时才检查。
-
使用量
编号(选填)
HID 用途标识符,仅在 HID 用途页面匹配时才检查。
-
usagePage
编号(选填)
HID 用途页面标识符。
-
vendorId
编号(选填)
设备供应商 ID。
GetDevicesOptions
属性
-
过滤条件
DeviceFilter[] 可选
系统将返回与任意指定过滤条件匹配的设备。一个空的过滤条件列表将返回该应用有权使用的所有设备。
-
productId
编号(选填)
<ph type="x-smartling-placeholder"></ph> 已弃用相当于设置
DeviceFilter.productId
。 -
vendorId
编号(选填)
<ph type="x-smartling-placeholder"></ph> 已弃用相当于设置
DeviceFilter.vendorId
。
HidCollectionInfo
属性
-
reportIds
数值 []
报告属于集合及其子集合的 ID。
-
使用量
number
页面定义的使用情况标识符。
-
usagePage
number
HID 用途页面标识符。
HidConnectInfo
属性
-
connectionId
number
用于在所有其他函数中标识此连接的不透明 ID。
HidDeviceInfo
属性
-
收藏集
此设备的报告描述符的顶级集合。
-
deviceId
number
不透明的设备 ID。
-
maxFeatureReportSize
number
顶级集合的功能报告大小上限。
-
maxInputReportSize
number
顶级集合的输入报告大小上限。
-
maxOutputReportSize
number
顶级集合的输出报告大小上限。
-
productId
number
产品 ID。
-
productName
字符串
Chrome 46 及更高版本从设备读取的产品名称(如果有)。
-
reportDescriptor
数组缓冲区
原始设备报告描述符(在 Windows 上不可用)。
-
serialNumber
字符串
Chrome 46 及更高版本从设备读取的序列号(如果有)。
-
vendorId
number
供应商 ID。
方法
connect()
chrome.hid.connect(
deviceId: number,
callback?: function,
)
打开与 HID 设备的连接以进行通信。
参数
-
deviceId
number
要打开的设备的
HidDeviceInfo.deviceId
。 -
callback
函数(可选)
callback
参数如下所示:(connection: HidConnectInfo) => void
返回
-
Promise<HidConnectInfo>
Chrome 117 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
disconnect()
chrome.hid.disconnect(
connectionId: number,
callback?: function,
)
断开与设备的连接。调用后在设备上调用操作是安全的,但不会产生任何效果。
参数
-
connectionId
number
connect
返回的connectionId
。 -
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 117 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
getDevices()
chrome.hid.getDevices(
options: GetDevicesOptions,
callback?: function,
)
枚举已连接的 HID 设备。
参数
-
要在目标设备上搜索的属性。
-
callback
函数(可选)
callback
参数如下所示:(devices: HidDeviceInfo[]) => void
-
设备
-
返回
-
Promise<HidDeviceInfo[]>
Chrome 117 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
receive()
chrome.hid.receive(
connectionId: number,
callback: function,
)
从设备接收下一份输入报告。
参数
-
connectionId
number
connect
返回的connectionId
。 -
callback
函数
callback
参数如下所示:(reportId: number, data: ArrayBuffer) => void
-
reportId
number
报告 ID,如果没有,则为
0
。 -
数据
数组缓冲区
系统会移除报告数据,报告 ID 前缀(如果存在)。
-
receiveFeatureReport()
chrome.hid.receiveFeatureReport(
connectionId: number,
reportId: number,
callback?: function,
)
从设备请求功能报告。
参数
-
connectionId
number
connect
返回的connectionId
。 -
reportId
number
报告 ID,如果没有,则为
0
。 -
callback
函数(可选)
callback
参数如下所示:(data: ArrayBuffer) => void
-
数据
数组缓冲区
报告数据,包括报告 ID 前缀(如果由设备发送)。
-
返回
-
Promise<ArrayBuffer>
Chrome 117 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
send()
chrome.hid.send(
connectionId: number,
reportId: number,
data: ArrayBuffer,
callback?: function,
)
向设备发送输出报告。
注意:请勿在 data
中添加报告 ID 前缀。如有必要,会添加此名称。
参数
-
connectionId
number
connect
返回的connectionId
。 -
reportId
number
要使用的报告 ID,否则为
0
。 -
数据
数组缓冲区
报告数据。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 117 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
sendFeatureReport()
chrome.hid.sendFeatureReport(
connectionId: number,
reportId: number,
data: ArrayBuffer,
callback?: function,
)
向设备发送功能报告。
注意:请勿在 data
中添加报告 ID 前缀。如有必要,会添加此名称。
参数
-
connectionId
number
connect
返回的connectionId
。 -
reportId
number
要使用的报告 ID,否则为
0
。 -
数据
数组缓冲区
报告数据。
-
callback
函数(可选)
callback
参数如下所示:() => void
返回
-
承诺<void>
Chrome 117 及更高版本只有 Manifest V3 及更高版本支持 Promise,其他平台需要使用回调。
事件
onDeviceAdded
chrome.hid.onDeviceAdded.addListener(
callback: function,
)
将设备添加到系统时生成的事件。系统仅会向有权访问该设备的应用和扩展程序广播事件。权限可能是在安装应用时或用户接受可选权限时授予的(请参阅 permissions.request
)。
参数
-
callback
函数
callback
参数如下所示:(device: HidDeviceInfo) => void
onDeviceRemoved
chrome.hid.onDeviceRemoved.addListener(
callback: function,
)
从系统中移除设备时生成的事件。如需了解系统会传送哪些事件,请参阅 onDeviceAdded
。
参数
-
callback
函数
callback
参数如下所示:(deviceId: number) => void
-
deviceId
number
-