• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&lt;Array&lt;number&gt;&gt;): void
18
19获取所有输入设备的id列表,使用AsyncCallback异步方式返回结果。
20
21**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
22
23**参数**:
24
25| 参数名     | 类型                                     | 必填 | 说明                                     |
26| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
27| callback | AsyncCallback&lt;Array&lt;number&gt;&gt; | 是   | 回调函数,异步返回所有输入设备的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&lt;Array&lt;number&gt;&gt;
48
49获取所有输入设备的id列表,使用Promise异步方式返回结果。
50
51**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
52
53**返回值**:
54
55| 参数                               | 说明                                        |
56| ---------------------------------- | ------------------------------------------- |
57| Promise&lt;Array&lt;number&gt;&gt; | 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&lt;InputDeviceData&gt;): void
74
75获取指定输入设备的信息,使用AsyncCallback异步方式返回结果。
76
77**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
78
79**参数**:
80
81| 参数名     | 类型                                                     | 必填 | 说明                                    |
82| -------- | -------------------------------------------------------- | ---- | --------------------------------------- |
83| deviceId | number                                                   | 是   | 输入设备id。                  |
84| callback | AsyncCallback&lt;[InputDeviceData](#inputdevicedata)&gt; | 是   | 回调函数,异步返回输入设备信息。 |
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&lt;InputDeviceData&gt;
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&lt;[InputDeviceData](#inputdevicedata)&gt; | 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&lt;DeviceListener&gt;): void
139
140监听输入设备的热插拔事件。
141
142**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
143
144**参数**:
145
146| 参数名       | 类型                                       | 必填   | 说明          |
147| -------- | ---------------------------------------- | ---- | ----------- |
148| type     | string                                   | 是    | 输入设备的事件类型。  |
149| listener | Callback&lt;[DeviceListener](#devicelistener9)&gt; | 是    | 回调函数,异步上报输入设备热插拔事件。 |
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&lt;DeviceListener&gt;): void
178
179取消监听输入设备的热插拔事件。
180
181**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
182
183**参数**:
184
185| 参数名       | 类型                                       | 必填   | 说明          |
186| -------- | ---------------------------------------- | ---- | ----------- |
187| type     | string                                   | 是    | 输入设备的事件类型。  |
188| listener | Callback&lt;[DeviceListener](#devicelistener9)&gt; | 否    | 取消监听的回调函数。 |
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&lt;Array&lt;number&gt;&gt;): 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&lt;Array&lt;number&gt;&gt; | 是   | 回调函数,异步返回所有输入设备的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&lt;Array&lt;number&gt;&gt;
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&lt;Array&lt;number&gt;&gt; | 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&lt;InputDeviceData&gt;): 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&lt;[InputDeviceData](#inputdevicedata)&gt; | 是   | 回调函数,异步返回输入设备信息。 |
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&lt;InputDeviceData&gt;
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&lt;[InputDeviceData](#inputdevicedata)&gt; | 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&lt;KeyCode&gt;, callback: AsyncCallback &lt;Array&lt;boolean&gt;&gt;): void
334
335获取输入设备是否支持指定的键码值,使用AsyncCallback异步方式返回结果。
336
337**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
338
339**参数**:
340
341| 参数名     | 类型                                      | 必填 | 说明                                                   |
342| -------- | ----------------------------------------- | ---- | ------------------------------------------------------ |
343| deviceId | number                                    | 是   | 输入设备id,同一个物理设备反复插拔,设备id会发生变化。 |
344| keys     | Array&lt;KeyCode&gt;                      | 是   | 需要查询的键码值,最多支持5个按键查询。                |
345| callback | AsyncCallback&lt;Array&lt;boolean&gt;&gt; | 是   | 回调函数,异步返回查询结果。                           |
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&lt;KeyCode&gt;): Promise&lt;Array&lt;boolean&gt;&gt;
363
364获取输入设备是否支持指定的键码值,使用Promise异步方式返回结果。
365
366**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
367
368**参数**:
369
370| 参数名     | 类型                 | 必填 | 说明                                                   |
371| -------- | -------------------- | ---- | ------------------------------------------------------ |
372| deviceId | number               | 是   | 输入设备id,同一个物理设备反复插拔,设备id会发生变化。 |
373| keys     | Array&lt;KeyCode&gt; | 是   | 需要查询的键码值,最多支持5个按键查询。                |
374
375**返回值**:
376
377| 参数                                | 说明                            |
378| ----------------------------------- | ------------------------------- |
379| Promise&lt;Array&lt;boolean&gt;&gt; | 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&lt;KeyboardType&gt;): void
397
398获取输入设备的键盘类型,使用AsyncCallback异步方式返回结果。
399
400**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
401
402**参数**:
403
404| 参数名     | 类型                                                | 必填 | 说明                                                         |
405| -------- | --------------------------------------------------- | ---- | ------------------------------------------------------------ |
406| deviceId | number                                              | 是   | 输入设备的唯一标识,同一个物理设备反复插拔,设备id会发生变化。 |
407| callback | AsyncCallback&lt;[KeyboardType](#keyboardtype9)&gt; | 是   | 回调函数,异步返回查询结果。                                 |
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&lt;KeyboardType&gt;
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&lt;[KeyboardType](#keyboardtype9)&gt; | 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&lt;[SourceType](#sourcetype)&gt; | 是 | 否 | 输入设备支持的源类型。比如有的键盘上附带触摸板,则此设备有keyboard和touchpad两种输入源。 |
481| axisRanges           | Array&lt;[AxisRange](#axisrange)&gt;  | 是 | 否 | 输入设备的轴信息。                                           |
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