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