• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.multimodalInput.inputMonitor (输入监听)
2
3输入监听模块,提供了监听输入设备事件(当前支持触摸屏和鼠标)的能力。
4
5>  **说明:**
6>
7>  - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9>  - 本模块接口均为系统接口。
10
11
12## 导入模块
13
14
15```js
16import inputMonitor from '@ohos.multimodalInput.inputMonitor';
17```
18
19
20## inputMonitor.on
21
22on(type: "touch", receiver: TouchEventReceiver): void
23
24开始监听全局触屏事件。
25
26**需要权限:** ohos.permission.INPUT_MONITORING
27
28**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
29
30**参数:**
31
32| 参数名       | 类型                                       | 必填   | 说明                  |
33| -------- | ---------------------------------------- | ---- | ------------------- |
34| type     | string                                   | 是    | 输入设备事件类型,取值“touch”。 |
35| receiver | [TouchEventReceiver](#toucheventreceiver) | 是    | 回调函数,异步上报触摸屏输入事件。 |
36
37**示例:**
38
39```js
40try {
41  inputMonitor.on("touch", (touchEvent) => {
42    console.log(`Monitor on success ${JSON.stringify(touchEvent)}`);
43    return false;
44  });
45} catch (error) {
46  console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
47}
48```
49
50## inputMonitor.on<sup>9+</sup>
51
52on(type: "mouse", receiver: Callback&lt;MouseEvent&gt;): void
53
54开始监听全局鼠标事件。
55
56**需要权限:** ohos.permission.INPUT_MONITORING
57
58**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
59
60**参数:**
61
62| 参数名       | 类型                         | 必填   | 说明                  |
63| -------- | -------------------------- | ---- | ------------------- |
64| type     | string                     | 是    | 输入设备事件类型,取值“mouse”。 |
65| receiver | Callback&lt;MouseEvent&gt; | 是    | 回调函数,异步上报鼠标输入事件。  |
66
67  **示例:**
68
69```js
70try {
71  inputMonitor.on("mouse", (mouseEvent) => {
72    console.log(`Monitor on success ${JSON.stringify(mouseEvent)}`);
73    return false;
74  });
75} catch (error) {
76  console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
77}
78```
79
80
81
82## inputMonitor.off
83
84off(type: "touch", receiver?: TouchEventReceiver): void
85
86停止监听全局触屏事件。
87
88**需要权限:** ohos.permission.INPUT_MONITORING
89
90**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
91
92**参数:**
93
94| 参数名       | 类型                                       | 必填   | 说明                  |
95| -------- | ---------------------------------------- | ---- | ------------------- |
96| type     | string                                   | 是    | 输入设备事件类型,取值“touch”。 |
97| receiver | [TouchEventReceiver](#toucheventreceiver) | 否    | 需要取消监听的回调函数,若无此参数,则取消当前应用监听的所有回调函数。  |
98
99**示例:**
100
101```js
102// 取消监听单个回调函数
103function callback(touchEvent) {
104  console.log(`Monitor on success ${JSON.stringify(touchEvent)}`);
105  return false;
106};
107try {
108  inputMonitor.on("touch", callback);
109  inputMonitor.off("touch", callback);
110  console.log(`Monitor off success`);
111} catch (error) {
112  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
113}
114```
115
116```js
117// 取消监听所有回调函数
118function callback(touchEvent) {
119  console.log(`Monitor on success ${JSON.stringify(touchEvent)}`);
120  return false;
121};
122try {
123  inputMonitor.on("touch", callback);
124  inputMonitor.off("touch");
125  console.log(`Monitor off success`);
126} catch (error) {
127  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
128}
129```
130
131## inputMonitor.off<sup>9+</sup>
132
133off(type: "mouse", receiver?: Callback&lt;MouseEvent&gt;): void
134
135停止监听全局鼠标事件。
136
137**需要权限:** ohos.permission.INPUT_MONITORING
138
139**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
140
141**参数:**
142
143| 参数名       | 类型                         | 必填   | 说明                  |
144| -------- | -------------------------- | ---- | ------------------- |
145| type     | string                     | 是    | 输入设备事件类型,取值“mouse”。 |
146| receiver | Callback&lt;MouseEvent&gt; | 否    | 需要取消监听的回调函数,若无此参数,则取消当前应用监听的所有回调函数。 |
147
148**示例:**
149
150```js
151// 取消监听单个回调函数
152function callback(mouseEvent) {
153  console.log(`Monitor on success ${JSON.stringify(mouseEvent)}`);
154  return false;
155};
156try {
157  inputMonitor.on("mouse", callback);
158  inputMonitor.off("mouse", callback);
159  console.log(`Monitor off success`);
160} catch (error) {
161  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
162}
163```
164
165```js
166// 取消监听所有回调函数
167function callback(mouseEvent) {
168  console.log(`Monitor on success ${JSON.stringify(mouseEvent)}`);
169  return false;
170};
171try {
172  inputMonitor.on("mouse", callback);
173  inputMonitor.off("mouse");
174  console.log(`Monitor off success`);
175} catch (error) {
176  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
177}
178```
179
180## TouchEventReceiver
181
182触摸输入事件的回调函数。
183
184**需要权限:** ohos.permission.INPUT_MONITORING
185
186**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
187
188**参数:**
189
190| 参数         | 类型                                       | 必填   | 说明                                       |
191| ---------- | ---------------------------------------- | ---- | ---------------------------------------- |
192| touchEvent | [TouchEvent](../arkui-js/js-components-common-events.md) | 是    | 触摸输入事件。 |
193
194**返回值:**
195
196| 类型      | 说明                                       |
197| ------- | ---------------------------------------- |
198| Boolean | 若返回true,本次触摸后续产生的事件不再分发到窗口;若返回false,本次触摸后续产生的事件还会分发到窗口。 |
199
200**示例:**
201
202```js
203try {
204  inputMonitor.on("touch", touchEvent => {
205    if (touchEvent.touches.length == 3) { // 当前有三个手指按下
206      return true;
207    }
208    return false;
209  });
210} catch (error) {
211    console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
212}
213```
214