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