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
38**示例**:
39
40```js
41try {
42  pointer.setPointerVisible(true, (error: Error) => {
43    if (error) {
44      console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
45      return;
46    }
47    console.log(`Set pointer visible success`);
48  });
49} catch (error) {
50  console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
51}
52```
53
54## pointer.setPointerVisible
55
56setPointerVisible(visible: boolean): Promise<void>
57
58设置鼠标指针显示或者隐藏,使用Promise异步方式返回结果。
59
60**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
61
62**参数**:
63
64| 参数名      | 类型      | 必填   | 说明                                       |
65| ------- | ------- | ---- | ---------------------------------------- |
66| visible | boolean | 是    | 鼠标指针是否显示。true表示显示,false表示不显示。 |
67
68**返回值**:
69
70| 参数                  | 说明                  |
71| ------------------- | ------------------- |
72| Promise<void> | Promise对象。 |
73
74**错误码**:
75
76以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。。
77
78| 错误码ID  | 错误信息             |
79| ---- | --------------------- |
80| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
81
82**示例**:
83
84```js
85try {
86  pointer.setPointerVisible(false).then(() => {
87    console.log(`Set pointer visible success`);
88  });
89} catch (error) {
90  console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
91}
92```
93
94## pointer.setPointerVisibleSync<sup>10+</sup>
95
96setPointerVisibleSync(visible: boolean): void
97
98使用同步方式设置鼠标指针显示或者隐藏。
99
100**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
101
102**参数**:
103
104| 参数名      | 类型      | 必填   | 说明                                       |
105| ------- | ------- | ---- | ---------------------------------------- |
106| visible | boolean | 是    | 鼠标指针是否显示。true表示显示,false表示不显示。 |
107
108**错误码**:
109
110以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
111
112| 错误码ID  | 错误信息             |
113| ---- | --------------------- |
114| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
115
116**示例**:
117
118```js
119try {
120  pointer.setPointerVisibleSync(false);
121  console.log(`Set pointer visible success`);
122} catch (error) {
123  console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
124}
125```
126
127## pointer.isPointerVisible
128
129isPointerVisible(callback: AsyncCallback&lt;boolean&gt;): void
130
131获取鼠标指针显示或隐藏状态,使用AsyncCallback异步方式返回结果。
132
133**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
134
135**参数**:
136
137| 参数名       | 类型                           | 必填   | 说明             |
138| -------- | ---------------------------- | ---- | -------------- |
139| callback | AsyncCallback&lt;boolean&gt; | 是    | 回调函数,异步返回鼠标指针状态,true为显示,false为隐藏。 |
140
141**错误码**:
142
143以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
144
145| 错误码ID  | 错误信息             |
146| ---- | --------------------- |
147| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
148
149**示例**:
150
151```js
152try {
153  pointer.isPointerVisible((error: Error, visible: boolean) => {
154    if (error) {
155      console.log(`Get pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
156      return;
157    }
158    console.log(`Get pointer visible success, visible: ${JSON.stringify(visible)}`);
159  });
160} catch (error) {
161  console.log(`Get pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
162}
163```
164
165## pointer.isPointerVisible
166
167isPointerVisible(): Promise&lt;boolean&gt;
168
169获取鼠标指针显示或隐藏状态,使用Promise异步方式返回结果。
170
171**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
172
173**返回值**:
174
175| 参数                     | 说明                  |
176| ---------------------- | ------------------- |
177| Promise&lt;boolean&gt; | Promise对象,异步返回鼠标指针显示或隐藏状态。 |
178
179**示例**:
180
181```js
182try {
183  pointer.isPointerVisible().then((visible: boolean) => {
184    console.log(`Get pointer visible success, visible: ${JSON.stringify(visible)}`);
185  });
186} catch (error) {
187  console.log(`Get pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
188}
189```
190
191## pointer.isPointerVisibleSync<sup>10+</sup>
192
193isPointerVisibleSync(): boolean
194
195使用同步方式获取鼠标指针显示或者隐藏。
196
197**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
198
199**返回值**:
200
201| 参数                     | 说明                  |
202| ---------------------- | ------------------- |
203| boolean | 返回鼠标指针显示或隐藏状态。true代表显示状态,false代表隐藏状态。 |
204
205**示例**:
206
207```js
208try {
209  let visible: boolean = pointer.isPointerVisibleSync();
210  console.log(`Get pointer visible success, visible: ${JSON.stringify(visible)}`);
211} catch (error) {
212  console.log(`Get pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
213}
214```
215
216## pointer.getPointerStyle
217
218getPointerStyle(windowId: number, callback: AsyncCallback&lt;PointerStyle&gt;): void
219
220获取鼠标样式类型,使用AsyncCallback异步方式返回结果。
221
222**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
223
224**参数**:
225
226| 参数名       | 类型                                       | 必填   | 说明             |
227| -------- | ---------------------------------------- | ---- | -------------- |
228| windowId | number                                   | 是    | 窗口id。    |
229| callback | AsyncCallback&lt;[PointerStyle](#pointerstyle)&gt; | 是    | 回调函数,异步返回鼠标样式类型。 |
230
231**错误码**:
232
233以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
234
235| 错误码ID  | 错误信息             |
236| ---- | --------------------- |
237| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
238
239**示例**:
240
241```js
242import { BusinessError } from '@kit.BasicServicesKit';
243import { window } from '@kit.ArkUI';
244
245let context = getContext(this);
246window.getLastWindow(context, (error: BusinessError, win: window.Window) => {
247  if (error.code) {
248    console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error));
249    return;
250  }
251  let windowId = win.getWindowProperties().id;
252  if (windowId < 0) {
253    console.log(`Invalid windowId`);
254    return;
255  }
256  try {
257    pointer.getPointerStyle(windowId, (error: Error, style: pointer.PointerStyle) => {
258      console.log(`Get pointer style success, style: ${JSON.stringify(style)}`);
259    });
260  } catch (error) {
261    console.log(`Get pointer style failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
262  }
263});
264```
265
266## pointer.getPointerStyle
267
268getPointerStyle(windowId: number): Promise&lt;PointerStyle&gt;
269
270获取鼠标样式类型,使用Promise异步方式返回结果。
271
272**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
273
274**参数**:
275
276| 参数名     | 类型   | 必填 | 说明     |
277| -------- | ------ | ---- | -------- |
278| windowId | number | 是   | 窗口id。 |
279
280**返回值**:
281
282| 参数                                       | 说明                  |
283| ---------------------------------------- | ------------------- |
284| Promise&lt;[PointerStyle](#pointerstyle)&gt; | Promise实例,异步返回鼠标样式类型。 |
285
286**错误码**:
287
288以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
289
290| 错误码ID  | 错误信息             |
291| ---- | --------------------- |
292| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
293
294**示例**:
295
296```js
297import { BusinessError } from '@kit.BasicServicesKit';
298import { window } from '@kit.ArkUI';
299
300let context = getContext(this);
301window.getLastWindow(context, (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(getContext(), (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(getContext(), (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(getContext(), (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
590## pointer.setCustomCursor<sup>11+</sup>
591
592setCustomCursor(windowId: number, pixelMap: image.PixelMap, focusX?: number, focusY?: number): Promise&lt;void&gt;
593
594设置自定义光标样式,使用Promise异步方式返回结果。
595
596**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
597
598**参数**:
599
600| 参数名    | 类型     | 必填   | 说明                                  |
601| ----- | ------ | ---- | ----------------------------------- |
602| windowId  | number  | 是    | 窗口id。                          |
603| pixelMap  | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是    | 自定义光标资源。 |
604| focusX  | number | 否    | 自定义光标焦点x, 取值范围:大于等于0,默认为0。 |
605| focusY  | number | 否    | 自定义光标焦点y,取值范围:大于等于0,默认为0。 |
606
607**返回值**:
608
609| 参数                  | 说明               |
610| ------------------- | ---------------- |
611| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
612
613**错误码**:
614
615以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
616
617| 错误码ID  | 错误信息             |
618| ---- | --------------------- |
619| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
620
621**示例**:
622
623```js
624import { image } from '@kit.ImageKit';
625import { BusinessError } from '@kit.BasicServicesKit';
626import { window } from '@kit.ArkUI';
627getContext().resourceManager.getMediaContent($r("app.media.app_icon")).then((svgFileData) => {
628  const svgBuffer: ArrayBuffer = svgFileData.buffer.slice(0);
629  let svgImagesource: image.ImageSource = image.createImageSource(svgBuffer);
630  let svgDecodingOptions: image.DecodingOptions = {desiredSize: { width: 50, height:50 }};
631  svgImagesource.createPixelMap(svgDecodingOptions).then((pixelMap) => {
632    window.getLastWindow(getContext(), (error: BusinessError, win: window.Window) => {
633      let windowId = win.getWindowProperties().id;
634        try {
635          pointer.setCustomCursor(windowId, pixelMap).then(() => {
636            console.log(`setCustomCursor success`);
637          });
638        } catch (error) {
639          console.log(`setCustomCursor failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
640        }
641      });
642  });
643});
644```
645
646## pointer.setCustomCursorSync<sup>11+</sup>
647
648setCustomCursorSync(windowId: number, pixelMap: image.PixelMap, focusX?: number, focusY?: number): void
649
650设置自定义光标样式,使用同步方式进行设置。
651
652**系统能力**:SystemCapability.MultimodalInput.Input.Pointer
653
654**参数**:
655
656| 参数名    | 类型     | 必填   | 说明                                  |
657| ----- | ------ | ---- | ----------------------------------- |
658| windowId  | number  | 是    | 窗口id。                          |
659| pixelMap  | [image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7) | 是    | 自定义光标资源。 |
660| focusX  | number | 否    | 自定义光标焦点x, 取值范围:大于等于0,默认为0。 |
661| focusY  | number | 否    | 自定义光标焦点y,取值范围:大于等于0,默认为0。 |
662
663**错误码**:
664
665以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
666
667| 错误码ID  | 错误信息             |
668| ---- | --------------------- |
669| 401  | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified;2. Incorrect parameter types; 3. Parameter verification failed. |
670
671**示例**:
672
673```js
674import { image } from '@kit.ImageKit';
675import { BusinessError } from '@kit.BasicServicesKit';
676import { window } from '@kit.ArkUI';
677const svgFileData = getContext().resourceManager.getMediaContent($r("app.media.app_icon")).then((svgFileData) => {
678  const svgBuffer: ArrayBuffer = svgFileData.buffer.slice(0);
679  let svgImagesource: image.ImageSource = image.createImageSource(svgBuffer);
680  let svgDecodingOptions: image.DecodingOptions = {desiredSize: { width: 50, height:50 }};
681  svgImagesource.createPixelMap(svgDecodingOptions).then((pixelMap) => {
682    window.getLastWindow(getContext(), (error: BusinessError, win: window.Window) => {
683      let windowId = win.getWindowProperties().id;
684        try {
685          pointer.setCustomCursorSync(windowId, pixelMap, 25, 25);
686          console.log(`setCustomCursorSync success`);
687        } catch (error) {
688          console.log(`setCustomCursorSync failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
689        }
690    });
691  });
692});
693```