1# @ohos.multimodalInput.inputDevice (输入设备) 2 3输入设备管理模块,用于监听输入设备连接和断开状态,查询输入设备相关信息。 4 5> **说明**: 6> 7> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9## 导入模块 10 11```js 12import inputDevice from '@ohos.multimodalInput.inputDevice'; 13``` 14 15## inputDevice.getDeviceList<sup>9+</sup> 16 17getDeviceList(callback: AsyncCallback<Array<number>>): void 18 19获取所有输入设备的id列表,使用AsyncCallback异步方式返回结果。 20 21**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 22 23**参数**: 24 25| 参数名 | 类型 | 必填 | 说明 | 26| -------- | ---------------------------------------- | ---- | ---------------------------------------- | 27| callback | AsyncCallback<Array<number>> | 是 | 回调函数,异步返回所有输入设备的id列表。 | 28 29**示例**: 30 31```js 32try { 33 inputDevice.getDeviceList((error, ids) => { 34 if (error) { 35 console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`); 36 return; 37 } 38 console.log(`Device id list: ${JSON.stringify(ids)}`); 39 }); 40} catch (error) { 41 console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`); 42} 43``` 44 45## inputDevice.getDeviceList<sup>9+</sup> 46 47getDeviceList(): Promise<Array<number>> 48 49获取所有输入设备的id列表,使用Promise异步方式返回结果。 50 51**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 52 53**返回值**: 54 55| 参数 | 说明 | 56| ---------------------------------- | ------------------------------------------- | 57| Promise<Array<number>> | Promise对象,异步返回所有输入设备的id列表。 | 58 59**示例**: 60 61```js 62try { 63 inputDevice.getDeviceList().then((ids) => { 64 console.log(`Device id list: ${JSON.stringify(ids)}`); 65 }); 66} catch (error) { 67 console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`); 68} 69``` 70 71## inputDevice.getDeviceInfo<sup>9+</sup> 72 73getDeviceInfo(deviceId: number, callback: AsyncCallback<InputDeviceData>): void 74 75获取指定输入设备的信息,使用AsyncCallback异步方式返回结果。 76 77**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 78 79**参数**: 80 81| 参数名 | 类型 | 必填 | 说明 | 82| -------- | -------------------------------------------------------- | ---- | --------------------------------------- | 83| deviceId | number | 是 | 输入设备id。 | 84| callback | AsyncCallback<[InputDeviceData](#inputdevicedata)> | 是 | 回调函数,异步返回输入设备信息。 | 85 86**示例**: 87 88```js 89// 获取输入设备id为1的设备信息。 90try { 91 inputDevice.getDeviceInfo(1, (error, deviceData) => { 92 if (error) { 93 console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`); 94 return; 95 } 96 console.log(`Device info: ${JSON.stringify(deviceData)}`); 97 }); 98} catch (error) { 99 console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`); 100} 101``` 102 103## inputDevice.getDeviceInfo<sup>9+</sup> 104 105getDeviceInfo(deviceId: number): Promise<InputDeviceData> 106 107获取指定输入设备的信息,使用Promise异步方式返回结果。 108 109**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 110 111**参数**: 112 113| 参数名 | 类型 | 必填 | 说明 | 114| -------- | ------ | ---- | ---------------------- | 115| deviceId | number | 是 | 输入设备id。 | 116 117**返回值**: 118 119| 参数 | 说明 | 120| -------------------------------------------------- | ------------------------------- | 121| Promise<[InputDeviceData](#inputdevicedata)> | Promise对象,异步返回输入设备信息。 | 122 123**示例**: 124 125```js 126// 获取输入设备id为1的设备信息。 127try { 128 inputDevice.getDeviceInfo(1).then((deviceData) => { 129 console.log(`Device info: ${JSON.stringify(deviceData)}`); 130 }); 131} catch (error) { 132 console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`); 133} 134``` 135 136## inputDevice.on<sup>9+</sup> 137 138on(type: "change", listener: Callback<DeviceListener>): void 139 140监听输入设备的热插拔事件。 141 142**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 143 144**参数**: 145 146| 参数名 | 类型 | 必填 | 说明 | 147| -------- | ---------------------------------------- | ---- | ----------- | 148| type | string | 是 | 输入设备的事件类型。 | 149| listener | Callback<[DeviceListener](#devicelistener9)> | 是 | 回调函数,异步上报输入设备热插拔事件。 | 150 151**示例**: 152 153```js 154let isPhysicalKeyboardExist = true; 155try { 156 inputDevice.on("change", (data) => { 157 console.log(`Device event info: ${JSON.stringify(data)}`); 158 inputDevice.getKeyboardType(data.deviceId, (err, type) => { 159 console.log("The keyboard type is: " + type); 160 if (type == inputDevice.KeyboardType.ALPHABETIC_KEYBOARD && data.type == 'add') { 161 // 监听物理键盘已连接。 162 isPhysicalKeyboardExist = true; 163 } else if (type == inputDevice.KeyboardType.ALPHABETIC_KEYBOARD && data.type == 'remove') { 164 // 监听物理键盘已断开。 165 isPhysicalKeyboardExist = false; 166 } 167 }); 168 }); 169 // 根据isPhysicalKeyboardExist的值决定软键盘是否弹出。 170} catch (error) { 171 console.log(`Get device info failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 172} 173``` 174 175## inputDevice.off<sup>9+</sup> 176 177off(type: "change", listener?: Callback<DeviceListener>): void 178 179取消监听输入设备的热插拔事件。 180 181**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 182 183**参数**: 184 185| 参数名 | 类型 | 必填 | 说明 | 186| -------- | ---------------------------------------- | ---- | ----------- | 187| type | string | 是 | 输入设备的事件类型。 | 188| listener | Callback<[DeviceListener](#devicelistener9)> | 否 | 取消监听的回调函数。 | 189 190**示例**: 191 192```js 193function callback(data) { 194 console.log(`Report device event info: ${JSON.stringify(data, [`type`, `deviceId`])}`); 195}; 196 197try { 198 inputDevice.on("change", callback); 199} catch (error) { 200 console.log(`Listen device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 201} 202 203// 取消指定的监听。 204try { 205 inputDevice.off("change", callback); 206} catch (error) { 207 console.log(`Cancel listening device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 208} 209 210// 取消所有监听。 211try { 212 inputDevice.off("change"); 213} catch (error) { 214 console.log(`Cancel all listening device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 215} 216``` 217 218## inputDevice.getDeviceIds<sup>(deprecated)</sup> 219 220getDeviceIds(callback: AsyncCallback<Array<number>>): void 221 222获取所有输入设备的id列表,使用AsyncCallback异步方式返回结果。 223 224从API version 9 开始不再维护,建议使用[inputDevice.getDeviceList](#inputdevicegetdevicelist9)代替。 225 226**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 227 228**参数**: 229 230| 参数名 | 类型 | 必填 | 说明 | 231| -------- | ---------------------------------------- | ---- | ---------------------------------------- | 232| callback | AsyncCallback<Array<number>> | 是 | 回调函数,异步返回所有输入设备的id列表。 | 233 234**示例**: 235 236```js 237inputDevice.getDeviceIds((error, ids) => { 238 if (error) { 239 console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`); 240 return; 241 } 242 console.log(`Device id list: ${JSON.stringify(ids)}`); 243}); 244``` 245 246## inputDevice.getDeviceIds<sup>(deprecated)</sup> 247 248getDeviceIds(): Promise<Array<number>> 249 250获取所有输入设备的id列表,使用Promise异步方式返回结果。 251 252从API version 9 开始不再维护,建议使用[inputDevice.getDeviceList](#inputdevicegetdevicelist9)代替。 253 254**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 255 256**返回值**: 257 258| 参数 | 说明 | 259| ---------------------------------- | ------------------------------------------- | 260| Promise<Array<number>> | Promise对象,异步返回所有输入设备的id列表。 | 261 262**示例**: 263 264```js 265inputDevice.getDeviceIds().then((ids) => { 266 console.log(`Device id list: ${JSON.stringify(ids)}`); 267}); 268``` 269 270## inputDevice.getDevice<sup>(deprecated)</sup> 271 272getDevice(deviceId: number, callback: AsyncCallback<InputDeviceData>): void 273 274获取指定输入设备的信息,使用AsyncCallback异步方式返回结果。 275 276从API version 9 开始不再维护,建议使用[inputDevice.getDeviceInfo](#inputdevicegetdeviceinfo9)代替。 277 278**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 279 280**参数**: 281 282| 参数名 | 类型 | 必填 | 说明 | 283| -------- | -------------------------------------------------------- | ---- | -------------------------------- | 284| deviceId | number | 是 | 输入设备id。 | 285| callback | AsyncCallback<[InputDeviceData](#inputdevicedata)> | 是 | 回调函数,异步返回输入设备信息。 | 286 287**示例**: 288 289```js 290// 获取输入设备id为1的设备信息。 291inputDevice.getDevice(1, (error, deviceData) => { 292 if (error) { 293 console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`); 294 return; 295 } 296 console.log(`Device info: ${JSON.stringify(deviceData)}`); 297}); 298``` 299 300## inputDevice.getDevice<sup>(deprecated)</sup> 301 302getDevice(deviceId: number): Promise<InputDeviceData> 303 304获取指定输入设备的信息,使用Promise异步方式返回结果。 305 306从API version 9 开始不再维护,建议使用[inputDevice.getDeviceInfo](#inputdevicegetdeviceinfo9)代替。 307 308**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 309 310**参数**: 311 312| 参数名 | 类型 | 必填 | 说明 | 313| -------- | ------ | ---- | ------------ | 314| deviceId | number | 是 | 输入设备id。 | 315 316**返回值**: 317 318| 参数 | 说明 | 319| -------------------------------------------------- | ----------------------------------- | 320| Promise<[InputDeviceData](#inputdevicedata)> | Promise对象,异步返回输入设备信息。 | 321 322**示例**: 323 324```js 325// 获取输入设备id为1的设备信息。 326inputDevice.getDevice(1).then((deviceData) => { 327 console.log(`Device info: ${JSON.stringify(deviceData)}`); 328}); 329``` 330 331## inputDevice.supportKeys<sup>9+</sup> 332 333supportKeys(deviceId: number, keys: Array<KeyCode>, callback: AsyncCallback <Array<boolean>>): void 334 335获取输入设备是否支持指定的键码值,使用AsyncCallback异步方式返回结果。 336 337**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 338 339**参数**: 340 341| 参数名 | 类型 | 必填 | 说明 | 342| -------- | ----------------------------------------- | ---- | ------------------------------------------------------ | 343| deviceId | number | 是 | 输入设备id,同一个物理设备反复插拔,设备id会发生变化。 | 344| keys | Array<KeyCode> | 是 | 需要查询的键码值,最多支持5个按键查询。 | 345| callback | AsyncCallback<Array<boolean>> | 是 | 回调函数,异步返回查询结果。 | 346 347**示例**: 348 349```js 350// 查询id为1的输入设备对于17、22和2055按键的支持情况。 351try { 352 inputDevice.supportKeys(1, [17, 22, 2055], (error, supportResult) => { 353 console.log(`Query result: ${JSON.stringify(supportResult)}`); 354 }); 355} catch (error) { 356 console.log(`Query failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 357} 358``` 359 360## inputDevice.supportKeys<sup>9+</sup> 361 362supportKeys(deviceId: number, keys: Array<KeyCode>): Promise<Array<boolean>> 363 364获取输入设备是否支持指定的键码值,使用Promise异步方式返回结果。 365 366**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 367 368**参数**: 369 370| 参数名 | 类型 | 必填 | 说明 | 371| -------- | -------------------- | ---- | ------------------------------------------------------ | 372| deviceId | number | 是 | 输入设备id,同一个物理设备反复插拔,设备id会发生变化。 | 373| keys | Array<KeyCode> | 是 | 需要查询的键码值,最多支持5个按键查询。 | 374 375**返回值**: 376 377| 参数 | 说明 | 378| ----------------------------------- | ------------------------------- | 379| Promise<Array<boolean>> | Promise对象,异步返回查询结果。 | 380 381**示例**: 382 383```js 384// 查询id为1的输入设备对于17、22和2055按键的支持情况。 385try { 386 inputDevice.supportKeys(1, [17, 22, 2055]).then((supportResult) => { 387 console.log(`Query result: ${JSON.stringify(supportResult)}`); 388 }); 389} catch (error) { 390 console.log(`Query failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 391} 392``` 393 394## inputDevice.getKeyboardType<sup>9+</sup> 395 396getKeyboardType(deviceId: number, callback: AsyncCallback<KeyboardType>): void 397 398获取输入设备的键盘类型,使用AsyncCallback异步方式返回结果。 399 400**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 401 402**参数**: 403 404| 参数名 | 类型 | 必填 | 说明 | 405| -------- | --------------------------------------------------- | ---- | ------------------------------------------------------------ | 406| deviceId | number | 是 | 输入设备的唯一标识,同一个物理设备反复插拔,设备id会发生变化。 | 407| callback | AsyncCallback<[KeyboardType](#keyboardtype9)> | 是 | 回调函数,异步返回查询结果。 | 408 409**示例**: 410 411```js 412// 查询id为1的输入设备的键盘类型。 413try { 414 inputDevice.getKeyboardType(1, (error, type) => { 415 if (error) { 416 console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`); 417 return; 418 } 419 console.log(`Keyboard type: ${JSON.stringify(type)}`); 420 }); 421} catch (error) { 422 console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`); 423} 424``` 425 426## inputDevice.getKeyboardType<sup>9+</sup> 427 428getKeyboardType(deviceId: number): Promise<KeyboardType> 429 430获取输入设备的键盘类型,使用AsyncCallback异步方式返回结果。 431 432**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 433 434**参数**: 435 436| 参数名 | 类型 | 必填 | 说明 | 437| -------- | ------ | ---- | ------------------------------------------------------------ | 438| deviceId | number | 是 | 输入设备的唯一标识,同一个物理设备反复插拔,设备id会发生变化。 | 439 440**返回值**: 441 442| 参数 | 说明 | 443| --------------------------------------------- | ------------------------------- | 444| Promise<[KeyboardType](#keyboardtype9)> | Promise对象,异步返回查询结果。 | 445 446**示例**: 447 448```js 449// 示例查询设备id为1的设备键盘类型。 450try { 451 inputDevice.getKeyboardType(1).then((type) => { 452 console.log(`Keyboard type: ${JSON.stringify(type)}`); 453 }); 454} catch (error) { 455 console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`); 456} 457``` 458 459## DeviceListener<sup>9+</sup> 460 461输入设备热插拔的描述信息。 462 463**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 464 465| 名称 | 类型 | 可读 | 可写 | 说明 | 466| --------- | ------ | ---- | ---- | ------- | 467| type | [ChangedType](#changedtype) | 是 | 否 | 输入设备插入或者移除。| 468| deviceId | number | 是 | 否 | 输入设备的唯一标识,同一个物理设备反复插拔,设备id会发生变化。 | 469 470## InputDeviceData 471 472输入设备的描述信息。 473 474**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 475 476| 名称 | 类型 | 可读 | 可写 | 说明 | 477| --------- | ------ | ---- | ---- | ------- | 478| id | number | 是 | 否 | 输入设备的唯一标识,同一个物理设备反复插拔,设备id会发生变化。 | 479| name | string | 是 | 否 | 输入设备的名字。 | 480| sources | Array<[SourceType](#sourcetype)> | 是 | 否 | 输入设备支持的源类型。比如有的键盘上附带触摸板,则此设备有keyboard和touchpad两种输入源。 | 481| axisRanges | Array<[AxisRange](#axisrange)> | 是 | 否 | 输入设备的轴信息。 | 482| bus<sup>9+</sup> | number | 是 | 否 | 输入设备的总线类型。 | 483| product<sup>9+</sup> | number | 是 | 否 | 输入设备的产品信息。 | 484| vendor<sup>9+</sup> | number | 是 | 否 | 输入设备的厂商信息。 | 485| version<sup>9+</sup> | number | 是 | 否 | 输入设备的版本信息。 | 486| phys<sup>9+</sup> | string | 是 | 否 | 输入设备的物理地址。 | 487| uniq<sup>9+</sup> | string | 是 | 否 | 输入设备的唯一标识。 | 488 489## AxisType<sup>9+</sup> 490 491输入设备的轴类型。 492 493**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 494 495| 名称 | 类型 | 可读 | 可写 | 说明 | 496| --------- | ------ | ---- | ---- | ------- | 497| touchmajor | string | 是 | 否 | 表示touchmajor轴。 | 498| touchminor | string | 是 | 否 | 表示touchminor轴。 | 499| toolminor | string | 是 | 否 | 表示toolminor轴。 | 500| toolmajor | string | 是 | 否 | 表示toolmajor轴。 | 501| orientation | string | 是 | 否 | 表示orientation轴。 | 502| pressure | string | 是 | 否 | 表示pressure轴。 | 503| x | string | 是 | 否 | 表示x轴。 | 504| y | string | 是 | 否 | 表示y轴。 | 505| NULL | string | 是 | 否 | 无。 | 506 507## AxisRange 508 509输入设备的轴信息。 510 511**系统能力**: SystemCapability.MultimodalInput.Input.InputDevice 512 513| 名称 | 类型 | 可读 | 可写 | 说明 | 514| --------- | ------ | ---- | ---- | ------- | 515| source | [SourceType](#sourcetype) | 是 | 否 | 轴的输入源类型。 | 516| axis | [AxisType](#axistype9) | 是 | 否 | 轴的类型。 | 517| max | number | 是 | 否 | 轴的最大值。 | 518| min | number | 是 | 否 | 轴的最小值。 | 519| fuzz<sup>9+</sup> | number | 是 | 否 | 轴的模糊值。 | 520| flat<sup>9+</sup> | number | 是 | 否 | 轴的基准值。 | 521| resolution<sup>9+</sup> | number | 是 | 否 | 轴的分辨率。 | 522 523## SourceType<sup>9+</sup> 524 525轴的输入源类型。比如鼠标设备可上报x轴事件,则x轴的输入源就是鼠标。 526 527**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 528 529| 名称 | 类型 | 可读 | 可写 | 说明 | 530| --------- | ------ | ---- | ---- | ------- | 531| keyboard | string | 是 | 否 | 表示输入设备是键盘。 | 532| touchscreen | string | 是 | 否 | 表示输入设备是触摸屏。 | 533| mouse | string | 是 | 否 | 表示输入设备是鼠标。 | 534| trackball | string | 是 | 否 | 表示输入设备是轨迹球。 | 535| touchpad | string | 是 | 否 | 表示输入设备是触摸板。 | 536| joystick | string | 是 | 否 | 表示输入设备是操纵杆。 | 537 538## ChangedType<sup>9+</sup> 539 540定义监听设备热插拔事件。 541 542**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 543 544| 名称 | 类型 | 可读 | 可写 | 说明 | 545| --------- | ------ | ---- | ---- | ------- | 546| add | string | 是 | 否 | 表示输入设备插入。 | 547| remove | string | 是 | 否 | 表示输入设备移除。 | 548 549## KeyboardType<sup>9+</sup> 550 551定义键盘输入设备的类型。 552 553**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice 554 555| 名称 | 值 | 说明 | 556| ------------------- | ---- | --------- | 557| NONE | 0 | 表示无按键设备。 | 558| UNKNOWN | 1 | 表示未知按键设备。 | 559| ALPHABETIC_KEYBOARD | 2 | 表示全键盘设备。 | 560| DIGITAL_KEYBOARD | 3 | 表示小键盘设备。 | 561| HANDWRITING_PEN | 4 | 表示手写笔设备。 | 562| REMOTE_CONTROL | 5 | 表示遥控器设备。 | 563