js-apis-inputdevice.md 22.0 KB
Newer Older
Z
zengyawen 已提交
1 2 3
# 输入设备


M
mayunteng_1 已提交
4
输入设备管理模块,用于监听输入设备连接和断开状态,查询输入设备相关信息。
Z
zengyawen 已提交
5 6


7 8
> **说明**:
>
Z
zengyawen 已提交
9 10 11 12 13 14
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块


15
```js
Z
zengyawen 已提交
16 17 18
import inputDevice from '@ohos.multimodalInput.inputDevice';
```

M
mayunteng_1 已提交
19 20 21 22
## inputDevice.getDeviceList<sup>9+</sup>

getDeviceList(callback: AsyncCallback&lt;Array&lt;number&gt;&gt;): void

M
mayunteng_1 已提交
23
获取所有输入设备的id列表,使用AsyncCallback异步方式返回结果。
M
mayunteng_1 已提交
24 25 26 27 28

**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice

**参数**

M
mayunteng_1 已提交
29
| 参数名     | 类型                                     | 必填 | 说明                                     |
M
mayunteng_1 已提交
30 31
| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
| callback | AsyncCallback&lt;Array&lt;number&gt;&gt; | 是   | 回调函数,异步返回所有输入设备的id列表。 |
M
mayunteng_1 已提交
32 33 34 35 36 37 38

**示例**

```js
try {
  inputDevice.getDeviceList((error, ids) => {
    if (error) {
M
mayunteng_1 已提交
39
      console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
40 41
      return;
    }
M
mayunteng_1 已提交
42
    console.log(`Device id list: ${JSON.stringify(ids)}`);
M
mayunteng_1 已提交
43 44
  });
} catch (error) {
M
mayunteng_1 已提交
45
  console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
46 47 48 49 50 51 52
}
```

## inputDevice.getDeviceList<sup>9+</sup>

getDeviceList(): Promise&lt;Array&lt;number&gt;&gt;

M
mayunteng_1 已提交
53
获取所有输入设备的id列表,使用Promise异步方式返回结果。
M
mayunteng_1 已提交
54 55 56 57 58

**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice

**返回值**

M
mayunteng_1 已提交
59 60 61
| 参数                               | 说明                                        |
| ---------------------------------- | ------------------------------------------- |
| Promise&lt;Array&lt;number&gt;&gt; | Promise对象,异步返回所有输入设备的id列表。 |
M
mayunteng_1 已提交
62 63 64 65 66 67

**示例**

```js
try {
  inputDevice.getDeviceList().then((ids) => {
M
mayunteng_1 已提交
68
    console.log(`Device id list: ${JSON.stringify(ids)}`);
M
mayunteng_1 已提交
69 70
  });
} catch (error) {
M
mayunteng_1 已提交
71
  console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
72 73 74 75 76 77 78
}
```

## inputDevice.getDeviceInfo<sup>9+</sup>

getDeviceInfo(deviceId: number, callback: AsyncCallback&lt;InputDeviceData&gt;): void

M
mayunteng_1 已提交
79
获取指定输入设备的信息,使用AsyncCallback异步方式返回结果。
M
mayunteng_1 已提交
80 81 82 83 84

**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice

**参数**

M
mayunteng_1 已提交
85
| 参数名     | 类型                                                     | 必填 | 说明                                    |
M
mayunteng_1 已提交
86
| -------- | -------------------------------------------------------- | ---- | --------------------------------------- |
M
mayunteng_1 已提交
87 88
| deviceId | number                                                   | 是   | 输入设备id。                  |
| callback | AsyncCallback&lt;[InputDeviceData](#inputdevicedata)&gt; | 是   | 回调函数,异步返回输入设备信息。 |
M
mayunteng_1 已提交
89 90 91 92

**示例**

```js
M
mayunteng_1 已提交
93
// 获取输入设备id为1的设备信息。
M
mayunteng_1 已提交
94
try {
M
mayunteng_1 已提交
95
  inputDevice.getDeviceInfo(1, (error, deviceData) => {
M
mayunteng_1 已提交
96
    if (error) {
M
mayunteng_1 已提交
97
      console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
98 99
      return;
    }
M
mayunteng_1 已提交
100
    console.log(`Device info: ${JSON.stringify(deviceData)}`);
M
mayunteng_1 已提交
101 102
  });
} catch (error) {
M
mayunteng_1 已提交
103
  console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
104 105 106 107 108 109 110
}
```

## inputDevice.getDeviceInfo<sup>9+</sup>

getDeviceInfo(deviceId: number): Promise&lt;InputDeviceData&gt;

M
mayunteng_1 已提交
111
获取指定输入设备的信息,使用Promise异步方式返回结果。
M
mayunteng_1 已提交
112 113 114 115 116

**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice

**参数**

M
mayunteng_1 已提交
117
| 参数名     | 类型   | 必填 | 说明                   |
M
mayunteng_1 已提交
118
| -------- | ------ | ---- | ---------------------- |
M
mayunteng_1 已提交
119
| deviceId | number | 是   | 输入设备id。 |
M
mayunteng_1 已提交
120 121 122 123 124

**返回值**

| 参数                                               | 说明                            |
| -------------------------------------------------- | ------------------------------- |
M
mayunteng_1 已提交
125
| Promise&lt;[InputDeviceData](#inputdevicedata)&gt; | Promise对象,异步返回输入设备信息。 |
M
mayunteng_1 已提交
126 127 128 129

**示例**

```js
M
mayunteng_1 已提交
130
// 获取输入设备id为1的设备信息。
M
mayunteng_1 已提交
131
try {
M
mayunteng_1 已提交
132 133
  inputDevice.getDeviceInfo(1).then((deviceData) => {
    console.log(`Device info: ${JSON.stringify(deviceData)}`);
M
mayunteng_1 已提交
134 135
  });
} catch (error) {
M
mayunteng_1 已提交
136
  console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
137 138 139
}
```

H
hungry_feiwei 已提交
140
## inputDevice.on<sup>9+</sup>
H
hungry_feiwei 已提交
141

M
mayunteng_1 已提交
142
on(type: "change", listener: Callback&lt;DeviceListener&gt;): void
H
hungry_feiwei 已提交
143

144
监听输入设备的热插拔事件。
H
hungry_feiwei 已提交
145

146
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
H
hungry_feiwei 已提交
147

148
**参数**
H
hungry_feiwei 已提交
149

M
mayunteng_1 已提交
150
| 参数名       | 类型                                       | 必填   | 说明          |
H
HelloCrease 已提交
151 152
| -------- | ---------------------------------------- | ---- | ----------- |
| type     | string                                   | 是    | 输入设备的事件类型。  |
M
mayunteng_1 已提交
153
| listener | Callback&lt;[DeviceListener](#devicelistener9)&gt; | 是    | 回调函数,异步上报输入设备热插拔事件。 |
H
hungry_feiwei 已提交
154

155
**示例**
H
hungry_feiwei 已提交
156 157

```js
M
mayunteng_1 已提交
158
let isPhysicalKeyboardExist = true;
M
mayunteng_1 已提交
159 160
try {
  inputDevice.on("change", (data) => {
M
mayunteng_1 已提交
161 162 163 164
    console.log(`Device event info: ${JSON.stringify(data)}`);
    inputDevice.getKeyboardType(data.deviceId, (err, type) => {
      console.log("The keyboard type is: " + type);
      if (type == inputDevice.KeyboardType.ALPHABETIC_KEYBOARD && data.type == 'add') {
M
mayunteng_1 已提交
165 166
        // 监听物理键盘已连接。
        isPhysicalKeyboardExist = true;
M
mayunteng_1 已提交
167
      } else if (type == inputDevice.KeyboardType.ALPHABETIC_KEYBOARD && data.type == 'remove') {
M
mayunteng_1 已提交
168 169 170
        // 监听物理键盘已断开。
        isPhysicalKeyboardExist = false;
      }
H
hungry_feiwei 已提交
171
    });
M
mayunteng_1 已提交
172 173 174
  });
  // 根据isPhysicalKeyboardExist的值决定软键盘是否弹出。
} catch (error) {
M
mayunteng_1 已提交
175
  console.log(`Get device info failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
176
}
H
hungry_feiwei 已提交
177 178
```

H
hungry_feiwei 已提交
179
## inputDevice.off<sup>9+</sup>
H
hungry_feiwei 已提交
180

M
mayunteng_1 已提交
181
off(type: "change", listener?: Callback&lt;DeviceListener&gt;): void
H
hungry_feiwei 已提交
182

183
取消监听输入设备的热插拔事件。
H
hungry_feiwei 已提交
184

185
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
H
hungry_feiwei 已提交
186

187
**参数**
H
hungry_feiwei 已提交
188

M
mayunteng_1 已提交
189
| 参数名       | 类型                                       | 必填   | 说明          |
H
HelloCrease 已提交
190 191
| -------- | ---------------------------------------- | ---- | ----------- |
| type     | string                                   | 是    | 输入设备的事件类型。  |
M
mayunteng_1 已提交
192
| listener | Callback&lt;[DeviceListener](#devicelistener9)&gt; | 否    | 取消监听的回调函数。 |
H
hungry_feiwei 已提交
193

194
**示例**
H
hungry_feiwei 已提交
195 196

```js
M
mayunteng_1 已提交
197
function callback(data) {
M
mayunteng_1 已提交
198
  console.log(`Report device event info: ${JSON.stringify(data, [`type`, `deviceId`])}`);
M
mayunteng_1 已提交
199
};
H
hungry_feiwei 已提交
200

M
mayunteng_1 已提交
201
try {
M
mayunteng_1 已提交
202
  inputDevice.on("change", callback);
M
mayunteng_1 已提交
203
} catch (error) {
M
mayunteng_1 已提交
204
  console.log(`Listen device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
205
}
206

M
mayunteng_1 已提交
207
// 取消指定的监听。
M
mayunteng_1 已提交
208
try {
M
mayunteng_1 已提交
209
  inputDevice.off("change", callback);
M
mayunteng_1 已提交
210
} catch (error) {
M
mayunteng_1 已提交
211
  console.log(`Cancel listening device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
212
}
H
hungry_feiwei 已提交
213

214
// 取消所有监听。
M
mayunteng_1 已提交
215 216 217
try {
  inputDevice.off("change");
} catch (error) {
M
mayunteng_1 已提交
218
  console.log(`Cancel all listening device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
219
}
H
hungry_feiwei 已提交
220
```
Z
zengyawen 已提交
221

M
mayunteng_1 已提交
222
## inputDevice.getDeviceIds<sup>(deprecated)</sup>
Z
zengyawen 已提交
223 224 225

getDeviceIds(callback: AsyncCallback&lt;Array&lt;number&gt;&gt;): void

M
mayunteng_1 已提交
226
获取所有输入设备的id列表,使用AsyncCallback异步方式返回结果。
Z
zengyawen 已提交
227

M
mayunteng_1 已提交
228 229
从API version 9 开始不再维护,建议使用[inputDevice.getDeviceList](#inputdevicegetdevicelist9)代替。

230
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
Z
zengyawen 已提交
231

232
**参数**
Z
zengyawen 已提交
233

M
mayunteng_1 已提交
234
| 参数名     | 类型                                     | 必填 | 说明                                     |
M
mayunteng_1 已提交
235 236
| -------- | ---------------------------------------- | ---- | ---------------------------------------- |
| callback | AsyncCallback&lt;Array&lt;number&gt;&gt; | 是   | 回调函数,异步返回所有输入设备的id列表。 |
M
mayunteng_1 已提交
237

238
**示例**
Z
zengyawen 已提交
239

240
```js
M
mayunteng_1 已提交
241
inputDevice.getDeviceIds((error, ids) => {
M
mayunteng_1 已提交
242 243 244 245 246
  if (error) {
    console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`);
    return;
  }
  console.log(`Device id list: ${JSON.stringify(ids)}`);
H
hungry_feiwei 已提交
247
});
Z
zengyawen 已提交
248 249
```

M
mayunteng_1 已提交
250
## inputDevice.getDeviceIds<sup>(deprecated)</sup>
M
mayunteng_1 已提交
251

Z
zengyawen 已提交
252
getDeviceIds(): Promise&lt;Array&lt;number&gt;&gt;
M
mayunteng_1 已提交
253

M
mayunteng_1 已提交
254
获取所有输入设备的id列表,使用Promise异步方式返回结果。
M
mayunteng_1 已提交
255

M
mayunteng_1 已提交
256 257
从API version 9 开始不再维护,建议使用[inputDevice.getDeviceList](#inputdevicegetdevicelist9)代替。

258
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
M
mayunteng_1 已提交
259

260
**返回值**
M
mayunteng_1 已提交
261

M
mayunteng_1 已提交
262 263 264
| 参数                               | 说明                                        |
| ---------------------------------- | ------------------------------------------- |
| Promise&lt;Array&lt;number&gt;&gt; | Promise对象,异步返回所有输入设备的id列表。 |
M
mayunteng_1 已提交
265

266
**示例**
M
mayunteng_1 已提交
267

268
```js
M
mayunteng_1 已提交
269
inputDevice.getDeviceIds().then((ids) => {
M
mayunteng_1 已提交
270
  console.log(`Device id list: ${JSON.stringify(ids)}`);
H
hungry_feiwei 已提交
271
});
M
mayunteng_1 已提交
272 273
```

M
mayunteng_1 已提交
274
## inputDevice.getDevice<sup>(deprecated)</sup>
Z
zengyawen 已提交
275 276 277

getDevice(deviceId: number, callback: AsyncCallback&lt;InputDeviceData&gt;): void

M
mayunteng_1 已提交
278
获取指定输入设备的信息,使用AsyncCallback异步方式返回结果。
Z
zengyawen 已提交
279

M
mayunteng_1 已提交
280 281
从API version 9 开始不再维护,建议使用[inputDevice.getDeviceInfo](#inputdevicegetdeviceinfo9)代替。

282
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
Z
zengyawen 已提交
283

284
**参数**
Z
zengyawen 已提交
285

M
mayunteng_1 已提交
286
| 参数名     | 类型                                                     | 必填 | 说明                             |
M
mayunteng_1 已提交
287 288 289
| -------- | -------------------------------------------------------- | ---- | -------------------------------- |
| deviceId | number                                                   | 是   | 输入设备id。                     |
| callback | AsyncCallback&lt;[InputDeviceData](#inputdevicedata)&gt; | 是   | 回调函数,异步返回输入设备信息。 |
Z
zengyawen 已提交
290

291
**示例**
Z
zengyawen 已提交
292

293
```js
M
mayunteng_1 已提交
294
// 获取输入设备id为1的设备信息。
M
mayunteng_1 已提交
295
inputDevice.getDevice(1, (error, deviceData) => {
M
mayunteng_1 已提交
296 297 298 299 300
  if (error) {
    console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`);
    return;
  }
  console.log(`Device info: ${JSON.stringify(deviceData)}`);
H
hungry_feiwei 已提交
301
});
Z
zengyawen 已提交
302 303
```

M
mayunteng_1 已提交
304
## inputDevice.getDevice<sup>(deprecated)</sup>
M
mayunteng_1 已提交
305

Z
zengyawen 已提交
306
getDevice(deviceId: number): Promise&lt;InputDeviceData&gt;
M
mayunteng_1 已提交
307

M
mayunteng_1 已提交
308
获取指定输入设备的信息,使用Promise异步方式返回结果。
M
mayunteng_1 已提交
309

M
mayunteng_1 已提交
310 311
从API version 9 开始不再维护,建议使用[inputDevice.getDeviceInfo](#inputdevicegetdeviceinfo9)代替。

312
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
M
mayunteng_1 已提交
313

314
**参数**
H
hungry_feiwei 已提交
315

M
mayunteng_1 已提交
316
| 参数名     | 类型   | 必填 | 说明         |
H
HelloCrease 已提交
317
| -------- | ------ | ---- | ------------ |
M
mayunteng_1 已提交
318
| deviceId | number | 是   | 输入设备id。 |
H
hungry_feiwei 已提交
319

320
**返回值**
M
mayunteng_1 已提交
321

M
mayunteng_1 已提交
322 323 324
| 参数                                               | 说明                                |
| -------------------------------------------------- | ----------------------------------- |
| Promise&lt;[InputDeviceData](#inputdevicedata)&gt; | Promise对象,异步返回输入设备信息。 |
M
mayunteng_1 已提交
325

326
**示例**
M
mayunteng_1 已提交
327

328
```js
M
mayunteng_1 已提交
329
// 获取输入设备id为1的设备信息。
M
mayunteng_1 已提交
330
inputDevice.getDevice(1).then((deviceData) => {
M
mayunteng_1 已提交
331
  console.log(`Device info: ${JSON.stringify(deviceData)}`);
H
hungry_feiwei 已提交
332
});
M
mayunteng_1 已提交
333 334
```

H
hungry_feiwei 已提交
335
## inputDevice.supportKeys<sup>9+</sup>
M
mayunteng_1 已提交
336

M
mayunteng_1 已提交
337
supportKeys(deviceId: number, keys: Array&lt;KeyCode&gt;, callback: AsyncCallback &lt;Array&lt;boolean&gt;&gt;): void
Z
zengyawen 已提交
338

M
mayunteng_1 已提交
339
获取输入设备是否支持指定的键码值,使用AsyncCallback异步方式返回结果。
M
mayunteng_1 已提交
340

341
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
M
mayunteng_1 已提交
342

343
**参数**
H
hungry_feiwei 已提交
344

M
mayunteng_1 已提交
345
| 参数名     | 类型                                      | 必填 | 说明                                                   |
M
mayunteng_1 已提交
346 347 348 349
| -------- | ----------------------------------------- | ---- | ------------------------------------------------------ |
| deviceId | number                                    | 是   | 输入设备id,同一个物理设备反复插拔,设备id会发生变化。 |
| keys     | Array&lt;KeyCode&gt;                      | 是   | 需要查询的键码值,最多支持5个按键查询。                |
| callback | AsyncCallback&lt;Array&lt;boolean&gt;&gt; | 是   | 回调函数,异步返回查询结果。                           |
H
hungry_feiwei 已提交
350

351
**示例**
H
hungry_feiwei 已提交
352 353

```js
M
mayunteng_1 已提交
354
// 查询id为1的输入设备对于17、22和2055按键的支持情况。
M
mayunteng_1 已提交
355
try {
M
mayunteng_1 已提交
356 357
  inputDevice.supportKeys(1, [17, 22, 2055], (error, supportResult) => {
    console.log(`Query result: ${JSON.stringify(supportResult)}`);
M
mayunteng_1 已提交
358 359
  });
} catch (error) {
M
mayunteng_1 已提交
360
  console.log(`Query failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
361
}
H
hungry_feiwei 已提交
362 363
```

H
hungry_feiwei 已提交
364
## inputDevice.supportKeys<sup>9+</sup>
H
hungry_feiwei 已提交
365

H
hungry_feiwei 已提交
366
supportKeys(deviceId: number, keys: Array&lt;KeyCode&gt;): Promise&lt;Array&lt;boolean&gt;&gt;
H
hungry_feiwei 已提交
367

M
mayunteng_1 已提交
368
获取输入设备是否支持指定的键码值,使用Promise异步方式返回结果。
M
mayunteng_1 已提交
369

370
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
M
mayunteng_1 已提交
371

372
**参数**
H
hungry_feiwei 已提交
373

M
mayunteng_1 已提交
374
| 参数名     | 类型                 | 必填 | 说明                                                   |
M
mayunteng_1 已提交
375 376 377
| -------- | -------------------- | ---- | ------------------------------------------------------ |
| deviceId | number               | 是   | 输入设备id,同一个物理设备反复插拔,设备id会发生变化。 |
| keys     | Array&lt;KeyCode&gt; | 是   | 需要查询的键码值,最多支持5个按键查询。                |
H
hungry_feiwei 已提交
378

379
**返回值**
M
mayunteng_1 已提交
380

M
mayunteng_1 已提交
381 382 383
| 参数                                | 说明                            |
| ----------------------------------- | ------------------------------- |
| Promise&lt;Array&lt;boolean&gt;&gt; | Promise对象,异步返回查询结果。 |
M
mayunteng_1 已提交
384

385
**示例**
M
mayunteng_1 已提交
386 387

```js
M
mayunteng_1 已提交
388
// 查询id为1的输入设备对于17、22和2055按键的支持情况。
M
mayunteng_1 已提交
389
try {
M
mayunteng_1 已提交
390 391
  inputDevice.supportKeys(1, [17, 22, 2055]).then((supportResult) => {
    console.log(`Query result: ${JSON.stringify(supportResult)}`);
M
mayunteng_1 已提交
392 393
  });
} catch (error) {
M
mayunteng_1 已提交
394
  console.log(`Query failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
395
}
M
mayunteng_1 已提交
396 397
```

H
hungry_feiwei 已提交
398
## inputDevice.getKeyboardType<sup>9+</sup>
H
hungry_feiwei 已提交
399

H
hungry_feiwei 已提交
400
getKeyboardType(deviceId: number, callback: AsyncCallback&lt;KeyboardType&gt;): void
H
hungry_feiwei 已提交
401

M
mayunteng_1 已提交
402
获取输入设备的键盘类型,使用AsyncCallback异步方式返回结果。
H
hungry_feiwei 已提交
403

404
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
H
hungry_feiwei 已提交
405

406
**参数**
H
hungry_feiwei 已提交
407

M
mayunteng_1 已提交
408
| 参数名     | 类型                                                | 必填 | 说明                                                         |
M
mayunteng_1 已提交
409 410 411
| -------- | --------------------------------------------------- | ---- | ------------------------------------------------------------ |
| deviceId | number                                              | 是   | 输入设备的唯一标识,同一个物理设备反复插拔,设备id会发生变化。 |
| callback | AsyncCallback&lt;[KeyboardType](#keyboardtype9)&gt; | 是   | 回调函数,异步返回查询结果。                                 |
H
hungry_feiwei 已提交
412

413
**示例**
H
hungry_feiwei 已提交
414 415

```js
M
mayunteng_1 已提交
416
// 查询id为1的输入设备的键盘类型。
M
mayunteng_1 已提交
417
try {
M
mayunteng_1 已提交
418
  inputDevice.getKeyboardType(1, (error, type) => {
M
mayunteng_1 已提交
419
    if (error) {
M
mayunteng_1 已提交
420
      console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
421 422
      return;
    }
M
mayunteng_1 已提交
423
    console.log(`Keyboard type: ${JSON.stringify(type)}`);
M
mayunteng_1 已提交
424 425
  });
} catch (error) {
M
mayunteng_1 已提交
426
  console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
427
}
H
hungry_feiwei 已提交
428 429
```

H
hungry_feiwei 已提交
430
## inputDevice.getKeyboardType<sup>9+</sup>
H
hungry_feiwei 已提交
431

H
hungry_feiwei 已提交
432
getKeyboardType(deviceId: number): Promise&lt;KeyboardType&gt;
H
hungry_feiwei 已提交
433

M
mayunteng_1 已提交
434
获取输入设备的键盘类型,使用AsyncCallback异步方式返回结果。
H
hungry_feiwei 已提交
435

436
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
H
hungry_feiwei 已提交
437

M
mayunteng_1 已提交
438 439
**参数**

M
mayunteng_1 已提交
440
| 参数名     | 类型   | 必填 | 说明                                                         |
M
mayunteng_1 已提交
441 442 443
| -------- | ------ | ---- | ------------------------------------------------------------ |
| deviceId | number | 是   | 输入设备的唯一标识,同一个物理设备反复插拔,设备id会发生变化。 |

444
**返回值**
H
hungry_feiwei 已提交
445

M
mayunteng_1 已提交
446 447 448
| 参数                                          | 说明                            |
| --------------------------------------------- | ------------------------------- |
| Promise&lt;[KeyboardType](#keyboardtype9)&gt; | Promise对象,异步返回查询结果。 |
H
hungry_feiwei 已提交
449

450
**示例**
H
hungry_feiwei 已提交
451 452

```js
H
hungry_feiwei 已提交
453
// 示例查询设备id为1的设备键盘类型。
M
mayunteng_1 已提交
454
try {
M
mayunteng_1 已提交
455 456
  inputDevice.getKeyboardType(1).then((type) => {
    console.log(`Keyboard type: ${JSON.stringify(type)}`);
M
mayunteng_1 已提交
457 458
  });
} catch (error) {
M
mayunteng_1 已提交
459
  console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
460
}
H
hungry_feiwei 已提交
461 462
```

H
hungry_feiwei 已提交
463
## DeviceListener<sup>9+</sup>
H
hungry_feiwei 已提交
464

M
mayunteng_1 已提交
465
输入设备热插拔的描述信息。
H
hungry_feiwei 已提交
466

H
HelloCrease 已提交
467
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
H
hungry_feiwei 已提交
468

M
mayunteng_1 已提交
469 470 471 472
| 名称        | 类型   | 可读   | 可写   | 说明      |
| --------- | ------ | ---- | ---- | ------- |
| type     | [ChangedType](#changedtype) | 是 | 否 | 输入设备插入或者移除。|
| deviceId | number                      | 是 | 否 | 输入设备的唯一标识,同一个物理设备反复插拔,设备id会发生变化。 |
H
hungry_feiwei 已提交
473

Z
zengyawen 已提交
474 475 476 477
## InputDeviceData

输入设备的描述信息。

H
HelloCrease 已提交
478
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
Z
zengyawen 已提交
479

M
mayunteng_1 已提交
480 481 482 483 484
| 名称        | 类型   | 可读   | 可写   | 说明      |
| --------- | ------ | ---- | ---- | ------- |
| id                   | number                                 | 是 | 否 | 输入设备的唯一标识,同一个物理设备反复插拔,设备id会发生变化。 |
| name                 | string                                 | 是 | 否 | 输入设备的名字。                                             |
| sources              | Array&lt;[SourceType](#sourcetype)&gt; | 是 | 否 | 输入设备支持的源类型。比如有的键盘上附带触摸板,则此设备有keyboard和touchpad两种输入源。 |
M
mayunteng_1 已提交
485
| axisRanges           | Array&lt;[AxisRange](#axisrange)&gt;  | 是 | 否 | 输入设备的轴信息。                                           |
M
mayunteng_1 已提交
486 487 488 489 490 491
| bus<sup>9+</sup>     | number                                 | 是 | 否 | 输入设备的总线类型。                                         |
| product<sup>9+</sup> | number                                 | 是 | 否 | 输入设备的产品信息。                                         |
| vendor<sup>9+</sup>  | number                                 | 是 | 否 | 输入设备的厂商信息。                                         |
| version<sup>9+</sup> | number                                 | 是 | 否 | 输入设备的版本信息。                                         |
| phys<sup>9+</sup>    | string                                 | 是 | 否 | 输入设备的物理地址。                                         |
| uniq<sup>9+</sup>    | string                                 | 是 | 否 | 输入设备的唯一标识。                                         |
H
hungry_feiwei 已提交
492 493

## AxisType<sup>9+</sup>
M
mayunteng_1 已提交
494

495
输入设备的轴类型。
H
hungry_feiwei 已提交
496

H
HelloCrease 已提交
497
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
H
hungry_feiwei 已提交
498

M
mayunteng_1 已提交
499 500 501 502 503 504 505 506 507 508 509
| 名称        | 类型   | 可读   | 可写   | 说明      |
| --------- | ------ | ---- | ---- | ------- |
| touchMajor  | string | 是 | 否 | 表示touchMajor轴。  |
| touchMinor  | string | 是 | 否 | 表示touchMinor轴。  |
| toolMinor   | string | 是 | 否 | 表示toolMinor轴。   |
| toolMajor   | string | 是 | 否 | 表示toolMajor轴。   |
| orientation | string | 是 | 否 | 表示orientation轴。 |
| pressure    | string | 是 | 否 | 表示pressure轴。    |
| x           | string | 是 | 否 | 表示x轴。           |
| y           | string | 是 | 否 | 表示y轴。           |
| NULL        | string | 是 | 否 | 无。              |
M
mayunteng_1 已提交
510 511 512

## AxisRange

513
输入设备的轴信息。
M
mayunteng_1 已提交
514

H
HelloCrease 已提交
515
**系统能力**: SystemCapability.MultimodalInput.Input.InputDevice
M
mayunteng_1 已提交
516

M
mayunteng_1 已提交
517 518 519 520 521 522 523 524 525
| 名称        | 类型   | 可读   | 可写   | 说明      |
| --------- | ------ | ---- | ---- | ------- |
| source                  | [SourceType](#sourcetype) | 是 | 否 | 轴的输入源类型。 |
| axis                    | [AxisType](#axistype9)    | 是 | 否 | 轴的类型。    |
| max                     | number                    | 是 | 否 | 轴的最大值。   |
| min                     | number                    | 是 | 否 | 轴的最小值。   |
| fuzz<sup>9+</sup>       | number                    | 是 | 否 | 轴的模糊值。   |
| flat<sup>9+</sup>       | number                    | 是 | 否 | 轴的基准值。   |
| resolution<sup>9+</sup> | number                    | 是 | 否 | 轴的分辨率。   |
Z
zengyawen 已提交
526

M
mayunteng_1 已提交
527
## SourceType<sup>9+</sup>
Z
zengyawen 已提交
528

M
mayunteng_1 已提交
529
轴的输入源类型。比如鼠标设备可上报x轴事件,则x轴的输入源就是鼠标。
Z
zengyawen 已提交
530

H
HelloCrease 已提交
531
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
Z
zengyawen 已提交
532

M
mayunteng_1 已提交
533 534 535 536 537 538 539 540
| 名称        | 类型   | 可读   | 可写   | 说明      |
| --------- | ------ | ---- | ---- | ------- |
| keyboard    | string | 是 | 否 | 表示输入设备是键盘。  |
| touchscreen | string | 是 | 否 | 表示输入设备是触摸屏。 |
| mouse       | string | 是 | 否 | 表示输入设备是鼠标。  |
| trackball   | string | 是 | 否 | 表示输入设备是轨迹球。 |
| touchpad    | string | 是 | 否 | 表示输入设备是触摸板。 |
| joystick    | string | 是 | 否 | 表示输入设备是操纵杆。 |
M
mayunteng_1 已提交
541

M
mayunteng_1 已提交
542
## ChangedType<sup>9+</sup>
H
hungry_feiwei 已提交
543 544 545

定义监听设备热插拔事件。

H
HelloCrease 已提交
546
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
H
hungry_feiwei 已提交
547

M
mayunteng_1 已提交
548 549 550 551
| 名称        | 类型   | 可读   | 可写   | 说明      |
| --------- | ------ | ---- | ---- | ------- |
| add    | string | 是 | 否 | 表示输入设备插入。 |
| remove | string | 是 | 否 | 表示输入设备移除。 |
H
hungry_feiwei 已提交
552

H
hungry_feiwei 已提交
553
## KeyboardType<sup>9+</sup>
M
mayunteng_1 已提交
554

H
hungry_feiwei 已提交
555
定义键盘输入设备的类型。
M
mayunteng_1 已提交
556

H
HelloCrease 已提交
557
**系统能力**:SystemCapability.MultimodalInput.Input.InputDevice
M
mayunteng_1 已提交
558

M
mayunteng_1 已提交
559 560 561 562 563 564 565 566
| 名称                  | 值    | 说明        |
| ------------------- | ---- | --------- |
| NONE                | 0    | 表示无按键设备。  |
| UNKNOWN             | 1    | 表示未知按键设备。 |
| ALPHABETIC_KEYBOARD | 2    | 表示全键盘设备。  |
| DIGITAL_KEYBOARD    | 3    | 表示小键盘设备。  |
| HANDWRITING_PEN     | 4    | 表示手写笔设备。  |
| REMOTE_CONTROL      | 5    | 表示遥控器设备。  |