js-apis-inputmonitor.md 14.7 KB
Newer Older
1
# @ohos.multimodalInput.inputMonitor (输入监听)
Z
zengyawen 已提交
2

3
输入监听模块,提供了监听输入设备事件(当前支持触屏、鼠标和触控板手势)的能力。
M
mayunteng_1 已提交
4

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


## 导入模块


M
mayunteng_1 已提交
15
```js
Z
zengyawen 已提交
16 17 18 19
import inputMonitor from '@ohos.multimodalInput.inputMonitor';
```


20
## inputMonitor.on('touch')
Z
zengyawen 已提交
21

22
on(type: 'touch', receiver: TouchEventReceiver): void
Z
zengyawen 已提交
23

24
监听全局触屏事件。
Z
zengyawen 已提交
25

M
mayunteng_1 已提交
26
**需要权限:** ohos.permission.INPUT_MONITORING
Z
zengyawen 已提交
27

M
mayunteng_1 已提交
28
**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
Z
zengyawen 已提交
29

M
mayunteng_1 已提交
30 31 32
**参数:**

| 参数名       | 类型                                       | 必填   | 说明                  |
H
HelloCrease 已提交
33
| -------- | ---------------------------------------- | ---- | ------------------- |
M
mayunteng_1 已提交
34 35
| type     | string                                   | 是    | 输入设备事件类型,取值“touch”。 |
| receiver | [TouchEventReceiver](#toucheventreceiver) | 是    | 回调函数,异步上报触摸屏输入事件。 |
Z
zengyawen 已提交
36

M
mayunteng_1 已提交
37
**示例:**
Z
zengyawen 已提交
38

M
mayunteng_1 已提交
39
```js
M
mayunteng_1 已提交
40
try {
41
  inputMonitor.on('touch', (touchEvent) => {
M
mayunteng_1 已提交
42 43 44
    console.log(`Monitor on success ${JSON.stringify(touchEvent)}`);
    return false;
  });
M
mayunteng_1 已提交
45
} catch (error) {
M
mayunteng_1 已提交
46
  console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
47
}
Z
zengyawen 已提交
48 49
```

50
## inputMonitor.on('mouse')<sup>9+</sup>
M
mayunteng_1 已提交
51

52
on(type: 'mouse', receiver: Callback&lt;MouseEvent&gt;): void
H
hungry_feiwei 已提交
53

54
监听全局鼠标事件。
H
hungry_feiwei 已提交
55 56 57 58 59

**需要权限:** ohos.permission.INPUT_MONITORING

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

M
mayunteng_1 已提交
60
**参数:** 
H
hungry_feiwei 已提交
61

M
mayunteng_1 已提交
62
| 参数名       | 类型                         | 必填   | 说明                  |
H
HelloCrease 已提交
63
| -------- | -------------------------- | ---- | ------------------- |
M
mayunteng_1 已提交
64 65
| type     | string                     | 是    | 输入设备事件类型,取值“mouse”。 |
| receiver | Callback&lt;MouseEvent&gt; | 是    | 回调函数,异步上报鼠标输入事件。  |
H
hungry_feiwei 已提交
66 67 68 69

  **示例:**

```js
M
mayunteng_1 已提交
70
try {
71
  inputMonitor.on('mouse', (mouseEvent) => {
M
mayunteng_1 已提交
72 73 74
    console.log(`Monitor on success ${JSON.stringify(mouseEvent)}`);
    return false;
  });
M
mayunteng_1 已提交
75
} catch (error) {
M
mayunteng_1 已提交
76
  console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
77
}
H
hungry_feiwei 已提交
78 79 80
```


Z
zengyawen 已提交
81

82
## inputMonitor.off('touch')
Z
zengyawen 已提交
83

84
off(type: 'touch', receiver?: TouchEventReceiver): void
Z
zengyawen 已提交
85

86
取消监听全局触屏事件。
Z
zengyawen 已提交
87

M
mayunteng_1 已提交
88
**需要权限:** ohos.permission.INPUT_MONITORING
Z
zengyawen 已提交
89

M
mayunteng_1 已提交
90
**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
Z
zengyawen 已提交
91

M
mayunteng_1 已提交
92 93 94
**参数:**

| 参数名       | 类型                                       | 必填   | 说明                  |
H
HelloCrease 已提交
95
| -------- | ---------------------------------------- | ---- | ------------------- |
M
mayunteng_1 已提交
96 97
| type     | string                                   | 是    | 输入设备事件类型,取值“touch”。 |
| receiver | [TouchEventReceiver](#toucheventreceiver) | 否    | 需要取消监听的回调函数,若无此参数,则取消当前应用监听的所有回调函数。  |
Z
zengyawen 已提交
98

M
mayunteng_1 已提交
99
**示例:**
Z
zengyawen 已提交
100

M
mayunteng_1 已提交
101
```js
M
mayunteng_1 已提交
102
// 取消监听单个回调函数
M
mayunteng_1 已提交
103
function callback(touchEvent) {
M
mayunteng_1 已提交
104 105
  console.log(`Monitor on success ${JSON.stringify(touchEvent)}`);
  return false;
M
mayunteng_1 已提交
106
};
M
mayunteng_1 已提交
107
try {
108 109
  inputMonitor.on('touch', callback);
  inputMonitor.off('touch', callback);
M
mayunteng_1 已提交
110
  console.log(`Monitor off success`);
M
mayunteng_1 已提交
111
} catch (error) {
M
mayunteng_1 已提交
112 113 114 115 116 117
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

```js
// 取消监听所有回调函数
M
mayunteng_1 已提交
118
function callback(touchEvent) {
M
mayunteng_1 已提交
119 120
  console.log(`Monitor on success ${JSON.stringify(touchEvent)}`);
  return false;
M
mayunteng_1 已提交
121
};
M
mayunteng_1 已提交
122
try {
123 124
  inputMonitor.on('touch', callback);
  inputMonitor.off('touch');
M
mayunteng_1 已提交
125
  console.log(`Monitor off success`);
M
mayunteng_1 已提交
126
} catch (error) {
M
mayunteng_1 已提交
127
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
128
}
Z
zengyawen 已提交
129 130
```

131
## inputMonitor.off('mouse')<sup>9+</sup>
M
mayunteng_1 已提交
132

133
off(type: 'mouse', receiver?: Callback&lt;MouseEvent&gt;): void
M
mayunteng_1 已提交
134

135
取消监听全局鼠标事件。
Z
zengyawen 已提交
136

M
mayunteng_1 已提交
137
**需要权限:** ohos.permission.INPUT_MONITORING
H
hungry_feiwei 已提交
138

M
mayunteng_1 已提交
139
**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
H
hungry_feiwei 已提交
140

M
mayunteng_1 已提交
141
**参数:**
H
hungry_feiwei 已提交
142

M
mayunteng_1 已提交
143
| 参数名       | 类型                         | 必填   | 说明                  |
H
HelloCrease 已提交
144
| -------- | -------------------------- | ---- | ------------------- |
M
mayunteng_1 已提交
145 146
| type     | string                     | 是    | 输入设备事件类型,取值“mouse”。 |
| receiver | Callback&lt;MouseEvent&gt; | 否    | 需要取消监听的回调函数,若无此参数,则取消当前应用监听的所有回调函数。 |
H
hungry_feiwei 已提交
147 148 149 150

**示例:**

```js
M
mayunteng_1 已提交
151
// 取消监听单个回调函数
M
mayunteng_1 已提交
152
function callback(mouseEvent) {
M
mayunteng_1 已提交
153
  console.log(`Monitor on success ${JSON.stringify(mouseEvent)}`);
M
mayunteng_1 已提交
154 155
  return false;
};
M
mayunteng_1 已提交
156
try {
157 158
  inputMonitor.on('mouse', callback);
  inputMonitor.off('mouse', callback);
M
mayunteng_1 已提交
159
  console.log(`Monitor off success`);
M
mayunteng_1 已提交
160
} catch (error) {
M
mayunteng_1 已提交
161 162 163 164 165 166
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

```js
// 取消监听所有回调函数
M
mayunteng_1 已提交
167
function callback(mouseEvent) {
M
mayunteng_1 已提交
168
  console.log(`Monitor on success ${JSON.stringify(mouseEvent)}`);
M
mayunteng_1 已提交
169 170
  return false;
};
M
mayunteng_1 已提交
171
try {
172 173
  inputMonitor.on('mouse', callback);
  inputMonitor.off('mouse');
M
mayunteng_1 已提交
174
  console.log(`Monitor off success`);
M
mayunteng_1 已提交
175
} catch (error) {
M
mayunteng_1 已提交
176
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
177
}
H
hungry_feiwei 已提交
178 179 180 181
```

## TouchEventReceiver

M
mayunteng_1 已提交
182
触摸输入事件的回调函数。
Z
zengyawen 已提交
183

H
HelloCrease 已提交
184
**需要权限:** ohos.permission.INPUT_MONITORING
H
hungry_feiwei 已提交
185

M
mayunteng_1 已提交
186
**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
Z
zengyawen 已提交
187

M
mayunteng_1 已提交
188 189
**参数:**

H
HelloCrease 已提交
190 191
| 参数         | 类型                                       | 必填   | 说明                                       |
| ---------- | ---------------------------------------- | ---- | ---------------------------------------- |
M
mayunteng_1 已提交
192
| touchEvent | [TouchEvent](../arkui-js/js-components-common-events.md) | 是    | 触摸输入事件。 |
Z
zengyawen 已提交
193

M
mayunteng_1 已提交
194 195
**返回值:**

H
HelloCrease 已提交
196 197
| 类型      | 说明                                       |
| ------- | ---------------------------------------- |
M
mayunteng_1 已提交
198
| Boolean | 若返回true,本次触摸后续产生的事件不再分发到窗口;若返回false,本次触摸后续产生的事件还会分发到窗口。 |
Z
zengyawen 已提交
199

M
mayunteng_1 已提交
200
**示例:**
Z
zengyawen 已提交
201

M
mayunteng_1 已提交
202
```js
M
mayunteng_1 已提交
203
try {
204
  inputMonitor.on('touch', touchEvent => {
M
mayunteng_1 已提交
205
    if (touchEvent.touches.length == 3) { // 当前有三个手指按下
M
mayunteng_1 已提交
206 207
      return true;
    }
M
mayunteng_1 已提交
208
    return false;
M
mayunteng_1 已提交
209 210
  });
} catch (error) {
M
mayunteng_1 已提交
211
    console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
212
}
Z
zengyawen 已提交
213
```
X
xixian_2023 已提交
214

215
## inputMonitor.on('pinch')<sup>10+</sup>
X
xixian_2023 已提交
216

217
on(type: 'pinch', receiver: Callback&lt;[Pinch](js-apis-multimodalinput-gestureevent.md#pinch)&gt;): void
X
xixian_2023 已提交
218

219
监听全局的触控板捏合事件。
X
xixian_2023 已提交
220 221 222 223 224 225 226 227 228 229

**需要权限:** ohos.permission.INPUT_MONITORING

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

**参数:**

| 参数名       | 类型                         | 必填   | 说明                  |
| -------- | -------------------------- | ---- | ------------------- |
| type     | string                     | 是    | 输入设备事件类型,取值“pinch”。 |
230
| receiver | Callback&lt;[Pinch](js-apis-multimodalinput-gestureevent.md#pinch)&gt; | 是    | 回调函数,异步上报捏合输入事件。  |
X
xixian_2023 已提交
231 232 233 234 235

  **示例:**

```js
try {
236
  inputMonitor.on('pinch', (pinchEvent) => {
X
xixian_2023 已提交
237 238 239 240 241 242 243 244
    console.log(`Monitor on success ${JSON.stringify(pinchEvent)}`);
    return false;
  });
} catch (error) {
  console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

245
## inputMonitor.off('pinch')<sup>10+</sup>
X
xixian_2023 已提交
246

247
off(type: 'pinch', receiver?: Callback&lt;[Pinch](js-apis-multimodalinput-gestureevent.md#pinch)&gt;): void
X
xixian_2023 已提交
248

249
取消监听全局的触控板捏合事件。
X
xixian_2023 已提交
250 251 252 253 254 255 256 257 258 259

**需要权限:** ohos.permission.INPUT_MONITORING

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

**参数:**

| 参数名       | 类型                         | 必填   | 说明                  |
| -------- | -------------------------- | ---- | ------------------- |
| type     | string                     | 是    | 输入设备事件类型,取值“pinch”。 |
260
| receiver | Callback&lt;[Pinch](js-apis-multimodalinput-gestureevent.md#pinch)&gt; | 否    | 需要取消监听的回调函数,若无此参数,则取消当前应用监听的所有回调函数。 |
X
xixian_2023 已提交
261 262 263 264 265 266 267 268 269 270

**示例:**

```js
// 取消监听单个回调函数
function callback(pinchEvent) {
  console.log(`Monitor on success ${JSON.stringify(pinchEvent)}`);
  return false;
};
try {
271 272
  inputMonitor.on('pinch', callback);
  inputMonitor.off('pinch', callback);
X
xixian_2023 已提交
273 274 275 276 277 278 279 280 281 282 283 284 285
  console.log(`Monitor off success`);
} catch (error) {
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

```js
// 取消监听所有回调函数
function callback(pinchEvent) {
  console.log(`Monitor on success ${JSON.stringify(pinchEvent)}`);
  return false;
};
try {
286 287
  inputMonitor.on('pinch', callback);
  inputMonitor.off('pinch');
X
xixian_2023 已提交
288 289 290 291 292 293
  console.log(`Monitor off success`);
} catch (error) {
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

294
## inputMonitor.on('threeFingersSwipe')<sup>10+</sup>
X
xixian_2023 已提交
295

296
on(type: 'threeFingersSwipe', receiver: Callback&lt;[ThreeFingersSwipe](js-apis-multimodalinput-gestureevent.md#threefingersswipe)&gt;): void
X
xixian_2023 已提交
297

298
监听全局的触控板三指滑动事件。
X
xixian_2023 已提交
299 300 301 302 303 304 305 306 307 308

**需要权限:** ohos.permission.INPUT_MONITORING

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

**参数:**

| 参数名       | 类型                         | 必填   | 说明                  |
| -------- | -------------------------- | ---- | ------------------- |
| type     | string                     | 是    | 输入设备事件类型,取值“threeFingersSwipe”。 |
309
| receiver | Callback&lt;[ThreeFingersSwipe](js-apis-multimodalinput-gestureevent.md#threefingersswipe)&gt; | 是    | 回调函数,异步上报三指滑动输入事件。  |
X
xixian_2023 已提交
310 311 312 313 314

  **示例:**

```js
try {
315
  inputMonitor.on('threeFingersSwipe', (threeFingersSwipe) => {
X
xixian_2023 已提交
316 317 318 319 320 321 322 323
    console.log(`Monitor on success ${JSON.stringify(threeFingersSwipe)}`);
    return false;
  });
} catch (error) {
  console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

324
## inputMonitor.off('threeFingersSwipe')<sup>10+</sup>
X
xixian_2023 已提交
325

326
off(type: 'threeFingersSwipe', receiver?: Callback&lt;[ThreeFingersSwipe](js-apis-multimodalinput-gestureevent.md#threefingersswipe)&gt;): void
X
xixian_2023 已提交
327

328
取消监听全局的触控板三指滑动事件。
X
xixian_2023 已提交
329 330 331 332 333 334 335 336 337 338

**需要权限:** ohos.permission.INPUT_MONITORING

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

**参数:**

| 参数名       | 类型                         | 必填   | 说明                  |
| -------- | -------------------------- | ---- | ------------------- |
| type     | string                     | 是    | 输入设备事件类型,取值“threeFingersSwipe”。 |
339
| receiver | Callback&lt;[ThreeFingersSwipe](js-apis-multimodalinput-gestureevent.md#threefingersswipe)&gt; | 否    | 需要取消监听的回调函数,若无此参数,则取消当前应用监听的所有回调函数。 |
X
xixian_2023 已提交
340 341 342 343 344 345 346 347 348 349

**示例:**

```js
// 取消监听单个回调函数
function callback(threeFingersSwipe) {
  console.log(`Monitor on success ${JSON.stringify(threeFingersSwipe)}`);
  return false;
};
try {
350
  inputMonitor.on('threeFingersSwipe', callback);
X
xixian_2023 已提交
351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372
  inputMonitor.off("threeFingersSwipe", callback);
  console.log(`Monitor off success`);
} catch (error) {
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

```js
// 取消监听所有回调函数
function callback(threeFingersSwipe) {
  console.log(`Monitor on success ${JSON.stringify(threeFingersSwipe)}`);
  return false;
};
try {
  inputMonitor.on("threeFingersSwipe", callback);
  inputMonitor.off("threeFingersSwipe");
  console.log(`Monitor off success`);
} catch (error) {
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

373
## inputMonitor.on('fourFingersSwipe')<sup>10+</sup>
X
xixian_2023 已提交
374

375
on(type: 'fourFingersSwipe', receiver: Callback&lt;[FourFingersSwipe](js-apis-multimodalinput-gestureevent.md#fourfingersswipe)&gt;): void
X
xixian_2023 已提交
376

377
监听全局的触控板四指滑动事件。
X
xixian_2023 已提交
378 379 380 381 382 383 384 385 386 387

**需要权限:** ohos.permission.INPUT_MONITORING

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

**参数:**

| 参数名       | 类型                         | 必填   | 说明                  |
| -------- | -------------------------- | ---- | ------------------- |
| type     | string                     | 是    | 输入设备事件类型,取值“fourFingersSwipe”。 |
388
| receiver | Callback&lt;[FourFingersSwipe](js-apis-multimodalinput-gestureevent.md#fourfingersswipe)&gt; | 是    | 回调函数,异步上报四指滑动输入事件。  |
X
xixian_2023 已提交
389 390 391 392 393

  **示例:**

```js
try {
394
  inputMonitor.on('fourFingersSwipe', (fourFingersSwipe) => {
X
xixian_2023 已提交
395 396 397 398 399 400 401 402
    console.log(`Monitor on success ${JSON.stringify(fourFingersSwipe)}`);
    return false;
  });
} catch (error) {
  console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

403
## inputMonitor.off('fourFingersSwipe')<sup>10+</sup>
X
xixian_2023 已提交
404

405
off(type: 'fourFingersSwipe', receiver?: Callback&lt;[FourFingersSwipe](js-apis-multimodalinput-gestureevent.md#fourfingersswipe)&gt;): void
X
xixian_2023 已提交
406

407
取消监听全局的触控板四指滑动事件。
X
xixian_2023 已提交
408 409 410 411 412 413 414 415 416 417

**需要权限:** ohos.permission.INPUT_MONITORING

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

**参数:**

| 参数名       | 类型                         | 必填   | 说明                  |
| -------- | -------------------------- | ---- | ------------------- |
| type     | string                     | 是    | 输入设备事件类型,取值“fourFingersSwipe”。 |
418
| receiver | Callback&lt;[FourFingersSwipe](js-apis-multimodalinput-gestureevent.md#fourfingersswipe)&gt; | 否    | 需要取消监听的回调函数,若无此参数,则取消当前应用监听的所有回调函数。 |
X
xixian_2023 已提交
419 420 421 422 423 424 425 426 427 428

**示例:**

```js
// 取消监听单个回调函数
function callback(fourFingersSwipe) {
  console.log(`Monitor on success ${JSON.stringify(fourFingersSwipe)}`);
  return false;
};
try {
429 430
  inputMonitor.on('fourFingersSwipe', callback);
  inputMonitor.off('fourFingersSwipe', callback);
X
xixian_2023 已提交
431 432 433 434 435 436 437 438 439 440 441 442 443
  console.log(`Monitor off success`);
} catch (error) {
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

```js
// 取消监听所有回调函数
function callback(fourFingersSwipe) {
  console.log(`Monitor on success ${JSON.stringify(fourFingersSwipe)}`);
  return false;
};
try {
444 445
  inputMonitor.on('fourFingersSwipe', callback);
  inputMonitor.off('fourFingersSwipe');
X
xixian_2023 已提交
446 447 448 449 450
  console.log(`Monitor off success`);
} catch (error) {
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```