1# @ohos.multimodalInput.inputDevice (Input Device) 2 3 4The **inputDevice** module allows you to listen for hot swap events of input devices and query information about input devices. 5 6 7> **NOTE** 8> 9> The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version. 10 11 12## Modules to Import 13 14 15```js 16import { inputDevice } from '@kit.InputKit'; 17``` 18 19## inputDevice.getDeviceList<sup>9+</sup> 20 21getDeviceList(callback: AsyncCallback<Array<number>>): void 22 23Obtains the IDs of all input devices. This API uses an asynchronous callback to return the result. 24 25**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 26 27**Parameters** 28 29| Name | Type | Mandatory| Description | 30| -------- | ---------------------------------------- | ---- | ---------------------------------------- | 31| callback | AsyncCallback<Array<number>> | Yes | Callback used to return the result.| 32 33**Error codes** 34 35For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 36 37| ID | Error Message | 38| ---- | --------------------- | 39| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 40 41**Example** 42 43```js 44try { 45 inputDevice.getDeviceList((error: Error, ids: Array<Number>) => { 46 if (error) { 47 console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`); 48 return; 49 } 50 console.log(`Device id list: ${JSON.stringify(ids)}`); 51 }); 52} catch (error) { 53 console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`); 54} 55``` 56 57## inputDevice.getDeviceList<sup>9+</sup> 58 59getDeviceList(): Promise<Array<number>> 60 61Obtains the IDs of all input devices. This API uses a promise to return the result. 62 63**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 64 65**Return value** 66 67| Parameters | Description | 68| ---------------------------------- | ------------------------------------------- | 69| Promise<Array<number>> | Promise used to return the result.| 70 71**Example** 72 73```js 74try { 75 inputDevice.getDeviceList().then((ids: Array<Number>) => { 76 console.log(`Device id list: ${JSON.stringify(ids)}`); 77 }); 78} catch (error) { 79 console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`); 80} 81``` 82 83## inputDevice.getDeviceInfo<sup>9+</sup> 84 85getDeviceInfo(deviceId: number, callback: AsyncCallback<InputDeviceData>): void 86 87Obtains information about an input device. This API uses an asynchronous callback to return the result. 88 89**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 90 91**Parameters** 92 93| Name | Type | Mandatory| Description | 94| -------- | -------------------------------------------------------- | ---- | --------------------------------------- | 95| deviceId | number | Yes | ID of the input device. | 96| callback | AsyncCallback<[InputDeviceData](#inputdevicedata)> | Yes | Callback used to return the result, which is an **InputDeviceData** object.| 97 98**Error codes** 99 100For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 101 102| ID | Error Message | 103| ---- | --------------------- | 104| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 105 106**Example** 107 108```js 109// Obtain the name of the device whose ID is 1. 110try { 111 inputDevice.getDeviceInfo(1, (error: Error, deviceData: inputDevice.InputDeviceData) => { 112 if (error) { 113 console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`); 114 return; 115 } 116 console.log(`Device info: ${JSON.stringify(deviceData)}`); 117 }); 118} catch (error) { 119 console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`); 120} 121``` 122 123## inputDevice.getDeviceInfo<sup>9+</sup> 124 125getDeviceInfo(deviceId: number): Promise<InputDeviceData> 126 127Obtains information about an input device. This API uses a promise to return the result. 128 129**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 130 131**Parameters** 132 133| Name | Type | Mandatory| Description | 134| -------- | ------ | ---- | ---------------------- | 135| deviceId | number | Yes | ID of the input device.| 136 137**Return value** 138 139| Parameters | Description | 140| -------------------------------------------------- | ------------------------------- | 141| Promise<[InputDeviceData](#inputdevicedata)> | Promise used to return the result.| 142 143**Error codes** 144 145For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 146 147| ID | Error Message | 148| ---- | --------------------- | 149| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 150 151**Example** 152 153```js 154// Obtain the name of the device whose ID is 1. 155try { 156 inputDevice.getDeviceInfo(1).then((deviceData: inputDevice.InputDeviceData) => { 157 console.log(`Device info: ${JSON.stringify(deviceData)}`); 158 }); 159} catch (error) { 160 console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`); 161} 162``` 163 164## inputDevice.getDeviceInfoSync<sup>10+</sup> 165 166getDeviceInfoSync(deviceId: number): InputDeviceData 167 168Obtains information about the specified input device. 169 170**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 171 172**Parameters** 173 174| Name | Type | Mandatory| Description | 175| -------- | ------ | ---- | ---------------------- | 176| deviceId | number | Yes | ID of the input device.| 177 178**Return value** 179 180| Parameters | Description | 181| -------------------------------------------------- | ------------------------------- | 182| [InputDeviceData](#inputdevicedata) | Information about the input device.| 183 184**Error codes** 185 186For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 187 188| ID | Error Message | 189| ---- | --------------------- | 190| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 191 192**Example** 193 194```js 195// Obtain the name of the device whose ID is 1. 196try { 197 let deviceData: inputDevice.InputDeviceData = inputDevice.getDeviceInfoSync(1) 198 console.log(`Device info: ${JSON.stringify(deviceData)}`) 199} catch (error) { 200 console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`) 201} 202``` 203 204## inputDevice.on<sup>9+</sup> 205 206on(type: "change", listener: Callback<DeviceListener>): void 207 208Enables listening for device hot swap events. When performing this operation, you need to connect your device to an external device, for example, mouse or keyboard. 209 210**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 211 212**Parameters** 213 214| Name | Type | Mandatory | Description | 215| -------- | ---------------------------------------- | ---- | ----------- | 216| type | string | Yes | Event type of the input device, such as the mouse, keyboard, or touchscreen. | 217| listener | Callback<[DeviceListener](#devicelistener9)> | Yes | Listener for events of the input device.| 218 219**Error codes** 220 221For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 222 223| ID | Error Message | 224| ---- | --------------------- | 225| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 226 227**Example** 228 229```js 230let isPhysicalKeyboardExist = true; 231try { 232 inputDevice.on("change", (data: inputDevice.DeviceListener) => { 233 console.log(`Device event info: ${JSON.stringify(data)}`); 234 inputDevice.getKeyboardType(data.deviceId, (err: Error, type: inputDevice.KeyboardType) => { 235 console.log("The keyboard type is: " + type); 236 if (type == inputDevice.KeyboardType.ALPHABETIC_KEYBOARD && data.type == 'add') { 237 // The physical keyboard is connected. 238 isPhysicalKeyboardExist = true; 239 } else if (type == inputDevice.KeyboardType.ALPHABETIC_KEYBOARD && data.type == 'remove') { 240 // The physical keyboard is disconnected. 241 isPhysicalKeyboardExist = false; 242 } 243 }); 244 }); 245 // Check whether the soft keyboard is open based on the value of isPhysicalKeyboardExist. 246} catch (error) { 247 console.log(`Get device info failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 248} 249``` 250 251## inputDevice.off<sup>9+</sup> 252 253off(type: "change", listener?: Callback<DeviceListener>): void 254 255Disables listening for device hot swap events. This API is called before the application exits. 256 257**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 258 259**Parameters** 260 261| Name | Type | Mandatory | Description | 262| -------- | ---------------------------------------- | ---- | ----------- | 263| type | string | Yes | Event type of the input device, such as the mouse, keyboard, or touchscreen. | 264| listener | Callback<[DeviceListener](#devicelistener9)> | No | Listener for events of the input device.| 265 266**Error codes** 267 268For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 269 270| ID | Error Message | 271| ---- | --------------------- | 272| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 273 274**Example** 275 276```js 277function callback(data: inputDevice.DeviceListener) { 278 console.log(`Report device event info: ${JSON.stringify(data, [`type`, `deviceId`])}`); 279}; 280 281try { 282 inputDevice.on("change", callback); 283} catch (error) { 284 console.log(`Listen device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 285} 286 287// Disable this listener. 288try { 289 inputDevice.off("change", callback); 290} catch (error) { 291 console.log(`Cancel listening device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 292} 293 294// Disable all listeners. 295try { 296 inputDevice.off("change"); 297} catch (error) { 298 console.log(`Cancel all listening device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 299} 300``` 301 302## inputDevice.getDeviceIds<sup>(deprecated)</sup> 303 304getDeviceIds(callback: AsyncCallback<Array<number>>): void 305 306Obtains the IDs of all input devices. This API uses an asynchronous callback to return the result. 307 308> This API is deprecated since API version 9. You are advised to use [inputDevice.getDeviceList](#inputdevicegetdevicelist9) instead. 309 310**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 311 312**Parameters** 313 314| Name | Type | Mandatory| Description | 315| -------- | ---------------------------------------- | ---- | ---------------------------------------- | 316| callback | AsyncCallback<Array<number>> | Yes | Callback used to return the result.| 317 318**Example** 319 320```js 321inputDevice.getDeviceIds((error: Error, ids: Array<Number>) => { 322 if (error) { 323 console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`); 324 return; 325 } 326 console.log(`Device id list: ${JSON.stringify(ids)}`); 327}); 328``` 329 330## inputDevice.getDeviceIds<sup>(deprecated)</sup> 331 332getDeviceIds(): Promise<Array<number>> 333 334Obtains the IDs of all input devices. This API uses a promise to return the result. 335 336> This API is deprecated since API version 9. You are advised to use [inputDevice.getDeviceList](#inputdevicegetdevicelist9) instead. 337 338**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 339 340**Return value** 341 342| Parameters | Description | 343| ---------------------------------- | ------------------------------------------- | 344| Promise<Array<number>> | Promise used to return the result.| 345 346**Example** 347 348```js 349inputDevice.getDeviceIds().then((ids: Array<Number>) => { 350 console.log(`Device id list: ${JSON.stringify(ids)}`); 351}); 352``` 353 354## inputDevice.getDevice<sup>(deprecated)</sup> 355 356getDevice(deviceId: number, callback: AsyncCallback<InputDeviceData>): void 357 358Obtains information about an input device. This API uses an asynchronous callback to return the result. 359 360> This API is deprecated since API version 9. You are advised to use [inputDevice.getDeviceInfo](#inputdevicegetdeviceinfo9) instead. 361 362**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 363 364**Parameters** 365 366| Name | Type | Mandatory| Description | 367| -------- | -------------------------------------------------------- | ---- | -------------------------------- | 368| deviceId | number | Yes | ID of the input device. | 369| callback | AsyncCallback<[InputDeviceData](#inputdevicedata)> | Yes | Callback used to return the result, which is an **InputDeviceData** object.| 370 371**Example** 372 373```js 374// Obtain the name of the device whose ID is 1. 375inputDevice.getDevice(1, (error: Error, deviceData: inputDevice.InputDeviceData) => { 376 if (error) { 377 console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`); 378 return; 379 } 380 console.log(`Device info: ${JSON.stringify(deviceData)}`); 381}); 382``` 383 384## inputDevice.getDevice<sup>(deprecated)</sup> 385 386getDevice(deviceId: number): Promise<InputDeviceData> 387 388Obtains information about an input device. This API uses a promise to return the result. 389 390> This API is deprecated since API version 9. You are advised to use [inputDevice.getDeviceInfo](#inputdevicegetdeviceinfo9) instead. 391 392**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 393 394**Parameters** 395 396| Name | Type | Mandatory| Description | 397| -------- | ------ | ---- | ------------ | 398| deviceId | number | Yes | ID of the input device.| 399 400**Return value** 401 402| Parameters | Description | 403| -------------------------------------------------- | ----------------------------------- | 404| Promise<[InputDeviceData](#inputdevicedata)> | Promise used to return the result.| 405 406**Example** 407 408```js 409// Obtain the name of the device whose ID is 1. 410inputDevice.getDevice(1).then((deviceData: inputDevice.InputDeviceData) => { 411 console.log(`Device info: ${JSON.stringify(deviceData)}`); 412}); 413``` 414 415## inputDevice.supportKeys<sup>9+</sup> 416 417supportKeys(deviceId: number, keys: Array<KeyCode>, callback: AsyncCallback <Array<boolean>>): void 418 419Obtains the keycodes supported by the input device. This API uses an asynchronous callback to return the result. 420 421**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 422 423**Parameters** 424 425| Name | Type | Mandatory| Description | 426| -------- | ----------------------------------------- | ---- | ------------------------------------------------------ | 427| deviceId | number | Yes | Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| 428| keys | Array[<KeyCode>](js-apis-keycode.md#keycode) | Yes | Keycodes to be queried. A maximum of five keycodes can be specified. | 429| callback | AsyncCallback<Array<boolean>> | Yes | Callback used to return the result. | 430 431**Error codes** 432 433For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 434 435| ID | Error Message | 436| ---- | --------------------- | 437| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 438 439**Example** 440 441```js 442// Check whether the input device whose ID is 1 supports keycodes 17, 22, and 2055. 443try { 444 inputDevice.supportKeys(1, [17, 22, 2055], (error: Error, supportResult: Array<Boolean>) => { 445 console.log(`Query result: ${JSON.stringify(supportResult)}`); 446 }); 447} catch (error) { 448 console.log(`Query failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 449} 450``` 451 452## inputDevice.supportKeys<sup>9+</sup> 453 454supportKeys(deviceId: number, keys: Array<KeyCode>): Promise<Array<boolean>> 455 456Obtains the keycodes supported by the input device. This API uses a promise to return the result. 457 458**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 459 460**Parameters** 461 462| Name | Type | Mandatory| Description | 463| -------- | -------------------- | ---- | ------------------------------------------------------ | 464| deviceId | number | Yes | Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| 465| keys | Array[<KeyCode>](js-apis-keycode.md#keycode) | Yes | Keycodes to be queried. A maximum of five keycodes can be specified. | 466 467**Return value** 468 469| Parameters | Description | 470| ----------------------------------- | ------------------------------- | 471| Promise<Array<boolean>> | Promise used to return the result.| 472 473**Error codes** 474 475For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 476 477| ID | Error Message | 478| ---- | --------------------- | 479| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 480 481**Example** 482 483```js 484// Check whether the input device whose ID is 1 supports keycodes 17, 22, and 2055. 485try { 486 inputDevice.supportKeys(1, [17, 22, 2055]).then((supportResult: Array<Boolean>) => { 487 console.log(`Query result: ${JSON.stringify(supportResult)}`); 488 }); 489} catch (error) { 490 console.log(`Query failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 491} 492``` 493 494## inputDevice.supportKeysSync<sup>10+</sup> 495 496supportKeysSync(deviceId: number, keys: Array<KeyCode>): Array<boolean> 497 498Checks whether the input device supports the specified keycode value. 499 500**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 501 502**Parameters** 503 504| Name | Type | Mandatory| Description | 505| -------- | -------------------- | ---- | ------------------------------------------------------ | 506| deviceId | number | Yes | Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| 507| keys | Array[<KeyCode>](js-apis-keycode.md#keycode) | Yes | Keycodes to be queried. A maximum of five keycodes can be specified. | 508 509**Return value** 510 511| Parameters | Description | 512| ----------------------------------- | ------------------------------- | 513| Array<boolean> | Result indicating whether the input device supports the keycode value. The value **true** indicates yes, and the value **false** indicates no.| 514 515**Error codes** 516 517For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 518 519| ID | Error Message | 520| ---- | --------------------- | 521| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 522 523**Example** 524 525```js 526// Check whether the input device whose ID is 1 supports keycodes 17, 22, and 2055. 527try { 528 let supportResult: Array<Boolean> = inputDevice.supportKeysSync(1, [17, 22, 2055]) 529 console.log(`Query result: ${JSON.stringify(supportResult)}`) 530} catch (error) { 531 console.log(`Query failed, error: ${JSON.stringify(error, [`code`, `message`])}`) 532} 533``` 534 535## inputDevice.getKeyboardType<sup>9+</sup> 536 537getKeyboardType(deviceId: number, callback: AsyncCallback<KeyboardType>): void 538 539Obtains the keyboard type of an input device. This API uses an asynchronous callback to return the result. 540 541**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 542 543**Parameters** 544 545| Name | Type | Mandatory| Description | 546| -------- | --------------------------------------------------- | ---- | ------------------------------------------------------------ | 547| deviceId | number | Yes | Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| 548| callback | AsyncCallback<[KeyboardType](#keyboardtype9)> | Yes | Callback used to return the result. | 549 550**Error codes** 551 552For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 553 554| ID | Error Message | 555| ---- | --------------------- | 556| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 557 558**Example** 559 560```js 561// Query the keyboard type of the input device whose ID is 1. 562try { 563 inputDevice.getKeyboardType(1, (error: Error, type: Number) => { 564 if (error) { 565 console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`); 566 return; 567 } 568 console.log(`Keyboard type: ${JSON.stringify(type)}`); 569 }); 570} catch (error) { 571 console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`); 572} 573``` 574 575## inputDevice.getKeyboardType<sup>9+</sup> 576 577getKeyboardType(deviceId: number): Promise<KeyboardType> 578 579Obtains the keyboard type of an input device. This API uses a promise to return the result. 580 581**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 582 583**Parameters** 584 585| Name | Type | Mandatory| Description | 586| -------- | ------ | ---- | ------------------------------------------------------------ | 587| deviceId | number | Yes | Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| 588 589**Return value** 590 591| Parameters | Description | 592| --------------------------------------------- | ------------------------------- | 593| Promise<[KeyboardType](#keyboardtype9)> | Promise used to return the result.| 594 595**Error codes** 596 597For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 598 599| ID | Error Message | 600| ---- | --------------------- | 601| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 602 603**Example** 604 605```js 606// Query the keyboard type of the input device whose ID is 1. 607try { 608 inputDevice.getKeyboardType(1).then((type: Number) => { 609 console.log(`Keyboard type: ${JSON.stringify(type)}`); 610 }); 611} catch (error) { 612 console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`); 613} 614``` 615 616## inputDevice.getKeyboardTypeSync<sup>10+</sup> 617 618getKeyboardTypeSync(deviceId: number): KeyboardType 619 620Obtains the keyboard type of the input device. 621 622**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 623 624**Parameters** 625 626| Name | Type | Mandatory| Description | 627| -------- | ------ | ---- | ------------------------------------------------------------ | 628| deviceId | number | Yes | Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| 629 630**Return value** 631 632| Parameters | Description | 633| --------------------------------------------- | ------------------------------- | 634| [KeyboardType](#keyboardtype9) | Keyboard type.| 635 636**Error codes** 637 638For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 639 640| ID | Error Message | 641| ---- | --------------------- | 642| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 643 644**Example** 645 646```js 647// Query the keyboard type of the input device whose ID is 1. 648try { 649 let type: number = inputDevice.getKeyboardTypeSync(1) 650 console.log(`Keyboard type: ${JSON.stringify(type)}`) 651} catch (error) { 652 console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`) 653} 654``` 655 656## inputDevice.isFunctionKeyEnabled<sup>15+</sup> 657 658isFunctionKeyEnabled(functionKey: FunctionKey): Promise<boolean> 659 660Checks whether the function key is enabled. This API uses a promise to return the result. 661 662**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 663 664**Parameters** 665 666| Name | Type | Mandatory| Description | 667| -------- | ------ | ---- | ------------------------------------------------------------ | 668| functionKey | [FunctionKey](#functionkey15) | Yes | Type of the function key.| 669 670**Return value** 671 672| Parameters | Description | 673| ---------------------- | ------------------------------------------------------------ | 674| Promise<boolean> | Promise used to return the result. The value **true** indicates that the function key is enabled, and the value **false** indicates the opposite.| 675 676**Error codes** 677 678For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Input Device Error Codes](errorcode-inputdevice.md). 679 680| ID | Error Message | 681| ---- | --------------------- | 682| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 683| 3900002 | There is currently no keyboard device connected. | 684 685**Example** 686 687```js 688import { inputDevice } from '@kit.InputKit'; 689 690try { 691 inputDevice.isFunctionKeyEnabled(inputDevice.FunctionKey.CAPS_LOCK).then((state: boolean) => { 692 console.log(`capslock state: ${JSON.stringify(state)}`); 693 }); 694} catch (error) { 695 console.log(`Failed to get capslock state, error: ${JSON.stringify(error, [`code`, `message`])}`); 696} 697``` 698 699## inputDevice.setFunctionKeyEnabled<sup>15+</sup> 700 701setFunctionKeyEnabled(functionKey: FunctionKey, enabled: boolean): Promise<void> 702 703Sets the status of the function key . This API uses a promise to return the result. 704 705**Required permissions**: ohos.permission.INPUT_KEYBOARD_CONTROLLER 706 707**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 708 709**Parameters** 710 711| Name | Type | Mandatory| Description | 712| -------- | ------- | ---- | ------------------------- | 713| functionKey | [FunctionKey](#functionkey15) | Yes | Type of the function key.| 714| enabled | boolean | Yes | Status of the function key. The value **true** indicates that the function key is enabled, and the value **false** indicates the opposite.| 715 716**Error codes** 717 718For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Input Device Error Codes](errorcode-inputdevice.md). 719 720 721| ID| Error Message | 722| -------- | ------------------------------------------------------------ | 723| 201 | Permission denied. | 724| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. | 725| 3900002 | There is currently no keyboard device connected. | 726| 3900003 | It is prohibited for non-input applications. | 727 728**Example** 729 730```js 731import { inputDevice } from '@kit.InputKit'; 732import { BusinessError } from '@kit.BasicServicesKit'; 733 734try { 735 inputDevice.setFunctionKeyEnabled(inputDevice.FunctionKey.CAPS_LOCK, true).then(() => { 736 console.info(`Set capslock state success`); 737 }).catch((error: BusinessError) => { 738 console.info(`Set capslock state failed, error=${JSON.stringify(error)}`); 739 }); 740} catch (error) { 741 console.info(`Set capslock enable error`); 742} 743``` 744 745## inputDevice.getIntervalSinceLastInput<sup>14+</sup> 746 747getIntervalSinceLastInput(): Promise<number> 748 749Obtains the interval since the last system input event. This API uses a promise to return the result. 750 751**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 752 753**Return value** 754 755| Parameters | Description | 756| --------------------------------------------- | ------------------------------- | 757| Promise<number> | Promise used to return the interval since the last system input event, in μs.| 758 759**Example** 760 761```js 762 inputDevice.getIntervalSinceLastInput().then((timeInterval: number) => { 763 console.log(`Interval since last input: ${JSON.stringify(timeInterval)}`); 764 }); 765``` 766 767## DeviceListener<sup>9+</sup> 768 769Defines the listener for hot swap events of an input device. 770 771**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 772 773| Name | Type | Readable | Writable | Description | 774| --------- | ------ | ---- | ---- | ------- | 775| type | [ChangedType](#changedtype9)| Yes| No| Device change type, which indicates whether an input device is inserted or removed.| 776| deviceId | number | Yes| No| Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| 777 778## InputDeviceData 779 780Defines the information about an input device. 781 782**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 783 784| Name | Type | Readable | Writable | Description | 785| --------- | ------ | ---- | ---- | ------- | 786| id | number | Yes| No| Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| 787| name | string | Yes| No| Name of the input device. | 788| sources | Array<[SourceType](#sourcetype9)> | Yes| No| Source type of the input device. For example, if a keyboard is attached with a touchpad, the device has two input sources: keyboard and touchpad.| 789| axisRanges | Array<[AxisRange](#axisrange)> | Yes| No| Axis information of the input device. | 790| bus<sup>9+</sup> | number | Yes| No| Bus type of the input device. | 791| product<sup>9+</sup> | number | Yes| No| Product information of the input device. | 792| vendor<sup>9+</sup> | number | Yes| No| Vendor information of the input device. | 793| version<sup>9+</sup> | number | Yes| No| Version information of the input device. | 794| phys<sup>9+</sup> | string | Yes| No| Physical address of the input device. | 795| uniq<sup>9+</sup> | string | Yes| No| Unique ID of the input device. | 796 797## AxisType<sup>9+</sup> 798 799type AxisType = 'touchmajor' | 'touchminor' | 'orientation' | 'x' | 'y' | 'pressure' | 'toolminor' | 'toolmajor' | 'null' 800 801Defines the axis type of an input device. 802 803**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 804 805| Type |Description | 806| --------- | ------- | 807| 'touchmajor' | Major axis of the elliptical touching area.| 808| 'touchminor' | Minor axis of the elliptical touching area.| 809| 'toolminor' | Minor axis of the tool area.| 810| 'toolmajor' | Major axis of the tool area.| 811| 'orientation' | Orientation axis.| 812|'pressure' | Pressure axis. | 813| 'x' | Horizontal axis. | 814| 'y' | Vertical axis. | 815|'null' | None. | 816 817## AxisRange 818 819Defines the axis range of an input device. 820 821**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 822 823| Name | Type | Readable | Writable | Description | 824| --------- | ------ | ---- | ---- | ------- | 825| source | [SourceType](#sourcetype9) | Yes| No| Input source type of the axis.| 826| axis | [AxisType](#axistype9) | Yes| No| Axis type. | 827| max | number | Yes| No| Maximum value of the axis. | 828| min | number | Yes| No| Minimum value of the axis. | 829| fuzz<sup>9+</sup> | number | Yes| No| Fuzzy value of the axis. | 830| flat<sup>9+</sup> | number | Yes| No| Benchmark value of the axis. | 831| resolution<sup>9+</sup> | number | Yes| No| Resolution of the axis. | 832 833## SourceType<sup>9+</sup> 834 835type SourceType = 'keyboard' | 'mouse' | 'touchpad' | 'touchscreen' | 'joystick' | 'trackball' 836 837Enumerates input source types of the axis. For example, if a mouse reports an x-axis event, the input source of the x-axis is the mouse. 838 839**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 840 841| Type |Description | 842| --------- | ------- | 843| 'keyboard' | The input device is a keyboard. | 844| 'touchscreen' | The input device is a touchscreen.| 845| 'mouse' | The input device is a mouse. | 846| 'trackball' | The input device is a trackball.| 847| 'touchpad' | The input device is a touchpad.| 848| 'joystick' | The input device is a joystick.| 849 850## ChangedType<sup>9+</sup> 851 852type ChangedType = 'add' | 'remove' 853 854Defines the change type for the hot swap event of an input device. 855 856**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 857 858| Type | Description | 859| --------- | ------- | 860| 'add' | An input device is inserted.| 861| 'remove' | An input device is removed.| 862 863## KeyboardType<sup>9+</sup> 864 865Enumerates the keyboard types. 866 867**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 868 869| Name | Value | Description | 870| ------------------- | ---- | --------- | 871| NONE | 0 | Keyboard without keys. | 872| UNKNOWN | 1 | Keyboard with unknown keys.| 873| ALPHABETIC_KEYBOARD | 2 | Full keyboard. | 874| DIGITAL_KEYBOARD | 3 | Keypad. | 875| HANDWRITING_PEN | 4 | Stylus. | 876| REMOTE_CONTROL | 5 | Remote control. | 877 878## FunctionKey<sup>15+</sup> 879 880Defines the type of a function key. 881 882**System capability**: SystemCapability.MultimodalInput.Input.InputDevice 883 884| Name | Value | Description | 885| ------------------- | ---- | --------- | 886| CAPS_LOCK | 1 | CapsLock key. This key can be enabled or disabled only for the input keyboard extension.| 887