# @ohos.cooperate (键鼠穿越) 键鼠穿越功能模块,提供两台或多台设备组网协同后键鼠共享能力,实现键鼠输入设备的跨设备协同操作。 > **说明** > > - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > > - 本模块接口均为系统接口。 ## 导入模块 ```ts import cooperate from '@ohos.cooperate' ``` ## cooperate.prepare prepare(callback: AsyncCallback<void>): void; 准备键鼠穿越,使用Callback异步回调。 **系统能力**: SystemCapability.Msdp.DeviceStatus.Cooperate **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | --------------------------- | | callback | AsyncCallback<void> | 是 |回调函数,准备键鼠穿越成功时,err为undefined,否则为错误对象。 | **示例**: ```ts import BusinessError from '@ohos.base'; try { cooperate.prepare((error: BusinessError) => { if (error) { console.log(`Keyboard mouse crossing prepare failed, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Keyboard mouse crossing prepare success.`); }); } catch (error) { console.log(`Keyboard mouse crossing prepare failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## cooperate.prepare prepare(): Promise<void> 准备键鼠穿越,使用Promise异步方式返回结果。 **系统能力**:SystemCapability.Msdp.DeviceStatus.Cooperate **返回值**: | 参数 | 说明 | | ------------------- | ------------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **示例**: ```ts import BusinessError from '@ohos.base'; try { cooperate.prepare().then(() => { console.log(`Keyboard mouse crossing prepare success.`); }, (error: BusinessError) => { console.log(`Keyboard mouse crossing prepare failed, error: ${JSON.stringify(error, [`code`, `message`])}`); }); } catch (error) { console.log(`Keyboard mouse crossing prepare failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## cooperate.unprepare unprepare(callback: AsyncCallback<void>): void; 取消键鼠穿越准备,使用Callback异步回调。 **系统能力**: SystemCapability.Msdp.DeviceStatus.Cooperate | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ------------------------------------------ | | callback | AsyncCallback<void> | 是 | 回调函数,取消键鼠穿越准备成功时,err为undefined,否则为错误对象。 | **示例**: ```ts import BusinessError from '@ohos.base'; try { cooperate.unprepare((error: BusinessError) => { if (error) { console.log(`Keyboard mouse crossing unprepare failed, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Keyboard mouse crossing unprepare success.`); }); } catch (error) { console.log(`Keyboard mouse crossing unprepare failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## cooperate.unprepare unprepare(): Promise<void>; 取消键鼠穿越准备,使用Promise异步回调。 **系统能力**: SystemCapability.Msdp.DeviceStatus.Cooperate **返回值**: | 参数 | 说明 | | ------------------- | --------------------------------------------- | | Promise<void> | 无返回结果的Promise对象。 | ```ts import BusinessError from '@ohos.base'; try { cooperate.unprepare().then(() => { console.log(`Keyboard mouse crossing unprepare success.`); }, (error: BusinessError) => { console.log(`Keyboard mouse crossing unprepare failed, error: ${JSON.stringify(error, [`code`, `message`])}`); }); } catch (error) { console.log(`Keyboard mouse crossing unprepare failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## cooperate.activate activate(targetNetworkId: string, inputDeviceId: number, callback: AsyncCallback<void>): void; 启动键鼠穿越,使用Callback异步回调。 **系统能力**:SystemCapability.Msdp.DeviceStatus.Cooperate **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------------- | ---- | ---------------------------- | | targetNetworkId | string | 是 | 键鼠穿越目标设备描述符。 | | inputDeviceId | number | 是 | 待穿越输入设备标识符。 | | callback | AsyncCallback<void> | 是 | 回调函数,键鼠穿越启动成功时,err为undefined,否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[ohos.devicestatus错误码](../errorcodes/errorcode-devicestatus.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 20900001 | Operation failed.| **示例**: ```ts import BusinessError from '@ohos.base'; let targetNetworkId = "networkId"; let inputDeviceId = 0; try { cooperate.activate(targetNetworkId, inputDeviceId, (error: BusinessError) => { if (error) { console.log(`Start Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Start Keyboard mouse crossing success.`); }); } catch (error) { console.log(`Start Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## cooperate.activate activate(targetNetworkId: string, inputDeviceId: number): Promise<void>; 启动键鼠穿越,使用Promise异步回调。 **系统能力**: SystemCapability.Msdp.DeviceStatus.Cooperate **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------------- | ---- | ---------------------------- | | targetNetworkId | string | 是 | 键鼠穿越目标设备描述符。 | | inputDeviceId | number | 是 | 待穿越输入设备标识符。 | **返回值**: | 参数名 | 说明 | | ---------------------- | ------------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[ohos.devicestatus错误码](../errorcodes/errorcode-devicestatus.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 20900001 | Operation failed. | **示例**: ```ts import BusinessError from '@ohos.base'; let targetNetworkId = "networkId"; let inputDeviceId = 0; try { cooperate.activate(targetNetworkId, inputDeviceId).then(() => { console.log(`Start Keyboard mouse crossing success.`); }, (error: BusinessError) => { console.log(`Start Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`); }); } catch (error) { console.log(`Start Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## cooperate.deactivate deactivate(isUnchained: boolean, callback: AsyncCallback<void>): void; 停止键鼠穿越,使用Callback异步回调。 **系统能力**:SystemCapability.Msdp.DeviceStatus.Cooperate **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------------- | ---- | ---------------------------- | | isUnchained | boolean | 是 | 是否关闭跨设备链路。
ture表示关闭跨设备链路,false表示不关闭。 | | callback | AsyncCallback<void> | 是 | 回调函数,键鼠穿越停止成功时,err为undefined,否则为错误对象。| **示例**: ```ts import BusinessError from '@ohos.base'; try { cooperate.deactivate(false, (error: BusinessError) => { if (error) { console.log(`Stop Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Stop Keyboard mouse crossing success.`); }); } catch (error) { console.log(`Stop Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## cooperate.deactivate deactivate(isUnchained: boolean): Promise<void>; 停止键鼠穿越,使用Promise异步回调。 **系统能力**:SystemCapability.Msdp.DeviceStatus.Cooperate **参数**: | 参数名 | 类型 | 必填 | 说明 | | ----------- | ------- | ---- | ------------------ | | isUnchained | boolean | 是 | 是否关闭跨设备链路。
ture表示关闭跨设备链路,false表示不关闭。 | **返回值**: | 参数名 | 说明 | | -------- | ---------------------------- | | Promise<void> | 无返回结果的Promise对象。 | **示例**: ```ts import BusinessError from '@ohos.base'; try { cooperate.deactivate(false).then(() => { console.log(`Stop Keyboard mouse crossing success.`); }, (error: BusinessError) => { console.log(`Stop Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`); }); } catch (error) { console.log(`Stop Keyboard mouse crossing failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## cooperate.getCrossingSwitchState getCrossingSwitchState(networkId: string, callback: AsyncCallback<boolean>): void; 获取目标设备键鼠穿越开关的状态,使用Callback异步回调。 **系统能力**:SystemCapability.Msdp.DeviceStatus.Cooperate **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | --------- | ---- | ---------------------------- | | networkId | string | 是 | 键鼠穿越目标设备描述符。 | | callback | AsyncCallback<boolean> | 是 | 回调函数,返回ture表示目标设备键鼠穿越的开关开启,返回false表示开关未开启。 | **示例**: ```ts import BusinessError from '@ohos.base'; let deviceDescriptor = "networkId"; try { cooperate.getCrossingSwitchState(deviceDescriptor, (error: BusinessError, data: boolean) => { if (error) { console.log(`Get the status failed, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Get the status success, data: ${JSON.stringify(data)}`); }); } catch (error) { console.log(`Get the status failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## cooperate.getCrossingSwitchState getCrossingSwitchState(networkId: string): Promise<boolean>; 获取目标设备键鼠穿越开关的状态,使用Promise异步方式返回结果。 **系统能力**:SystemCapability.Msdp.DeviceStatus.Cooperate **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | --------- | ---- | ---------------------------- | | networkId | string | 是 | 键鼠穿越目标设备描述符。 | **返回值**: | 参数 | 说明 | | ------------------- | ------------------------------- | | Promise<boolean> | Promise对象,返回ture表示目标设备键鼠穿越的开关开启,返回false表示开关未开启。 | **示例**: ```ts import BusinessError from '@ohos.base'; let deviceDescriptor = "networkId"; try { cooperate.getCrossingSwitchState(deviceDescriptor).then((data: boolean) => { console.log(`Get the status success, data: ${JSON.stringify(data)}`); }, (error: BusinessError) => { console.log(`Get the status failed, error: ${JSON.stringify(error, [`code`, `message`])}`); }); } catch (error) { console.log(`Get the status failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## on('cooperate') on(type: 'cooperate', callback: Callback<{ networkId: string, msg: CooperateMsg }>): void; 注册监听键鼠穿越状态。 **系统能力**:SystemCapability.Msdp.DeviceStatus.Cooperate **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------------- | ---- | ---------------------------- | | type | string | 是 | 监听类型,取值为'cooperate' | | callback | Callback<{ networkId: string, msg: [CooperateMsg](#cooperatemsg) }> | 是 | 回调函数,异步返回键鼠穿越状态消息。 | **示例**: ```ts function callback(networkId: string, msg: cooperate.CooperateMsg) { console.log(`Keyboard mouse crossing event: ${JSON.stringify(networkId)}`); return false; } try { cooperate.on('cooperate', callback); } catch (error) { console.log(`Register failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## off('cooperate') off(type: 'cooperate', callback?: Callback<void>): void; 取消监听键鼠穿越状态。 **系统能力**:SystemCapability.Msdp.DeviceStatus.Cooperate **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------------- | ---- | ---------------------------- | | type | string | 是 | 监听类型,取值为'cooperate'。 | | callback | AsyncCallback<void> | 否 | 需要取消注册的回调函数,若无此参数,则取消当前应用注册的所有回调函数。 | **示例**: ```ts // 取消注册单个回调函数 function callbackOn(networkId: string, msg: cooperate.CooperateMsg) { console.log(`Keyboard mouse crossing event: ${JSON.stringify(networkId)}`); return false; } function callbackOff() { console.log(`Keyboard mouse crossing event`); return false; } try { cooperate.on('cooperate', callbackOn); cooperate.off('cooperate', callbackOff); } catch (error) { console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ```ts // 取消注册所有回调函数 function callbackOn(networkId: string, msg: cooperate.CooperateMsg) { console.log(`Keyboard mouse crossing event: ${JSON.stringify(networkId)}`); return false; } try { cooperate.on('cooperate', callbackOn); cooperate.off('cooperate'); } catch (error) { console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## CooperateMsg 键鼠穿越的消息通知。 **系统能力**:SystemCapability.Msdp.DeviceStatus.Cooperate | 名称 | 值 | 说明 | | -------- | ----------------- | ----------------- | | COOPERATE_PREPARE | 0 | 表示准备键鼠穿越。 | | COOPERATE_UNPREPARE | 1 | 表示取消键鼠穿越准备。 | | COOPERATE_ACTIVATE | 2 | 表示启动键鼠穿越。 | | COOPERATE_ACTIVATE_SUCCESS | 3 | 表示键鼠穿越启动成功。 | | COOPERATE_ACTIVATE_FAIL | 4 | 表示键鼠穿越启动失败。 | | COOPERATE_DEACTIVATE_SUCCESS | 5 | 表示键鼠穿越停止成功。 | | COOPERATE_DEACTIVATE_FAIL | 6 | 表示键鼠穿越停止失败。 | | COOPERATE_SESSION_DISCONNECTED | 7 | 表示键鼠穿越会话断开。 |