• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.multimodalInput.pointer (鼠标指针)
2
3鼠标指针管理模块,用于查询和设置鼠标指针相关属性。
4
5> **说明**:
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```js
12import { pointer } from '@kit.InputKit';
13```
14
15## pointer.setPointerVisible
16
17setPointerVisible(visible: boolean, callback: AsyncCallback<void>): void
18
19设置鼠标指针显示或者隐藏,使用AsyncCallback异步方式返回结果。
20
21**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
22
23**参数**:
24
25| 参数名       | 类型                        | 必填   | 说明                                       |
26| -------- | ------------------------- | ---- | ---------------------------------------- |
27| visible  | boolean                   | 是    | 鼠标指针是否显示。true表示显示,false表示不显示。 |
28| callback | AsyncCallback<void> | 是    | 回调函数。 |
29
30**错误码**:
31
32以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
33
34| 错误码ID  | 错误信息             |
35| ---- | --------------------- |
36| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
37| 801  | Capability not supported. |
38
39**示例**:
40
41```js
42try {
43  pointer.setPointerVisible(true, (error: Error) => {
44    if (error) {
45      console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
46      return;
47    }
48    console.log(`Set pointer visible success`);
49  });
50} catch (error) {
51  console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
52}
53```
54
55## pointer.setPointerVisible
56
57setPointerVisible(visible: boolean): Promise<void>
58
59设置鼠标指针显示或者隐藏,使用Promise异步方式返回结果。
60
61**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
62
63**参数**:
64
65| 参数名      | 类型      | 必填   | 说明                                       |
66| ------- | ------- | ---- | ---------------------------------------- |
67| visible | boolean | 是    | 鼠标指针是否显示。true表示显示,false表示不显示。 |
68
69**返回值**:
70
71| 参数                  | 说明                  |
72| ------------------- | ------------------- |
73| Promise<void> | Promise对象。 |
74
75**错误码**:
76
77以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
78
79| 错误码ID  | 错误信息             |
80| ---- | --------------------- |
81| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
82| 801  | Capability not supported. |
83
84**示例**:
85
86```js
87try {
88  pointer.setPointerVisible(false).then(() => {
89    console.log(`Set pointer visible success`);
90  });
91} catch (error) {
92  console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
93}
94```
95
96## pointer.setPointerVisibleSync<sup>10+</sup>
97
98setPointerVisibleSync(visible: boolean): void
99
100使用同步方式设置鼠标指针显示或者隐藏。
101
102**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
103
104**参数**:
105
106| 参数名      | 类型      | 必填   | 说明                                       |
107| ------- | ------- | ---- | ---------------------------------------- |
108| visible | boolean | 是    | 鼠标指针是否显示。true表示显示,false表示不显示。 |
109
110**错误码**:
111
112以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
113
114| 错误码ID  | 错误信息             |
115| ---- | --------------------- |
116| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
117
118**示例**:
119
120```js
121try {
122  pointer.setPointerVisibleSync(false);
123  console.log(`Set pointer visible success`);
124} catch (error) {
125  console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
126}
127```
128
129## pointer.isPointerVisible
130
131isPointerVisible(callback: AsyncCallback&lt;boolean&gt;): void
132
133获取鼠标指针显示或隐藏状态,使用AsyncCallback异步方式返回结果。
134
135**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
136
137**参数**:
138
139| 参数名       | 类型                           | 必填   | 说明             |
140| -------- | ---------------------------- | ---- | -------------- |
141| callback | AsyncCallback&lt;boolean&gt; | 是    | 回调函数,异步返回鼠标指针状态,true为显示,false为隐藏。 |
142
143**错误码**:
144
145以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
146
147| 错误码ID  | 错误信息             |
148| ---- | --------------------- |
149| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
150
151**示例**:
152
153```js
154try {
155  pointer.isPointerVisible((error: Error, visible: boolean) => {
156    if (error) {
157      console.log(`Get pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
158      return;
159    }
160    console.log(`Get pointer visible success, visible: ${JSON.stringify(visible)}`);
161  });
162} catch (error) {
163  console.log(`Get pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
164}
165```
166
167## pointer.isPointerVisible
168
169isPointerVisible(): Promise&lt;boolean&gt;
170
171获取鼠标指针显示或隐藏状态,使用Promise异步方式返回结果。
172
173**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
174
175**返回值**:
176
177| 参数                     | 说明                  |
178| ---------------------- | ------------------- |
179| Promise&lt;boolean&gt; | Promise对象,异步返回鼠标指针显示或隐藏状态。true代表显示状态,false代表隐藏状态。 |
180
181**示例**:
182
183```js
184try {
185  pointer.isPointerVisible().then((visible: boolean) => {
186    console.log(`Get pointer visible success, visible: ${JSON.stringify(visible)}`);
187  });
188} catch (error) {
189  console.log(`Get pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
190}
191```
192
193## pointer.isPointerVisibleSync<sup>10+</sup>
194
195isPointerVisibleSync(): boolean
196
197使用同步方式获取鼠标指针显示或者隐藏。
198
199**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
200
201**返回值**:
202
203| 参数                     | 说明                  |
204| ---------------------- | ------------------- |
205| boolean | 返回鼠标指针显示或隐藏状态。true代表显示状态,false代表隐藏状态。 |
206
207**示例**:
208
209```js
210try {
211  let visible: boolean = pointer.isPointerVisibleSync();
212  console.log(`Get pointer visible success, visible: ${JSON.stringify(visible)}`);
213} catch (error) {
214  console.log(`Get pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
215}
216```
217
218## pointer.getPointerStyle
219
220getPointerStyle(windowId: number, callback: AsyncCallback&lt;PointerStyle&gt;): void
221
222获取鼠标样式类型,使用AsyncCallback异步方式返回结果。
223
224**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
225
226**参数**:
227
228| 参数名       | 类型                                       | 必填   | 说明             |
229| -------- | ---------------------------------------- | ---- | -------------- |
230| windowId | number                                   | 是    | 窗口id。    |
231| callback | AsyncCallback&lt;[PointerStyle](#pointerstyle)&gt; | 是    | 回调函数,异步返回鼠标样式类型。 |
232
233**错误码**:
234
235以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
236
237| 错误码ID  | 错误信息             |
238| ---- | --------------------- |
239| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
240
241**示例**:
242
243```js
244import { BusinessError } from '@kit.BasicServicesKit';
245import { window } from '@kit.ArkUI';
246
247window.getLastWindow(this.getUIContext().getHostContext(), (error: BusinessError, win: window.Window) => {
248  if (error.code) {
249    console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error));
250    return;
251  }
252  let windowId = win.getWindowProperties().id;
253  if (windowId < 0) {
254    console.log(`Invalid windowId`);
255    return;
256  }
257  try {
258    pointer.getPointerStyle(windowId, (error: Error, style: pointer.PointerStyle) => {
259      console.log(`Get pointer style success, style: ${JSON.stringify(style)}`);
260    });
261  } catch (error) {
262    console.log(`Get pointer style failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
263  }
264});
265```
266
267## pointer.getPointerStyle
268
269getPointerStyle(windowId: number): Promise&lt;PointerStyle&gt;
270
271获取鼠标样式类型,使用Promise异步方式返回结果。
272
273**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
274
275**参数**:
276
277| 参数名     | 类型   | 必填 | 说明     |
278| -------- | ------ | ---- | -------- |
279| windowId | number | 是   | 窗口id。 |
280
281**返回值**:
282
283| 参数                                       | 说明                  |
284| ---------------------------------------- | ------------------- |
285| Promise&lt;[PointerStyle](#pointerstyle)&gt; | Promise实例,异步返回鼠标样式类型。 |
286
287**错误码**:
288
289以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
290
291| 错误码ID  | 错误信息             |
292| ---- | --------------------- |
293| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
294
295**示例**:
296
297```js
298import { BusinessError } from '@kit.BasicServicesKit';
299import { window } from '@kit.ArkUI';
300
301window.getLastWindow(this.getUIContext().getHostContext(), (error: BusinessError, win: window.Window) => {
302  if (error.code) {
303    console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error));
304    return;
305  }
306  let windowId = win.getWindowProperties().id;
307  if (windowId < 0) {
308    console.log(`Invalid windowId`);
309    return;
310  }
311  try {
312    pointer.getPointerStyle(windowId).then((style: pointer.PointerStyle) => {
313      console.log(`Get pointer style success, style: ${JSON.stringify(style)}`);
314    });
315  } catch (error) {
316    console.log(`Get pointer style failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
317  }
318});
319```
320
321## pointer.getPointerStyleSync<sup>10+</sup>
322
323getPointerStyleSync(windowId: number): PointerStyle
324
325使用同步方式获取鼠标样式类型。
326
327**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
328
329**参数**:
330
331| 参数名     | 类型   | 必填 | 说明     |
332| -------- | ------ | ---- | -------- |
333| windowId | number | 是   | 窗口id。<br>默认值为-1,表示获取全局的鼠标样式。 |
334
335**返回值**:
336
337| 参数                                       | 说明                  |
338| ---------------------------------------- | ------------------- |
339| [PointerStyle](#pointerstyle) | 返回鼠标样式类型。 |
340
341**错误码**:
342
343以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
344
345| 错误码ID  | 错误信息             |
346| ---- | --------------------- |
347| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
348
349**示例**:
350
351```js
352import { pointer } from '@kit.InputKit';
353
354let windowId = -1;
355try {
356  let style: pointer.PointerStyle = pointer.getPointerStyleSync(windowId);
357  console.log(`Get pointer style success, style: ${JSON.stringify(style)}`);
358} catch (error) {
359  console.log(`Get pointer style failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
360}
361```
362
363## pointer.setPointerStyle
364
365setPointerStyle(windowId: number, pointerStyle: PointerStyle, callback: AsyncCallback&lt;void&gt;): void
366
367设置鼠标样式类型,使用AsyncCallback异步方式返回结果。
368
369**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
370
371**参数**:
372
373| 参数名           | 类型                             | 必填   | 说明                                  |
374| ------------ | ------------------------------ | ---- | ----------------------------------- |
375| windowId     | number                         | 是    | 窗口id。                          |
376| pointerStyle | [PointerStyle](#pointerstyle) | 是    | 鼠标样式。                             |
377| callback     | AsyncCallback&lt;void&gt;      | 是    | 回调函数。 |
378
379**错误码**:
380
381以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
382
383| 错误码ID  | 错误信息             |
384| ---- | --------------------- |
385| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
386
387**示例**:
388
389```js
390import { BusinessError } from '@kit.BasicServicesKit';
391import { window } from '@kit.ArkUI';
392
393window.getLastWindow(this.getUIContext().getHostContext(), (error: BusinessError, win: window.Window) => {
394  if (error.code) {
395    console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error));
396    return;
397  }
398  let windowId = win.getWindowProperties().id;
399  if (windowId < 0) {
400    console.log(`Invalid windowId`);
401    return;
402  }
403  try {
404    pointer.setPointerStyle(windowId, pointer.PointerStyle.CROSS, error => {
405      console.log(`Set pointer style success`);
406    });
407  } catch (error) {
408    console.log(`Set pointer style failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
409  }
410});
411```
412## pointer.setPointerStyle
413
414setPointerStyle(windowId: number, pointerStyle: PointerStyle): Promise&lt;void&gt;
415
416设置鼠标样式类型,使用Promise异步方式返回结果。
417
418**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
419
420**参数**:
421
422| 参数名                  | 类型                             | 必填   | 说明               |
423| ------------------- | ------------------------------ | ---- | ---------------- |
424| windowId            | number                         | 是    | 窗口id。       |
425| pointerStyle        | [PointerStyle](#pointerstyle) | 是    | 鼠标样式。          |
426
427**返回值**:
428
429| 参数                  | 说明                  |
430| ------------------- | ------------------- |
431| Promise&lt;void&gt; | Promise对象。 |
432
433**错误码**:
434
435以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
436
437| 错误码ID  | 错误信息             |
438| ---- | --------------------- |
439| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
440
441**示例**:
442
443```js
444import { BusinessError } from '@kit.BasicServicesKit';
445import { window } from '@kit.ArkUI';
446
447window.getLastWindow(this.getUIContext().getHostContext(), (error: BusinessError, win: window.Window) => {
448  if (error.code) {
449    console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error));
450    return;
451  }
452  let windowId = win.getWindowProperties().id;
453  if (windowId < 0) {
454    console.log(`Invalid windowId`);
455    return;
456  }
457  try {
458    pointer.setPointerStyle(windowId, pointer.PointerStyle.CROSS).then(() => {
459      console.log(`Set pointer style success`);
460    });
461  } catch (error) {
462    console.log(`Set pointer style failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
463  }
464});
465```
466
467## pointer.setPointerStyleSync<sup>10+</sup>
468
469setPointerStyleSync(windowId: number, pointerStyle: PointerStyle): void
470
471使用同步方式设置鼠标样式类型。
472
473**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
474
475**参数**:
476
477| 参数名                  | 类型                             | 必填   | 说明               |
478| ------------------- | ------------------------------ | ---- | ---------------- |
479| windowId            | number                         | 是    | 窗口id。       |
480| pointerStyle        | [PointerStyle](#pointerstyle) | 是    | 鼠标样式。          |
481
482**错误码**:
483
484以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
485
486| 错误码ID  | 错误信息             |
487| ---- | --------------------- |
488| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
489
490**示例**:
491```js
492import { BusinessError } from '@kit.BasicServicesKit';
493import { window } from '@kit.ArkUI';
494
495window.getLastWindow(this.getUIContext().getHostContext(), (error: BusinessError, win: window.Window) => {
496  if (error.code) {
497    console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error));
498    return;
499  }
500  let windowId = win.getWindowProperties().id;
501  if (windowId < 0) {
502    console.log(`Invalid windowId`);
503    return;
504  }
505  try {
506    pointer.setPointerStyleSync(windowId, pointer.PointerStyle.CROSS);
507    console.log(`Set pointer style success`);
508  } catch (error) {
509    console.log(`getPointerSize failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
510  }
511});
512```
513
514## PrimaryButton<sup>10+</sup>
515
516鼠标主键类型。
517
518**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
519
520| 名称                               | 值    | 说明     |
521| -------------------------------- | ---- | ------ |
522| LEFT                          | 0    | 鼠标左键。     |
523| RIGHT                             | 1    | 鼠标右键。   |
524
525## RightClickType<sup>10+</sup>
526
527右键菜单触发方式。
528
529**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
530
531| 名称                               | 值    | 说明     |
532| -------------------------------- | ---- | ------ |
533| TOUCHPAD_RIGHT_BUTTON            | 1    |触控板右键区域。 |
534| TOUCHPAD_LEFT_BUTTON            | 2    |触控板左键区域。 |
535| TOUCHPAD_TWO_FINGER_TAP         | 3    |双指轻击或按压触控板。|
536
537## PointerStyle
538
539鼠标样式类型。
540
541**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
542
543| 名称                               | 值    | 说明     |图示 |
544| -------------------------------- | ---- | ------ |------ |
545| DEFAULT                          | 0    | 默认     |![Default.png](./figures/Default.png)|
546| EAST                             | 1    | 向东箭头   |![East.png](./figures/East.png)|
547| WEST                             | 2    | 向西箭头   |![West.png](./figures/West.png)|
548| SOUTH                            | 3    | 向南箭头   |![South.png](./figures/South.png)|
549| NORTH                            | 4    | 向北箭头   |![North.png](./figures/North.png)|
550| WEST_EAST                        | 5    | 向西东箭头  |![West_East.png](./figures/West_East.png)|
551| NORTH_SOUTH                      | 6    | 向北南箭头  |![North_South.png](./figures/North_South.png)|
552| NORTH_EAST                       | 7    | 向东北箭头  |![North_East.png](./figures/North_East.png)|
553| NORTH_WEST                       | 8    | 向西北箭头  |![North_West.png](./figures/North_West.png)|
554| SOUTH_EAST                       | 9    | 向东南箭头  |![South_East.png](./figures/South_East.png)|
555| SOUTH_WEST                       | 10   | 向西南箭头  |![South_West.png](./figures/South_West.png)|
556| NORTH_EAST_SOUTH_WEST            | 11   | 东北西南调整 |![North_East_South_West.png](./figures/North_East_South_West.png)|
557| NORTH_WEST_SOUTH_EAST            | 12   | 西北东南调整 |![North_West_South_East.png](./figures/North_West_South_East.png)|
558| CROSS                            | 13   | 准确选择   |![Cross.png](./figures/Cross.png)|
559| CURSOR_COPY                      | 14   | 拷贝     |![Copy.png](./figures/Copy.png)|
560| CURSOR_FORBID                    | 15   | 不可用    |![Forbid.png](./figures/Forbid.png)|
561| COLOR_SUCKER                     | 16   | 滴管     |![Colorsucker.png](./figures/Colorsucker.png)|
562| HAND_GRABBING                    | 17   | 并拢的手   |![Hand_Grabbing.png](./figures/Hand_Grabbing.png)|
563| HAND_OPEN                        | 18   | 张开的手   |![Hand_Open.png](./figures/Hand_Open.png)|
564| HAND_POINTING                    | 19   | 手形指针   |![Hand_Poniting.png](./figures/Hand_Pointing.png)|
565| HELP                             | 20   | 帮助选择   |![Help.png](./figures/Help.png)|
566| MOVE                             | 21   | 移动     |![Move.png](./figures/Move.png)|
567| RESIZE_LEFT_RIGHT                | 22   | 内部左右调整 |![Resize_Left_Right.png](./figures/Resize_Left_Right.png)|
568| RESIZE_UP_DOWN                   | 23   | 内部上下调整 |![Resize_Up_Down.png](./figures/Resize_Up_Down.png)|
569| SCREENSHOT_CHOOSE                | 24   | 截图十字准星 |![Screenshot_Cross.png](./figures/Screenshot_Cross.png)|
570| SCREENSHOT_CURSOR                | 25   | 截图     |![Screenshot_Cursor.png](./figures/Screenshot_Cursor.png)|
571| TEXT_CURSOR                      | 26   | 文本选择   |![Text_Cursor.png](./figures/Text_Cursor.png)|
572| ZOOM_IN                          | 27   | 放大     |![Zoom_In.png](./figures/Zoom_In.png)|
573| ZOOM_OUT                         | 28   | 缩小     |![Zoom_Out.png](./figures/Zoom_Out.png)|
574| MIDDLE_BTN_EAST                  | 29   | 向东滚动   |![MID_Btn_East.png](./figures/MID_Btn_East.png)|
575| MIDDLE_BTN_WEST                  | 30   | 向西滚动   |![MID_Btn_West.png](./figures/MID_Btn_West.png)|
576| MIDDLE_BTN_SOUTH                 | 31   | 向南滚动   | ![MID_Btn_South.png](./figures/MID_Btn_South.png)            |
577| MIDDLE_BTN_NORTH                 | 32   | 向北滚动   |![MID_Btn_North.png](./figures/MID_Btn_North.png)|
578| MIDDLE_BTN_NORTH_SOUTH           | 33   | 向南北滚动  |![MID_Btn_North_South.png](./figures/MID_Btn_North_South.png)|
579| MIDDLE_BTN_NORTH_EAST            | 34   | 向东北滚动  |![MID_Btn_North_East.png](./figures/MID_Btn_North_East.png)|
580| MIDDLE_BTN_NORTH_WEST            | 35   | 向西北滚动  |![MID_Btn_North_West.png](./figures/MID_Btn_North_West.png)|
581| MIDDLE_BTN_SOUTH_EAST            | 36   | 向东南滚动  |![MID_Btn_South_East.png](./figures/MID_Btn_South_East.png)|
582| MIDDLE_BTN_SOUTH_WEST            | 37   | 向西南滚动  |![MID_Btn_South_West.png](./figures/MID_Btn_South_West.png)|
583| MIDDLE_BTN_NORTH_SOUTH_WEST_EAST | 38   | 四向锥形移动 |![MID_Btn_North_South_West_East.png](./figures/MID_Btn_North_South_West_East.png)|
584| HORIZONTAL_TEXT_CURSOR<sup>10+</sup> | 39 | 垂直文本选择 |![Horizontal_Text_Cursor.png](./figures/Horizontal_Text_Cursor.png)|
585| CURSOR_CROSS<sup>10+</sup> | 40 | 十字光标 |![Cursor_Cross.png](./figures/Cursor_Cross.png)|
586| CURSOR_CIRCLE<sup>10+</sup> | 41 | 圆形光标 |![Cursor_Circle.png](./figures/Cursor_Circle.png)|
587| LOADING<sup>10+</sup> | 42 | 正在载入动画光标 |![Loading.png](./figures/Loading.png)<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
588| RUNNING<sup>10+</sup> | 43 | 后台运行中动画光标 |![Running.png](./figures/Running.png)<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。|
589| MIDDLE_BTN_EAST_WEST<sup>18+</sup>          | 44   | 向东西滚动 |![MID_Btn_East_West.png](./figures/MID_Btn_East_West.png)|
590
591## pointer.setCustomCursor<sup>11+</sup>
592
593setCustomCursor(windowId: number, pixelMap: image.PixelMap, focusX?: number, focusY?: number): Promise&lt;void&gt;
594
595设置自定义光标样式,使用Promise异步方式返回结果。
596
597**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
598
599**参数**:
600
601| 参数名    | 类型     | 必填   | 说明                                  |
602| ----- | ------ | ---- | ----------------------------------- |
603| windowId  | number  | 是    | 窗口id。                          |
604| pixelMap  | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是    | 自定义光标资源。 |
605| focusX  | number | 否    | 自定义光标焦点x,取值范围:大于等于0,默认为0。 |
606| focusY  | number | 否    | 自定义光标焦点y,取值范围:大于等于0,默认为0。 |
607
608**返回值**:
609
610| 参数                  | 说明               |
611| ------------------- | ---------------- |
612| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
613
614**错误码**:
615
616以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
617
618| 错误码ID  | 错误信息             |
619| ---- | --------------------- |
620| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
621
622**示例**:
623
624```js
625import { image } from '@kit.ImageKit';
626import { BusinessError } from '@kit.BasicServicesKit';
627import { window } from '@kit.ArkUI';
628this.getUIContext()?.getHostContext()?.resourceManager.getMediaContent($r("app.media.app_icon")).then((svgFileData) => {
629  const svgBuffer: ArrayBuffer = svgFileData.buffer.slice(0);
630  let svgImagesource: image.ImageSource = image.createImageSource(svgBuffer);
631  let svgDecodingOptions: image.DecodingOptions = {desiredSize: { width: 50, height:50 }};
632  svgImagesource.createPixelMap(svgDecodingOptions).then((pixelMap) => {
633    window.getLastWindow(this.getUIContext().getHostContext(), (error: BusinessError, win: window.Window) => {
634      let windowId = win.getWindowProperties().id;
635        try {
636          pointer.setCustomCursor(windowId, pixelMap).then(() => {
637            console.log(`setCustomCursor success`);
638          });
639        } catch (error) {
640          console.log(`setCustomCursor failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
641        }
642      });
643  });
644});
645```
646## CustomCursor<sup>15+</sup>
647
648自定义光标资源。
649
650**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
651| 名称     | 类型     | 可读     | 可写     | 说明     |
652| -------- | ------- | -------- | -------- | ------- |
653| pixelMap  | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 否   | 否   | 自定义光标。最小限制为资源图本身的最小限制。最大限制为256 x 256px。 |
654| focusX  | number | 否   | 是   | 自定义光标焦点的水平坐标。该坐标受自定义光标大小的限制。最小值为0,最大值为资源图的宽度最大值,该参数缺省时默认为0。 |
655| focusY  | number | 否   | 是   | 自定义光标焦点的垂直坐标。该坐标受自定义光标大小的限制。最小值为0,最大值为资源图的高度最大值,该参数缺省时默认为0。 |
656
657## CursorConfig<sup>15+</sup>
658
659自定义光标配置。
660
661**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
662
663| 名称     | 类型     | 可读     | 可写     | 说明     |
664| -------- | ------- | -------- | -------- | ------- |
665| followSystem  | boolean  | 否   | 否   | 是否根据系统设置调整光标大小。false表示使用自定义光标样式大小,true表示根据系统设置调整光标大小,可调整范围为:[光标资源图大小,256×256]。 |
666
667## pointer.setCustomCursor<sup>15+</sup>
668
669setCustomCursor(windowId: number, cursor: CustomCursor, config: CursorConfig): Promise&lt;void&gt;
670
671设置自定义光标样式,使用Promise异步回调。
672应用窗口布局改变、热区切换、页面跳转、光标移出再回到窗口、光标在窗口不同区域移动,以上场景可能导致光标切换回系统样式,需要开发者重新设置光标样式。
673
674**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
675
676**参数**:
677
678| 参数名    | 类型    | 必填    | 说明    |
679| -------- | -------- | -------- | -------- |
680| windowId  | number  | 是    | 窗口id。                          |
681| cursor  | [CustomCursor](js-apis-pointer.md#customcursor15) | 是    | 自定义光标资源。 |
682| config  | [CursorConfig](js-apis-pointer.md#cursorconfig15) | 是    | 自定义光标配置,用于配置是否根据系统设置调整光标大小。如果CursorConfig中followSystem设置为true,则光标大小的可调整范围为:[光标资源图大小,256×256]。 |
683
684**返回值**:
685
686| 参数                  | 说明               |
687| ------------------- | ---------------- |
688| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
689
690**错误码**:
691
692以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[输入设备错误码](./errorcode-inputdevice.md)。
693
694| 错误码ID  | 错误信息             |
695| ---- | --------------------- |
696| 401  | Parameter error. Possible causes: 1. Abnormal windowId parameter passed in. 2. Abnormal pixelMap parameter passed in; 3. Abnormal focusX parameter passed in.4. Abnormal focusY parameter passed in. |
697| 26500001 | Invalid windowId. |
698
699**示例**:
700
701```js
702import { image } from '@kit.ImageKit';
703import { BusinessError } from '@kit.BasicServicesKit';
704import { window } from '@kit.ArkUI';
705this.getUIContext()?.getHostContext()?.resourceManager.getMediaContent($r("app.media.app_icon")).then((svgFileData) => {
706  const svgBuffer: ArrayBuffer = svgFileData.buffer.slice(0);
707  let svgImagesource: image.ImageSource = image.createImageSource(svgBuffer);
708  let svgDecodingOptions: image.DecodingOptions = {desiredSize: { width: 50, height:50 }};
709  svgImagesource.createPixelMap(svgDecodingOptions).then((pixelMap) => {
710    window.getLastWindow(this.getUIContext().getHostContext(), (error: BusinessError, win: window.Window) => {
711      let windowId = win.getWindowProperties().id;
712        try {
713          pointer.setCustomCursor(windowId, {pixelMap: pixelMap, focusX: 25, focusY: 25}, {followSystem: false}).then(() => {
714            console.log(`setCustomCursor success`);
715          });
716        } catch (error) {
717          console.log(`setCustomCursor failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
718        }
719      });
720  });
721});
722```
723
724## pointer.setCustomCursorSync<sup>11+</sup>
725
726setCustomCursorSync(windowId: number, pixelMap: image.PixelMap, focusX?: number, focusY?: number): void
727
728设置自定义光标样式,使用同步方式进行设置。
729
730**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
731
732**参数**:
733
734| 参数名    | 类型     | 必填   | 说明                                  |
735| ----- | ------ | ---- | ----------------------------------- |
736| windowId  | number  | 是    | 窗口id。                          |
737| pixelMap  | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是    | 自定义光标资源。 |
738| focusX  | number | 否    | 自定义光标焦点x,取值范围:大于等于0,默认为0。 |
739| focusY  | number | 否    | 自定义光标焦点y,取值范围:大于等于0,默认为0。 |
740
741**错误码**:
742
743以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
744
745| 错误码ID  | 错误信息             |
746| ---- | --------------------- |
747| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
748
749**示例**:
750
751```js
752import { image } from '@kit.ImageKit';
753import { BusinessError } from '@kit.BasicServicesKit';
754import { window } from '@kit.ArkUI';
755const svgFileData = this.getUIContext()?.getHostContext()?.resourceManager.getMediaContent($r("app.media.app_icon")).then((svgFileData) => {
756  const svgBuffer: ArrayBuffer = svgFileData.buffer.slice(0);
757  let svgImagesource: image.ImageSource = image.createImageSource(svgBuffer);
758  let svgDecodingOptions: image.DecodingOptions = {desiredSize: { width: 50, height:50 }};
759  svgImagesource.createPixelMap(svgDecodingOptions).then((pixelMap) => {
760    window.getLastWindow(this.getUIContext().getHostContext(), (error: BusinessError, win: window.Window) => {
761      let windowId = win.getWindowProperties().id;
762        try {
763          pointer.setCustomCursorSync(windowId, pixelMap, 25, 25);
764          console.log(`setCustomCursorSync success`);
765        } catch (error) {
766          console.log(`setCustomCursorSync failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
767        }
768    });
769  });
770});
771```