js-apis-inputdevice.md 25.8 KB
Newer Older
1
# @ohos.multimodalInput.inputDevice (输入设备)
Z
zengyawen 已提交
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
```

W
wangli (A) 已提交
463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588
## inputDevice.setKeyboardRepeatDelay<sup>10+</sup>

setKeyboardRepeatDelay(delay: number, callback: AsyncCallback&lt;void&gt;): void

设置键盘按键的重复时延,使用AsyncCallback异步方式返回结果。

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

**参数**

| 参数名     | 类型   | 必填 | 说明                                                         |
| -------- | ------ | ---- | ------------------------------------------------------------ |
| delay    | number                    | 是    | 键盘按键重复延迟时间。 |
| callback | AsyncCallback&lt;void&gt; | 是    | 回调函数。 |

**示例**

```js
try {
  inputDevice.setKeyboardRepeatDelay(5, (error) => {
    if (error) {
      console.log(`Set keyboard repeat delay failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
      return;
    }
    console.log(`Set keyboard repeat delay success`);
  });
} catch (error) {
  console.log(`Set keyboard repeat delay failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

## inputDevice.setKeyboardRepeatDelay<sup>10+</sup>

setKeyboardRepeatDelay(delay: number): Promise&lt;void&gt;

设置键盘按键的重复时延,使用Promise异步方式返回结果。

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

**参数**

| 参数名    | 类型     | 必填   | 说明                                  |
| ----- | ------ | ---- | ----------------------------------- |
| delay | number | 是    | 键盘按键重复延迟时间。|

**返回值**

| 参数                  | 说明               |
| ------------------- | ---------------- |
| Promise&lt;void&gt; | Promise对象。 |

**示例**

```js
try {
  inputDevice.setKeyboardRepeatDelay(5).then(() => {
    console.log(`Set keyboard repeat delay success`);
  });
} catch (error) {
  console.log(`Set keyboard repeat delay failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

## inputDevice.setKeyboardRepeatRate<sup>10+</sup>

setKeyboardRepeatRate(rate: number, callback: AsyncCallback&lt;void&gt;): void

设置键盘按键的重复速率,使用AsyncCallback异步方式返回结果。

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

**参数**

| 参数名     | 类型   | 必填 | 说明                                                         |
| -------- | ------ | ---- | ------------------------------------------------------------ |
| rate    | number                    | 是    | 键盘按键重复速率。 |
| callback | AsyncCallback&lt;void&gt; | 是    | 回调函数。 |

**示例**

```js
try {
  inputDevice.setKeyboardRepeatRate(5, (error) => {
    if (error) {
      console.log(`Set keyboard repeat rate failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
      return;
    }
    console.log(`Set keyboard repeat rate success`);
  });
} catch (error) {
  console.log(`Set keyboard repeat rate failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

## inputDevice.setKeyboardRepeatRate<sup>10+</sup>

setKeyboardRepeatRate(rate: number): Promise&lt;void&gt;

设置键盘按键的重复速率,使用Promise异步方式返回结果。

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

**参数**

| 参数名    | 类型     | 必填   | 说明                                  |
| ----- | ------ | ---- | ----------------------------------- |
| rate | number | 是    | 键盘按键重复速率。|

**返回值**

| 参数                  | 说明               |
| ------------------- | ---------------- |
| Promise&lt;void&gt; | Promise对象。 |

**示例**

```js
try {
  inputDevice.setKeyboardRepeatRate(5).then(() => {
    console.log(`Set keyboard repeat rate success`);
  });
} catch (error) {
  console.log(`Set keyboard repeat rate failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

H
hungry_feiwei 已提交
589
## DeviceListener<sup>9+</sup>
H
hungry_feiwei 已提交
590

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

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

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

Z
zengyawen 已提交
600 601 602 603
## InputDeviceData

输入设备的描述信息。

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

M
mayunteng_1 已提交
606 607 608 609 610
| 名称        | 类型   | 可读   | 可写   | 说明      |
| --------- | ------ | ---- | ---- | ------- |
| id                   | number                                 | 是 | 否 | 输入设备的唯一标识,同一个物理设备反复插拔,设备id会发生变化。 |
| name                 | string                                 | 是 | 否 | 输入设备的名字。                                             |
| sources              | Array&lt;[SourceType](#sourcetype)&gt; | 是 | 否 | 输入设备支持的源类型。比如有的键盘上附带触摸板,则此设备有keyboard和touchpad两种输入源。 |
M
mayunteng_1 已提交
611
| axisRanges           | Array&lt;[AxisRange](#axisrange)&gt;  | 是 | 否 | 输入设备的轴信息。                                           |
M
mayunteng_1 已提交
612 613 614 615 616 617
| 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 已提交
618 619

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

621
输入设备的轴类型。
H
hungry_feiwei 已提交
622

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

M
mayunteng_1 已提交
625 626
| 名称        | 类型   | 可读   | 可写   | 说明      |
| --------- | ------ | ---- | ---- | ------- |
H
houchengyu2022 已提交
627 628 629 630
| touchmajor  | string | 是 | 否 | 表示touchmajor轴。  |
| touchminor  | string | 是 | 否 | 表示touchminor轴。  |
| toolminor   | string | 是 | 否 | 表示toolminor轴。   |
| toolmajor   | string | 是 | 否 | 表示toolmajor轴。   |
M
mayunteng_1 已提交
631 632 633 634 635
| orientation | string | 是 | 否 | 表示orientation轴。 |
| pressure    | string | 是 | 否 | 表示pressure轴。    |
| x           | string | 是 | 否 | 表示x轴。           |
| y           | string | 是 | 否 | 表示y轴。           |
| NULL        | string | 是 | 否 | 无。              |
M
mayunteng_1 已提交
636 637 638

## AxisRange

639
输入设备的轴信息。
M
mayunteng_1 已提交
640

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

M
mayunteng_1 已提交
643 644 645 646 647 648 649 650 651
| 名称        | 类型   | 可读   | 可写   | 说明      |
| --------- | ------ | ---- | ---- | ------- |
| 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 已提交
652

M
mayunteng_1 已提交
653
## SourceType<sup>9+</sup>
Z
zengyawen 已提交
654

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

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

M
mayunteng_1 已提交
659 660 661 662 663 664 665 666
| 名称        | 类型   | 可读   | 可写   | 说明      |
| --------- | ------ | ---- | ---- | ------- |
| keyboard    | string | 是 | 否 | 表示输入设备是键盘。  |
| touchscreen | string | 是 | 否 | 表示输入设备是触摸屏。 |
| mouse       | string | 是 | 否 | 表示输入设备是鼠标。  |
| trackball   | string | 是 | 否 | 表示输入设备是轨迹球。 |
| touchpad    | string | 是 | 否 | 表示输入设备是触摸板。 |
| joystick    | string | 是 | 否 | 表示输入设备是操纵杆。 |
M
mayunteng_1 已提交
667

M
mayunteng_1 已提交
668
## ChangedType<sup>9+</sup>
H
hungry_feiwei 已提交
669 670 671

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

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

M
mayunteng_1 已提交
674 675 676 677
| 名称        | 类型   | 可读   | 可写   | 说明      |
| --------- | ------ | ---- | ---- | ------- |
| add    | string | 是 | 否 | 表示输入设备插入。 |
| remove | string | 是 | 否 | 表示输入设备移除。 |
H
hungry_feiwei 已提交
678

H
hungry_feiwei 已提交
679
## KeyboardType<sup>9+</sup>
M
mayunteng_1 已提交
680

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

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

M
mayunteng_1 已提交
685 686 687 688 689 690 691 692
| 名称                  | 值    | 说明        |
| ------------------- | ---- | --------- |
| NONE                | 0    | 表示无按键设备。  |
| UNKNOWN             | 1    | 表示未知按键设备。 |
| ALPHABETIC_KEYBOARD | 2    | 表示全键盘设备。  |
| DIGITAL_KEYBOARD    | 3    | 表示小键盘设备。  |
| HANDWRITING_PEN     | 4    | 表示手写笔设备。  |
| REMOTE_CONTROL      | 5    | 表示遥控器设备。  |