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

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

5
>**说明:**
H
HelloCrease 已提交
6
>
7
>- 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
M
mayunteng_1 已提交
8
>
9 10 11
>- 本模块接口均为系统接口。
>
>- 文档中“全局”表示整个触控屏或触控板。如监听全局触摸事件,表示触摸触控板任何位置,整个触控板的触摸事件均被监听。
Z
zengyawen 已提交
12 13 14

## 导入模块

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

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

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

23
监听全局触摸(触屏)事件。
Z
zengyawen 已提交
24

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

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

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

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

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

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

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

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

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

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

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

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

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

  **示例:**

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

79
## inputMonitor.off('touch')
Z
zengyawen 已提交
80

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

83
取消监听全局触摸事件。
Z
zengyawen 已提交
84

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

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

M
mayunteng_1 已提交
89 90 91
**参数:**

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

M
mayunteng_1 已提交
96
**示例:**
Z
zengyawen 已提交
97

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

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

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

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

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

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

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

M
mayunteng_1 已提交
138
**参数:**
H
hungry_feiwei 已提交
139

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

**示例:**

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

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

## TouchEventReceiver

179
触摸(触屏)输入事件的回调函数。
Z
zengyawen 已提交
180

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

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

M
mayunteng_1 已提交
185 186
**参数:**

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

M
mayunteng_1 已提交
191 192
**返回值:**

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

M
mayunteng_1 已提交
197
**示例:**
Z
zengyawen 已提交
198

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

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

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

216
监听全局触控板的捏合事件。
X
xixian_2023 已提交
217 218 219 220 221 222 223 224 225

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

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

**参数:**

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

  **示例:**

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

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

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

246
取消监听全局触控板的捏合事件。
X
xixian_2023 已提交
247 248 249 250 251 252 253 254 255

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

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

**参数:**

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

**示例:**

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

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

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

295
监听全局触控板的三指滑动事件。
X
xixian_2023 已提交
296 297 298 299 300 301 302 303 304

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

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

**参数:**

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

  **示例:**

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

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

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

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

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

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

**参数:**

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

**示例:**

```js
// 取消监听单个回调函数
function callback(threeFingersSwipe) {
  console.log(`Monitor on success ${JSON.stringify(threeFingersSwipe)}`);
  return false;
};
try {
347
  inputMonitor.on('threeFingersSwipe', callback);
X
xixian_2023 已提交
348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369
  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`])}`);
}
```

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

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

374
监听全局触控板的四指滑动事件。
X
xixian_2023 已提交
375 376 377 378 379 380 381 382 383

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

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

**参数:**

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

  **示例:**

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

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

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

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

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

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

**参数:**

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

**示例:**

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