1e41f4b71Sopenharmony_ci# @ohos.multimodalInput.inputDeviceCooperate (键鼠穿越)(系统接口)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci键鼠穿越功能模块,提供两台或多台设备组网协同后键鼠共享能力,实现键鼠输入设备的跨设备协同操作。
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci> **说明**
6e41f4b71Sopenharmony_ci>
7e41f4b71Sopenharmony_ci>- 从API Version 10开始,该接口不再维护,推荐使用新接口[@ohos.cooperate](../apis-distributedservice-kit/js-apis-devicestatus-cooperate-sys.md) (键鼠穿越)。
8e41f4b71Sopenharmony_ci> 
9e41f4b71Sopenharmony_ci>- 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
10e41f4b71Sopenharmony_ci>
11e41f4b71Sopenharmony_ci>- 本模块接口均为系统接口。
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci## 导入模块
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci```ts
16e41f4b71Sopenharmony_ciimport { inputDeviceCooperate } from '@kit.InputKit';
17e41f4b71Sopenharmony_ci```
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci## inputDeviceCooperate.enable
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_cienable(enable: boolean, callback: AsyncCallback<void>): void
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci开启、关闭键鼠穿越,使用AsyncCallback异步方式返回结果。
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci**系统能力**: SystemCapability.MultimodalInput.Input.Cooperator
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci**参数**:
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci| 参数名    | 类型      | 必填  | 说明    |
30e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | --------------------------- |
31e41f4b71Sopenharmony_ci| enable   | boolean                   | 是   | 键鼠穿越使能状态。 |
32e41f4b71Sopenharmony_ci| callback | AsyncCallback<void>  | 是  |回调函数,异步返回键鼠穿越开启、关闭结果。   |
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ci**错误码**:
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[ohos.devicestatus错误码](../apis-distributedservice-kit/errorcode-devicestatus.md)。
37e41f4b71Sopenharmony_ci
38e41f4b71Sopenharmony_ci| 错误码ID | 错误信息          |
39e41f4b71Sopenharmony_ci| -------- | -----------------|
40e41f4b71Sopenharmony_ci| 401 | Parameter error.      |
41e41f4b71Sopenharmony_ci
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci**示例**:
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci```ts
46e41f4b71Sopenharmony_ciimport { inputDeviceCooperate } from '@kit.InputKit';
47e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_citry {
50e41f4b71Sopenharmony_ci  inputDeviceCooperate.enable(true, (error: BusinessError) => {
51e41f4b71Sopenharmony_ci    if (error) {
52e41f4b71Sopenharmony_ci      console.log(`Keyboard mouse crossing enable failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
53e41f4b71Sopenharmony_ci      return;
54e41f4b71Sopenharmony_ci    }
55e41f4b71Sopenharmony_ci    console.log(`Keyboard mouse crossing enable success.`);
56e41f4b71Sopenharmony_ci  });
57e41f4b71Sopenharmony_ci} catch (error) {
58e41f4b71Sopenharmony_ci  console.log(`Keyboard mouse crossing enable failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
59e41f4b71Sopenharmony_ci}
60e41f4b71Sopenharmony_ci```
61e41f4b71Sopenharmony_ci
62e41f4b71Sopenharmony_ci## inputDeviceCooperate.enable
63e41f4b71Sopenharmony_ci
64e41f4b71Sopenharmony_cienable(enable: boolean): Promise<void>
65e41f4b71Sopenharmony_ci
66e41f4b71Sopenharmony_ci开启、关闭键鼠穿越,使用Promise异步方式返回结果。
67e41f4b71Sopenharmony_ci
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci**系统能力**: SystemCapability.MultimodalInput.Input.Cooperator
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci**参数**:
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci| 参数名     | 类型     | 必填  | 说明                                                                                 |
74e41f4b71Sopenharmony_ci| --------- | ------- | ---- | -------------------------------------------------------------------                 |
75e41f4b71Sopenharmony_ci| enable    | boolean | 是   | 键鼠穿越使能状态。                   |
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci**返回值**:
78e41f4b71Sopenharmony_ci
79e41f4b71Sopenharmony_ci| 参数                 | 说明                     |
80e41f4b71Sopenharmony_ci| ------------------- | ------------------------------- |
81e41f4b71Sopenharmony_ci| Promise<void>      | Promise对象,异步返回键鼠穿越开启、关闭结果。        |
82e41f4b71Sopenharmony_ci
83e41f4b71Sopenharmony_ci**错误码**:
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci| 错误码ID | 错误信息          |
88e41f4b71Sopenharmony_ci| -------- | -----------------|
89e41f4b71Sopenharmony_ci| 401 | Parameter error.      |
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci**示例**:
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci```ts
94e41f4b71Sopenharmony_ciimport { inputDeviceCooperate } from '@kit.InputKit';
95e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_citry {
98e41f4b71Sopenharmony_ci  inputDeviceCooperate.enable(true).then(() => {
99e41f4b71Sopenharmony_ci    console.log(`Keyboard mouse crossing enable success.`);
100e41f4b71Sopenharmony_ci  }, (error: BusinessError) => {
101e41f4b71Sopenharmony_ci    console.log(`Keyboard mouse crossing enable failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
102e41f4b71Sopenharmony_ci  });
103e41f4b71Sopenharmony_ci} catch (error) {
104e41f4b71Sopenharmony_ci  console.log(`Keyboard mouse crossing enable failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
105e41f4b71Sopenharmony_ci}
106e41f4b71Sopenharmony_ci```
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ci## inputDeviceCooperate.start
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_cistart(sinkDeviceDescriptor: string, srcInputDeviceId: number, callback: AsyncCallback\<void>): void
111e41f4b71Sopenharmony_ci
112e41f4b71Sopenharmony_ci启动键鼠穿越,使用AsyncCallback异步方式返回结果。
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MultimodalInput.Input.Cooperator
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ci**参数**:
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci| 参数名                | 类型                          | 必填  | 说明                            |
119e41f4b71Sopenharmony_ci| --------             | ---------------------------- | ----  | ----------------------------   |
120e41f4b71Sopenharmony_ci| sinkDeviceDescriptor | string                       |  是   | 键鼠穿越目标设备描述符。             |
121e41f4b71Sopenharmony_ci| srcInputDeviceId     | number                       |  是   | 键鼠穿越待穿越外设标识符。           |
122e41f4b71Sopenharmony_ci| callback             | AsyncCallback\<void>         |  是    | 回调函数,异步返回键鼠穿越启动、停止状态。|
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ci**错误码**:
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[ohos.multimodalinput错误码](errorcode-multimodalinput.md)。
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 |
129e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- |
130e41f4b71Sopenharmony_ci| 401      | Parameter error.    |
131e41f4b71Sopenharmony_ci| 4400001  | Incorrect descriptor for the target device.                |
132e41f4b71Sopenharmony_ci| 4400002  | Screen hop failed.    |
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_ci**示例**:
135e41f4b71Sopenharmony_ci
136e41f4b71Sopenharmony_ci```ts
137e41f4b71Sopenharmony_ciimport { inputDeviceCooperate } from '@kit.InputKit';
138e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_cilet sinkDeviceDescriptor = "descriptor";
141e41f4b71Sopenharmony_cilet srcInputDeviceId = 0;
142e41f4b71Sopenharmony_citry {
143e41f4b71Sopenharmony_ci  inputDeviceCooperate.start(sinkDeviceDescriptor, srcInputDeviceId, (error: BusinessError) => {
144e41f4b71Sopenharmony_ci    if (error) {
145e41f4b71Sopenharmony_ci      console.log(`Start Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
146e41f4b71Sopenharmony_ci      return;
147e41f4b71Sopenharmony_ci    }
148e41f4b71Sopenharmony_ci    console.log(`Start Keyboard mouse crossing success.`);
149e41f4b71Sopenharmony_ci  });
150e41f4b71Sopenharmony_ci} catch (error) {
151e41f4b71Sopenharmony_ci  console.log(`Start Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
152e41f4b71Sopenharmony_ci}
153e41f4b71Sopenharmony_ci```
154e41f4b71Sopenharmony_ci
155e41f4b71Sopenharmony_ci## inputDeviceCooperate.start
156e41f4b71Sopenharmony_ci
157e41f4b71Sopenharmony_cistart(sinkDeviceDescriptor: string, srcInputDeviceId: number): Promise\<void>
158e41f4b71Sopenharmony_ci
159e41f4b71Sopenharmony_ci启动键鼠穿越,使用Promise异步方式返回结果。
160e41f4b71Sopenharmony_ci
161e41f4b71Sopenharmony_ci**系统能力**: SystemCapability.MultimodalInput.Input.Cooperator
162e41f4b71Sopenharmony_ci
163e41f4b71Sopenharmony_ci**参数**:
164e41f4b71Sopenharmony_ci
165e41f4b71Sopenharmony_ci| 参数名                | 类型                          | 必填  | 说明                            |
166e41f4b71Sopenharmony_ci| --------             | ---------------------------- | ----  | ----------------------------   |
167e41f4b71Sopenharmony_ci| sinkDeviceDescriptor | string                       |  是   | 键鼠穿越目标设备描述符。             |
168e41f4b71Sopenharmony_ci| srcInputDeviceId     | number                       |  是   | 键鼠穿越待穿越外设标识符。           |
169e41f4b71Sopenharmony_ci
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ci
172e41f4b71Sopenharmony_ci**返回值**:
173e41f4b71Sopenharmony_ci
174e41f4b71Sopenharmony_ci| 参数名                  | 说明                             |
175e41f4b71Sopenharmony_ci| ---------------------- | ------------------------------- |
176e41f4b71Sopenharmony_ci| Promise\<void>         | Promise对象,异步返回键鼠穿越启动、关闭结果。       |
177e41f4b71Sopenharmony_ci
178e41f4b71Sopenharmony_ci**错误码**:
179e41f4b71Sopenharmony_ci
180e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[ohos.multimodalinput错误码](errorcode-multimodalinput.md)。
181e41f4b71Sopenharmony_ci
182e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 |
183e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- |
184e41f4b71Sopenharmony_ci| 401      | Parameter error.    |
185e41f4b71Sopenharmony_ci| 4400001  | Incorrect descriptor for the target device.          |
186e41f4b71Sopenharmony_ci| 4400002  | Screen hop failed.               |
187e41f4b71Sopenharmony_ci
188e41f4b71Sopenharmony_ci**示例**:
189e41f4b71Sopenharmony_ci
190e41f4b71Sopenharmony_ci```ts
191e41f4b71Sopenharmony_ciimport { inputDeviceCooperate } from '@kit.InputKit';
192e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
193e41f4b71Sopenharmony_ci
194e41f4b71Sopenharmony_cilet sinkDeviceDescriptor = "descriptor";
195e41f4b71Sopenharmony_cilet srcInputDeviceId = 0;
196e41f4b71Sopenharmony_citry {
197e41f4b71Sopenharmony_ci  inputDeviceCooperate.start(sinkDeviceDescriptor, srcInputDeviceId).then(() => {
198e41f4b71Sopenharmony_ci    console.log(`Start Keyboard mouse crossing success.`);
199e41f4b71Sopenharmony_ci  }, (error: BusinessError) => {
200e41f4b71Sopenharmony_ci    console.log(`Start Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
201e41f4b71Sopenharmony_ci  });
202e41f4b71Sopenharmony_ci} catch (error) {
203e41f4b71Sopenharmony_ci  console.log(`Start Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
204e41f4b71Sopenharmony_ci}
205e41f4b71Sopenharmony_ci```
206e41f4b71Sopenharmony_ci
207e41f4b71Sopenharmony_ci## inputDeviceCooperate.stop
208e41f4b71Sopenharmony_ci
209e41f4b71Sopenharmony_cistop(callback: AsyncCallback\<void>): void
210e41f4b71Sopenharmony_ci
211e41f4b71Sopenharmony_ci停止键鼠穿越,使用AsyncCallback异步方式返回结果。
212e41f4b71Sopenharmony_ci
213e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MultimodalInput.Input.Cooperator
214e41f4b71Sopenharmony_ci
215e41f4b71Sopenharmony_ci**参数**:
216e41f4b71Sopenharmony_ci
217e41f4b71Sopenharmony_ci| 参数名                | 类型                          | 必填  | 说明                            |
218e41f4b71Sopenharmony_ci| --------             | ---------------------------- | ----  | ----------------------------   |
219e41f4b71Sopenharmony_ci| callback             | AsyncCallback\<void>         |  是   | 回调函数,异步返回停止键鼠穿越结果。        |
220e41f4b71Sopenharmony_ci
221e41f4b71Sopenharmony_ci**错误码**:
222e41f4b71Sopenharmony_ci
223e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
224e41f4b71Sopenharmony_ci
225e41f4b71Sopenharmony_ci| 错误码ID | 错误信息           |
226e41f4b71Sopenharmony_ci| -------- | ----------------- |
227e41f4b71Sopenharmony_ci| 401      | Parameter error.  |
228e41f4b71Sopenharmony_ci
229e41f4b71Sopenharmony_ci**示例**:
230e41f4b71Sopenharmony_ci
231e41f4b71Sopenharmony_ci```ts
232e41f4b71Sopenharmony_ciimport { inputDeviceCooperate } from '@kit.InputKit';
233e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
234e41f4b71Sopenharmony_ci
235e41f4b71Sopenharmony_citry {
236e41f4b71Sopenharmony_ci  inputDeviceCooperate.stop((error: BusinessError) => {
237e41f4b71Sopenharmony_ci    if (error) {
238e41f4b71Sopenharmony_ci      console.log(`Stop Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
239e41f4b71Sopenharmony_ci      return;
240e41f4b71Sopenharmony_ci    }
241e41f4b71Sopenharmony_ci    console.log(`Stop Keyboard mouse crossing success.`);
242e41f4b71Sopenharmony_ci  });
243e41f4b71Sopenharmony_ci} catch (error) {
244e41f4b71Sopenharmony_ci  console.log(`Stop Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
245e41f4b71Sopenharmony_ci}
246e41f4b71Sopenharmony_ci```
247e41f4b71Sopenharmony_ci
248e41f4b71Sopenharmony_ci## inputDeviceCooperate.stop
249e41f4b71Sopenharmony_ci
250e41f4b71Sopenharmony_cistop(): Promise\<void>
251e41f4b71Sopenharmony_ci
252e41f4b71Sopenharmony_ci停止键鼠穿越,使用Promise异步方式返回结果。
253e41f4b71Sopenharmony_ci
254e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MultimodalInput.Input.Cooperator
255e41f4b71Sopenharmony_ci
256e41f4b71Sopenharmony_ci**返回值**:
257e41f4b71Sopenharmony_ci
258e41f4b71Sopenharmony_ci| 参数名                | 说明                            |
259e41f4b71Sopenharmony_ci| --------             | ----------------------------   |
260e41f4b71Sopenharmony_ci| Promise\<void>       |  Promise对象,异步返回停止键鼠穿越结果。      |
261e41f4b71Sopenharmony_ci
262e41f4b71Sopenharmony_ci**示例**:
263e41f4b71Sopenharmony_ci
264e41f4b71Sopenharmony_ci```ts
265e41f4b71Sopenharmony_ciimport { inputDeviceCooperate } from '@kit.InputKit';
266e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
267e41f4b71Sopenharmony_ci
268e41f4b71Sopenharmony_citry {
269e41f4b71Sopenharmony_ci  inputDeviceCooperate.stop().then(() => {
270e41f4b71Sopenharmony_ci    console.log(`Stop Keyboard mouse crossing success.`);
271e41f4b71Sopenharmony_ci  }, (error: BusinessError) => {
272e41f4b71Sopenharmony_ci    console.log(`Stop Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
273e41f4b71Sopenharmony_ci  });
274e41f4b71Sopenharmony_ci} catch (error) {
275e41f4b71Sopenharmony_ci  console.log(`Stop Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
276e41f4b71Sopenharmony_ci}
277e41f4b71Sopenharmony_ci```
278e41f4b71Sopenharmony_ci
279e41f4b71Sopenharmony_ci## inputDeviceCooperate.getState
280e41f4b71Sopenharmony_ci
281e41f4b71Sopenharmony_cigetState(deviceDescriptor: string, callback: AsyncCallback<{ state: boolean }>): void
282e41f4b71Sopenharmony_ci
283e41f4b71Sopenharmony_ci获取键鼠穿越开关的状态,使用AsyncCallback异步方式返回结果。
284e41f4b71Sopenharmony_ci
285e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MultimodalInput.Input.Cooperator
286e41f4b71Sopenharmony_ci
287e41f4b71Sopenharmony_ci**参数**:
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ci| 参数名                | 类型                          | 必填   | 说明                            |
290e41f4b71Sopenharmony_ci| --------             | ---------                    | ----  | ----------------------------    |
291e41f4b71Sopenharmony_ci| deviceDescriptor     | string                       |  是    | 键鼠穿越目标设备描述符。             |
292e41f4b71Sopenharmony_ci| callback             | AsyncCallback<{ state: boolean }> |  是    | 回调函数,异步返回键鼠穿越开关状态。        |
293e41f4b71Sopenharmony_ci
294e41f4b71Sopenharmony_ci**错误码**:
295e41f4b71Sopenharmony_ci
296e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
297e41f4b71Sopenharmony_ci
298e41f4b71Sopenharmony_ci| 错误码ID | 错误信息          |
299e41f4b71Sopenharmony_ci| -------- | ----------------- |
300e41f4b71Sopenharmony_ci| 401      | Parameter error.  |
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ci
303e41f4b71Sopenharmony_ci**示例**:
304e41f4b71Sopenharmony_ci
305e41f4b71Sopenharmony_ci```ts
306e41f4b71Sopenharmony_ciimport { inputDeviceCooperate } from '@kit.InputKit';
307e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
308e41f4b71Sopenharmony_ci
309e41f4b71Sopenharmony_cilet deviceDescriptor = "descriptor";
310e41f4b71Sopenharmony_citry {
311e41f4b71Sopenharmony_ci  inputDeviceCooperate.getState(deviceDescriptor, (error: BusinessError, data: object) => {
312e41f4b71Sopenharmony_ci    if (error) {
313e41f4b71Sopenharmony_ci      console.log(`Get the status failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
314e41f4b71Sopenharmony_ci      return;
315e41f4b71Sopenharmony_ci    }
316e41f4b71Sopenharmony_ci    console.log(`Get the status success, data: ${JSON.stringify(data)}`);
317e41f4b71Sopenharmony_ci  });
318e41f4b71Sopenharmony_ci} catch (error) {
319e41f4b71Sopenharmony_ci  console.log(`Get the status failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
320e41f4b71Sopenharmony_ci}
321e41f4b71Sopenharmony_ci```
322e41f4b71Sopenharmony_ci
323e41f4b71Sopenharmony_ci## inputDeviceCooperate.getState
324e41f4b71Sopenharmony_ci
325e41f4b71Sopenharmony_cigetState(deviceDescriptor: string): Promise<{ state: boolean }>
326e41f4b71Sopenharmony_ci
327e41f4b71Sopenharmony_ci获取键鼠穿越开关的状态,使用Promise异步方式返回结果。
328e41f4b71Sopenharmony_ci
329e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MultimodalInput.Input.Cooperator
330e41f4b71Sopenharmony_ci
331e41f4b71Sopenharmony_ci**参数**:
332e41f4b71Sopenharmony_ci
333e41f4b71Sopenharmony_ci| 参数名                | 类型                          | 必填   | 说明                            |
334e41f4b71Sopenharmony_ci| --------             | ---------                    | ----  | ----------------------------    |
335e41f4b71Sopenharmony_ci| deviceDescriptor     | string                       |  是    | 键鼠穿越目标设备描述符。            |
336e41f4b71Sopenharmony_ci
337e41f4b71Sopenharmony_ci**返回值**:
338e41f4b71Sopenharmony_ci
339e41f4b71Sopenharmony_ci| 参数                        | 说明                     |
340e41f4b71Sopenharmony_ci| -------------------        | ------------------------------- |
341e41f4b71Sopenharmony_ci| Promise<{ state: boolean }>| Promise对象,异步返回键鼠穿越开关状态。        |
342e41f4b71Sopenharmony_ci
343e41f4b71Sopenharmony_ci**错误码**:
344e41f4b71Sopenharmony_ci
345e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
346e41f4b71Sopenharmony_ci
347e41f4b71Sopenharmony_ci| 错误码ID | 错误信息          |
348e41f4b71Sopenharmony_ci| -------- | ----------------- |
349e41f4b71Sopenharmony_ci| 401      | Parameter error.  |
350e41f4b71Sopenharmony_ci
351e41f4b71Sopenharmony_ci
352e41f4b71Sopenharmony_ci**示例**:
353e41f4b71Sopenharmony_ci
354e41f4b71Sopenharmony_ci```ts
355e41f4b71Sopenharmony_ciimport { inputDeviceCooperate } from '@kit.InputKit';
356e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit';
357e41f4b71Sopenharmony_ci
358e41f4b71Sopenharmony_cilet deviceDescriptor = "descriptor";
359e41f4b71Sopenharmony_citry {
360e41f4b71Sopenharmony_ci  inputDeviceCooperate.getState(deviceDescriptor).then((data: object) => {
361e41f4b71Sopenharmony_ci    console.log(`Get the status success, data: ${JSON.stringify(data)}`);
362e41f4b71Sopenharmony_ci  }, (error: BusinessError) => {
363e41f4b71Sopenharmony_ci    console.log(`Get the status failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
364e41f4b71Sopenharmony_ci  });
365e41f4b71Sopenharmony_ci} catch (error) {
366e41f4b71Sopenharmony_ci  console.log(`Get the status failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
367e41f4b71Sopenharmony_ci}
368e41f4b71Sopenharmony_ci```
369e41f4b71Sopenharmony_ci
370e41f4b71Sopenharmony_ci## on('cooperation')
371e41f4b71Sopenharmony_ci
372e41f4b71Sopenharmony_cion(type: 'cooperation', callback: AsyncCallback<{ deviceDescriptor: string, eventMsg: EventMsg }>): void
373e41f4b71Sopenharmony_ci
374e41f4b71Sopenharmony_ci注册监听键鼠穿越状态。
375e41f4b71Sopenharmony_ci
376e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MultimodalInput.Input.Cooperator
377e41f4b71Sopenharmony_ci
378e41f4b71Sopenharmony_ci**参数**:
379e41f4b71Sopenharmony_ci
380e41f4b71Sopenharmony_ci| 参数名                | 类型                                                             | 必填 | 说明                            |
381e41f4b71Sopenharmony_ci| --------             | ----------------------------                                    | ---- | ----------------------------   |
382e41f4b71Sopenharmony_ci| type                 | string                                                          |  是  | 注册类型,取值”cooperation“。         |
383e41f4b71Sopenharmony_ci| callback             | AsyncCallback<{ deviceDescriptor: string, eventMsg: [EventMsg](#eventmsg) }> |  是  | 回调函数,异步返回键鼠穿越事件。    |
384e41f4b71Sopenharmony_ci
385e41f4b71Sopenharmony_ci**错误码**:
386e41f4b71Sopenharmony_ci
387e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
388e41f4b71Sopenharmony_ci
389e41f4b71Sopenharmony_ci| 错误码ID | 错误信息          |
390e41f4b71Sopenharmony_ci| -------- | ----------------- |
391e41f4b71Sopenharmony_ci| 401      | Parameter error.  |
392e41f4b71Sopenharmony_ci
393e41f4b71Sopenharmony_ci
394e41f4b71Sopenharmony_ci**示例**:
395e41f4b71Sopenharmony_ci
396e41f4b71Sopenharmony_ci```ts
397e41f4b71Sopenharmony_ciimport { inputDeviceCooperate } from '@kit.InputKit';
398e41f4b71Sopenharmony_ci
399e41f4b71Sopenharmony_cifunction callback(msg: object) {
400e41f4b71Sopenharmony_ci  console.log(`Keyboard mouse crossing event: ${JSON.stringify(msg)}`);
401e41f4b71Sopenharmony_ci  return false;
402e41f4b71Sopenharmony_ci}
403e41f4b71Sopenharmony_citry {
404e41f4b71Sopenharmony_ci  inputDeviceCooperate.on('cooperation', callback);
405e41f4b71Sopenharmony_ci} catch (error) {
406e41f4b71Sopenharmony_ci  console.log(`Register failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
407e41f4b71Sopenharmony_ci}
408e41f4b71Sopenharmony_ci```
409e41f4b71Sopenharmony_ci
410e41f4b71Sopenharmony_ci## off('cooperation')
411e41f4b71Sopenharmony_ci
412e41f4b71Sopenharmony_cioff(type: 'cooperation', callback?: AsyncCallback\<void>): void
413e41f4b71Sopenharmony_ci
414e41f4b71Sopenharmony_ci关闭监听键鼠穿越状态。
415e41f4b71Sopenharmony_ci
416e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MultimodalInput.Input.Cooperator
417e41f4b71Sopenharmony_ci
418e41f4b71Sopenharmony_ci**参数**:
419e41f4b71Sopenharmony_ci
420e41f4b71Sopenharmony_ci| 参数名                | 类型                                                              | 必填    | 说明                           |
421e41f4b71Sopenharmony_ci| --------             | ----------------------------                                     | ----   | ----------------------------   |
422e41f4b71Sopenharmony_ci| type                 | string                                                           |  是    | 注册类型,取值“cooperation”。         |
423e41f4b71Sopenharmony_ci| callback             | AsyncCallback\<void> |  否  | 需要取消注册的回调函数,若无此参数,则取消当前应用注册的所有回调函数。 |
424e41f4b71Sopenharmony_ci
425e41f4b71Sopenharmony_ci**错误码**:
426e41f4b71Sopenharmony_ci
427e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
428e41f4b71Sopenharmony_ci
429e41f4b71Sopenharmony_ci| 错误码ID | 错误信息          |
430e41f4b71Sopenharmony_ci| -------- | ----------------- |
431e41f4b71Sopenharmony_ci| 401      | Parameter error.  |
432e41f4b71Sopenharmony_ci
433e41f4b71Sopenharmony_ci
434e41f4b71Sopenharmony_ci**示例**:
435e41f4b71Sopenharmony_ci
436e41f4b71Sopenharmony_ci```ts
437e41f4b71Sopenharmony_ciimport { inputDeviceCooperate } from '@kit.InputKit';
438e41f4b71Sopenharmony_ci
439e41f4b71Sopenharmony_ci// 取消注册单个回调函数
440e41f4b71Sopenharmony_cifunction callbackOn(msg: object) {
441e41f4b71Sopenharmony_ci  console.log(`Keyboard mouse crossing event: ${JSON.stringify(msg)}`);
442e41f4b71Sopenharmony_ci  return false;
443e41f4b71Sopenharmony_ci}
444e41f4b71Sopenharmony_cifunction callbackOff() {
445e41f4b71Sopenharmony_ci  console.log(`Keyboard mouse crossing event`);
446e41f4b71Sopenharmony_ci  return false;
447e41f4b71Sopenharmony_ci}
448e41f4b71Sopenharmony_citry {
449e41f4b71Sopenharmony_ci  inputDeviceCooperate.on('cooperation', callbackOn);
450e41f4b71Sopenharmony_ci  inputDeviceCooperate.off("cooperation", callbackOff);
451e41f4b71Sopenharmony_ci} catch (error) {
452e41f4b71Sopenharmony_ci  console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
453e41f4b71Sopenharmony_ci}
454e41f4b71Sopenharmony_ci```
455e41f4b71Sopenharmony_ci```ts
456e41f4b71Sopenharmony_ciimport { inputDeviceCooperate } from '@kit.InputKit';
457e41f4b71Sopenharmony_ci
458e41f4b71Sopenharmony_ci// 取消注册所有回调函数
459e41f4b71Sopenharmony_cifunction callback(msg: object) {
460e41f4b71Sopenharmony_ci  console.log(`Keyboard mouse crossing event: ${JSON.stringify(msg)}`);
461e41f4b71Sopenharmony_ci  return false;
462e41f4b71Sopenharmony_ci}
463e41f4b71Sopenharmony_citry {
464e41f4b71Sopenharmony_ci  inputDeviceCooperate.on('cooperation', callback);
465e41f4b71Sopenharmony_ci  inputDeviceCooperate.off("cooperation");
466e41f4b71Sopenharmony_ci} catch (error) {
467e41f4b71Sopenharmony_ci  console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
468e41f4b71Sopenharmony_ci}
469e41f4b71Sopenharmony_ci```
470e41f4b71Sopenharmony_ci
471e41f4b71Sopenharmony_ci## EventMsg
472e41f4b71Sopenharmony_ci
473e41f4b71Sopenharmony_ci键鼠穿越事件。
474e41f4b71Sopenharmony_ci
475e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.MultimodalInput.Input.Cooperator
476e41f4b71Sopenharmony_ci
477e41f4b71Sopenharmony_ci| 名称                       | 值        | 说明                              |
478e41f4b71Sopenharmony_ci| --------                     | --------- |  -----------------               |
479e41f4b71Sopenharmony_ci| MSG_COOPERATE_INFO_START     | 200       |  键鼠穿越消息,表示键鼠穿越开始。       |
480e41f4b71Sopenharmony_ci| MSG_COOPERATE_INFO_SUCCESS   | 201       |  键鼠穿越消息,表示键鼠穿越成功。      |
481e41f4b71Sopenharmony_ci| MSG_COOPERATE_INFO_FAIL      | 202       |  键鼠穿越消息,表示键鼠穿越失败。      |
482e41f4b71Sopenharmony_ci| MSG_COOPERATE_STATE_ON       | 500       |  键鼠穿越状态,表示键鼠穿越状态开启。   |
483e41f4b71Sopenharmony_ci| MSG_COOPERATE_STATE_OFF      | 501       |  键鼠穿越状态,表示键鼠穿越状态关闭。   |
484