js-apis-inputdevice.md 15.7 KB
Newer Older
Z
zengyawen 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13
# 输入设备


输入设备管理模块,用于监听输入设备连接、断开和变化,并查看输入设备相关信息。比如监听鼠标插拔,并获取鼠标的id、name和指针移动速度等信息。


> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块


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

H
hungry_feiwei 已提交
18
## inputDevice.on<sup>9+</sup>
H
hungry_feiwei 已提交
19 20 21 22 23 24 25 26 27 28 29 30

on(type: “change”, listener: Callback&lt;DeviceListener&gt;): void

监听设备的热插拔事件。

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

**参数:**

| 参数     | 类型                                              | 必填 | 说明                 |
| -------- | ------------------------------------------------- | ---- | -------------------- |
| type     | string                                            | 是   | 输入设备的事件类型   |
H
hungry_feiwei 已提交
31
| listener | Callback&lt;[DeviceListener](#devicelistener<sup>9+</sup>)&gt; | 是   | 可上报的输入设备事件 |
H
hungry_feiwei 已提交
32 33 34 35

**示例:** 

```js
H
hungry_feiwei 已提交
36
let isPhysicalKeyboardExist = false;
H
hungry_feiwei 已提交
37 38
inputDevice.on("change", (data)=>{
    console.log("type: " + data.type + ", deviceId: " + data.deviceId);
H
hungry_feiwei 已提交
39 40 41 42 43 44 45 46 47
    inputDevice.getKeyboardType(data.deviceId, (ret) => {
       console.log("The keyboard type of the device is: " + ret);
        if (ret == 2 && data.type == 'add') {
            // 热插的是键盘。
            isPhysicalKeyboardExist = true;
        } else if (ret == 2 && data.type == 'remove') {
            isPhysicalKeyboardExist = false;
        }
    });
H
hungry_feiwei 已提交
48 49
});
// 根据isPhysicalKeyboardExist的值决定软键盘是否弹出。
H
hungry_feiwei 已提交
50 51
```

H
hungry_feiwei 已提交
52
## inputDevice.off<sup>9+</sup>
H
hungry_feiwei 已提交
53

H
hungry_feiwei 已提交
54
off(type: “change”, listener?: Callback&lt;DeviceListener&gt;): void
H
hungry_feiwei 已提交
55 56 57 58 59 60 61 62 63 64

取消监听设备的热插拔事件。

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

**参数:**

| 参数     | 类型                                              | 必填 | 说明                 |
| -------- | ------------------------------------------------- | ---- | -------------------- |
| type     | string                                            | 是   | 输入设备的事件类型   |
H
hungry_feiwei 已提交
65
| listener | Callback&lt;[DeviceListener](#devicelistener<sup>9+</sup>)&gt; | 否   | 可上报的输入设备事件 |
H
hungry_feiwei 已提交
66 67 68 69

**示例:** 

```js
H
hungry_feiwei 已提交
70 71 72 73 74 75 76 77
listener: function(data) {
    console.log("type: " + data.type + ", deviceId: " + data.deviceId);
}

// 单独取消listener的监听。
inputDevice.off("change", this.listener);

// 取消所有监听
H
hungry_feiwei 已提交
78
inputDevice.off("change");
H
hungry_feiwei 已提交
79
```
Z
zengyawen 已提交
80 81 82 83 84 85 86 87 88

## inputDevice.getDeviceIds

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

获取所有输入设备的id列表,使用callback方式作为异步方法。

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

M
mayunteng_1 已提交
89
**参数:**
Z
zengyawen 已提交
90

H
HelloCrease 已提交
91 92 93
| 参数       | 类型                                       | 必填   | 说明    |
| -------- | ---------------------------------------- | ---- | ----- |
| callback | AsyncCallback&lt;Array&lt;number&gt;&gt; | 是    | 回调函数。 |
M
mayunteng_1 已提交
94

Z
zengyawen 已提交
95 96
**示例:** 

97
```js
H
hungry_feiwei 已提交
98 99 100
inputDevice.getDeviceIds((ids)=>{
    console.log("The device ID list is: " + ids);
});
Z
zengyawen 已提交
101 102
```

M
mayunteng_1 已提交
103 104
## inputDevice.getDeviceIds

H
hungry_feiwei 已提交
105
function getDeviceIds(): Promise&lt;&lt;Array&lt;number&gt;&gt;
M
mayunteng_1 已提交
106 107 108 109 110 111 112

获取所有输入设备的id列表,使用Promise方式作为异步方法。

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

**返回值:**

H
hungry_feiwei 已提交
113 114
| 参数                      | 说明                          |
| ------------------------- | ----------------------------- |
H
hungry_feiwei 已提交
115
| Promise&lt;Array&lt;number&gt;&gt; | Promise实例,用于异步获取结果 |
M
mayunteng_1 已提交
116 117 118

**示例:**

119
```js
H
hungry_feiwei 已提交
120 121 122
inputDevice.getDeviceIds().then((ids)=>{
    console.log("The device ID list is: " + ids);
});
M
mayunteng_1 已提交
123 124
```

Z
zengyawen 已提交
125 126 127 128 129 130 131 132 133 134
## inputDevice.getDevice

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

获取输入设备的描述信息,使用callback方式作为异步方法。

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

**参数:** 

H
HelloCrease 已提交
135 136 137 138
| 参数       | 类型                                       | 必填   | 说明                          |
| -------- | ---------------------------------------- | ---- | --------------------------- |
| deviceId | number                                   | 是    | 需要获取信息的设备id。                |
| callback | AsyncCallback&lt;[InputDeviceData](#inputdevicedata)&gt; | 是    | 回调函数,异步返回InputDeviceData对象。 |
Z
zengyawen 已提交
139 140 141

**示例:** 

142
```js
H
hungry_feiwei 已提交
143 144 145 146
// 示例获取设备id为1的设备name信息。
inputDevice.getDevice(1, (inputDevice)=>{
    console.log("The device name is: " + inputDevice.name);
});
Z
zengyawen 已提交
147 148
```

M
mayunteng_1 已提交
149 150
## inputDevice.getDevice

H
hungry_feiwei 已提交
151
function getDevice(deviceId: number): Promise&lt;InputDeviceData&gt;
M
mayunteng_1 已提交
152 153 154 155 156

获取输入设备的描述信息,使用Promise方式作为异步方法。

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

H
hungry_feiwei 已提交
157 158 159 160 161 162
**参数:** 

| 参数     | 类型   | 必填 | 说明                   |
| -------- | ------ | ---- | ---------------------- |
| deviceId | number | 是   | 需要获取信息的设备id。 |

M
mayunteng_1 已提交
163 164
**返回值:**

H
hungry_feiwei 已提交
165 166 167
| 参数                                               | 说明                          |
| -------------------------------------------------- | ----------------------------- |
| Promise&lt;[InputDeviceData](#inputdevicedata)&gt; | Promise实例,用于异步获取结果 |
M
mayunteng_1 已提交
168 169 170

**示例:**

171
```js
H
hungry_feiwei 已提交
172 173 174 175
// 示例获取设备id为1的设备name信息。
inputDevice.getDevice(1).then((inputDevice)=>{
    console.log("The device name is: " + inputDevice.name);
});
M
mayunteng_1 已提交
176 177
```

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

H
hungry_feiwei 已提交
180
supportKeys(deviceId: number, keys: Array&lt;KeyCode&gt;, callback: Callback&lt;Array&lt;boolean&gt;&gt;): void;
Z
zengyawen 已提交
181

H
hungry_feiwei 已提交
182
获取输入设备的描述信息,使用callback方式作为异步方法。
M
mayunteng_1 已提交
183

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

H
hungry_feiwei 已提交
186 187 188 189 190 191 192 193 194 195 196
**参数:** 

| 参数     | 类型                                 | 必填 | 说明                                                         |
| -------- | ------------------------------------ | ---- | ------------------------------------------------------------ |
| deviceId | number                               | 是   | 输入设备的唯一标识,同一个物理设备反复插拔,其设备id会发生变化。 |
| keys     | Array&lt;KeyCode&gt;                 | 是   | 需要查询的键码值,最多支持5个按键查询。                      |
| callback | Callback&lt;Array&lt;boolean&gt;&gt; | 是   | 回调函数,异步返回查询结果。                                 |

**示例:** 

```js
H
hungry_feiwei 已提交
197 198 199 200
// 示例查询id为1的设备对于17、22和2055按键的支持情况。
inputDevice.supportKeys(1, [17, 22, 2055], (ret)=>{
    console.log("The query result is as follows: " + ret);
});
H
hungry_feiwei 已提交
201 202
```

H
hungry_feiwei 已提交
203
## inputDevice.supportKeys<sup>9+</sup>
H
hungry_feiwei 已提交
204 205 206 207

supportKeys(deviceId: number, keys: Array&lt;KeyCode&gt;): Promise&lt;Array&lt;boolean&gt;&gt;

获取输入设备的描述信息,使用Promise方式作为异步方法。
M
mayunteng_1 已提交
208 209 210

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

H
hungry_feiwei 已提交
211 212 213 214 215 216 217
**参数:** 

| 参数     | 类型                 | 必填 | 说明                                                         |
| -------- | -------------------- | ---- | ------------------------------------------------------------ |
| deviceId | number               | 是   | 输入设备的唯一标识,同一个物理设备反复插拔,其设备id会发生变化。 |
| keys     | Array&lt;KeyCode&gt; | 是   | 需要查询的键码值,最多支持5个按键查询。                      |

M
mayunteng_1 已提交
218 219
**返回值:**

H
hungry_feiwei 已提交
220 221 222
| 参数                                | 说明                          |
| ----------------------------------- | ----------------------------- |
| Promise&lt;Array&lt;boolean&gt;&gt; | Promise实例,用于异步获取结果 |
M
mayunteng_1 已提交
223

H
hungry_feiwei 已提交
224
**示例:** 
M
mayunteng_1 已提交
225 226

```js
H
hungry_feiwei 已提交
227 228 229 230
// 示例查询id为1的设备对于17、22和2055按键的支持情况。
inputDevice.supportKeys(1, [17, 22, 2055]).then((ret)=>{
    console.log("The query result is as follows: " + ret);
})
M
mayunteng_1 已提交
231 232
```

H
hungry_feiwei 已提交
233
## inputDevice.getKeyboardType<sup>9+</sup>
H
hungry_feiwei 已提交
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250

getKeyboardType(deviceId: number, callback: AsyncCallback&lt;KeyboardType&gt;): void;

查询输入设备的键盘类型,使用callback方式作为异步方法。

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

**参数:** 

| 参数     | 类型                                               | 必填 | 说明                                                         |
| -------- | -------------------------------------------------- | ---- | ------------------------------------------------------------ |
| deviceId | number                                             | 是   | 输入设备的唯一标识,同一个物理设备反复插拔,其设备id会发生变化。 |
| callback | AsyncCallback&lt;[KeyboardType](#keyboardtype)&gt; | 是   | 回调函数,异步返回查询结果。                                 |

**示例:** 

```js
H
hungry_feiwei 已提交
251 252 253 254
// 示例查询设备id为1的设备键盘类型。
inputDevice.getKeyboardType(1, (ret)=>{
    console.log("The keyboard type of the device is: " + ret);
});
H
hungry_feiwei 已提交
255 256
```

H
hungry_feiwei 已提交
257
## inputDevice.getKeyboardType<sup>9+</sup>
H
hungry_feiwei 已提交
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273

getKeyboardType(deviceId: number,): Promise&lt;KeyboardType&gt;

查询输入设备的键盘类型,使用Promise方式作为异步方法。

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

**返回值:**

| 参数                                         | 说明                          |
| -------------------------------------------- | ----------------------------- |
| Promise&lt;[KeyboardType](#keyboardtype)&gt; | Promise实例,用于异步获取结果 |

**示例:** 

```js
H
hungry_feiwei 已提交
274 275 276 277
// 示例查询设备id为1的设备键盘类型。
inputDevice.getKeyboardType().then((ret)=>{
    console.log("The keyboard type of the device is: " + ret);
})
H
hungry_feiwei 已提交
278 279
```

H
hungry_feiwei 已提交
280
## DeviceListener<sup>9+</sup>
H
hungry_feiwei 已提交
281 282 283 284 285 286 287

输入设备的描述信息。

**系统能力:**  以下各项对应的系统能力均为SystemCapability.MultimodalInput.Input.InputDevice

| 名称     | 参数类型                    | 说明                                                         |
| -------- | --------------------------- | ------------------------------------------------------------ |
H
hungry_feiwei 已提交
288
| type     | [ChangeType](#changetype) | 表示输入设备插入或者移除。                                   |
H
hungry_feiwei 已提交
289 290
| deviceId | number                      | 输入设备的唯一标识,同一个物理设备反复插拔,其设备id会发生变化。 |

Z
zengyawen 已提交
291 292 293 294
## InputDeviceData

输入设备的描述信息。

M
mayunteng_1 已提交
295
**系统能力:**  以下各项对应的系统能力均为SystemCapability.MultimodalInput.Input.InputDevice
Z
zengyawen 已提交
296

H
hungry_feiwei 已提交
297 298 299 300 301 302 303 304 305 306 307 308 309 310
| 名称                 | 参数类型                               | 说明                                                         |
| -------------------- | -------------------------------------- | ------------------------------------------------------------ |
| id                   | number                                 | 输入设备的唯一标识,同一个物理设备反复插拔,其设备id会发生变化。 |
| name                 | string                                 | 输入设备的名字。                                             |
| sources              | Array&lt;[SourceType](#sourcetype)&gt; | 输入设备支持的源类型。比如有的键盘上附带触摸板,则此设备有keyboard和touchpad两种输入源。 |
| axisRanges           | Array&lt;[axisRanges](#axisrange)&gt;  | 输入设备的轴信息。                                           |
| 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                                 | 输入设备的唯一标识。                                         |

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

H
hungry_feiwei 已提交
312 313 314 315
输入设备的轴类型

**系统能力:**  以下各项对应的系统能力均为SystemCapability.MultimodalInput.Input.InputDevice

H
hungry_feiwei 已提交
316 317 318 319 320 321 322 323 324 325 326
| 名称        | 参数类型 | 说明                |
| ----------- | -------- | ------------------- |
| 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 已提交
327 328 329 330 331 332 333

## AxisRange

输入设备的轴信息

**系统能力:**  以下各项对应的系统能力均为SystemCapability.MultimodalInput.Input.InputDevice

H
hungry_feiwei 已提交
334 335 336 337 338 339 340 341 342
| 名称                    | 参数类型                  | 说明             |
| ----------------------- | ------------------------- | ---------------- |
| source                  | [SourceType](#sourcetype) | 轴的输入源类型。 |
| axis                    | [AxisType](axistype)      | 轴的类型。       |
| max                     | number                    | 轴的最大值。     |
| min                     | number                    | 轴的最小值。     |
| fuzz<sup>9+</sup>       | number                    | 轴的模糊值。     |
| flat<sup>9+</sup>       | number                    | 轴的基准值。     |
| resolution<sup>9+</sup> | number                    | 轴的分辨率。     |
Z
zengyawen 已提交
343 344 345 346 347

## SourceType

定义这个轴的输入源类型。比如鼠标设备可上报x轴事件,则x轴的源就是鼠标。

M
mayunteng_1 已提交
348
**系统能力:**  以下各项对应的系统能力均为SystemCapability.MultimodalInput.Input.InputDevice
Z
zengyawen 已提交
349

H
HelloCrease 已提交
350 351 352
| 名称          | 参数类型   | 说明          |
| ----------- | ------ | ----------- |
| keyboard    | string | 表示输入设备是键盘。  |
M
mayunteng_1 已提交
353
| touchscreen | string | 表示输入设备是触摸屏。 |
H
HelloCrease 已提交
354 355 356 357
| mouse       | string | 表示输入设备是鼠标。  |
| trackball   | string | 表示输入设备是轨迹球。 |
| touchpad    | string | 表示输入设备是触摸板。 |
| joystick    | string | 表示输入设备是操纵杆。 |
M
mayunteng_1 已提交
358

H
hungry_feiwei 已提交
359 360 361 362 363 364 365 366 367 368 369
## ChangeType

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

**系统能力:**  以下各项对应的系统能力均为SystemCapability.MultimodalInput.Input.InputDevice

| 名称   | 参数类型 | 说明               |
| ------ | -------- | ------------------ |
| add    | string   | 表示输入设备插入。 |
| remove | string   | 表示输入设备移除。 |

H
hungry_feiwei 已提交
370
## KeyboardType<sup>9+</sup>
M
mayunteng_1 已提交
371

H
hungry_feiwei 已提交
372
定义键盘输入设备的类型。
M
mayunteng_1 已提交
373 374 375

**系统能力:**  以下各项对应的系统能力均为SystemCapability.MultimodalInput.Input.InputDevice

H
hungry_feiwei 已提交
376 377 378 379 380 381 382 383
| 名称                | 参数类型 | 值   | 说明               |
| ------------------- | -------- | ---- | ------------------ |
| NONE                | number   | 0    | 表示无按键设备。   |
| UNKNOWN             | number   | 1    | 表示未知按键设备。 |
| ALPHABETIC_KEYBOARD | number   | 2    | 表示全键盘设备。   |
| DIGITAL_KEYBOARD    | number   | 3    | 表示小键盘设备。   |
| HANDWRITING_PEN     | number   | 4    | 表示手写笔设备。   |
| REMOTE_CONTROL      | number   | 5    | 表示遥控器设备。   |