1# @ohos.multimodalInput.inputConsumer (组合按键) 2 3组合按键订阅模块,用于处理组合按键的订阅。 4 5> **说明:** 6> 7> - 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 9> - 本模块接口为系统接口。 10 11 12## 导入模块 13 14 15```js 16import inputConsumer from '@ohos.multimodalInput.inputConsumer'; 17``` 18 19 20## inputConsumer.on 21 22on(type: "key", keyOptions: KeyOptions, callback: Callback<KeyOptions>): void 23 24订阅组合按键,当满足条件的组合按键输入事件发生时,使用Callback异步方式上报组合按键数据。 25 26**系统能力:** SystemCapability.MultimodalInput.Input.InputConsumer 27 28**参数:** 29 30| 参数名 | 类型 | 必填 | 说明 | 31| ---------- | -------------------------- | ---- | ---------------------------------------- | 32| type | string | 是 | 事件类型,目前只支持”key“。 | 33| keyOptions | [KeyOptions](#keyoptions) | 是 | 组合键选项。 | 34| callback | Callback<KeyOptions> | 是 | 回调函数,当满足条件的组合按键输入事件发生时,异步上报组合按键数据。 | 35 36**示例:** 37 38```js 39let leftAltKey = 2045; 40let tabKey = 2049; 41let keyOptions: inputConsumer.KeyOptions = { 42 preKeys: [ leftAltKey ], 43 finalKey: tabKey, 44 isFinalKeyDown: true, 45 finalKeyDownDuration: 0 46}; 47let callback = (keyOptions: inputConsumer.KeyOptions) => { 48 console.log(`keyOptions: ${JSON.stringify(keyOptions)}`); 49} 50try { 51 inputConsumer.on("key", keyOptions, callback); 52} catch (error) { 53 console.log(`Subscribe failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 54} 55``` 56 57 58## inputConsumer.off 59 60off(type: "key", keyOptions: KeyOptions, callback?: Callback<KeyOptions>): void 61 62取消订阅组合按键。 63 64**系统能力:** SystemCapability.MultimodalInput.Input.InputConsumer 65 66**参数:** 67 68| 参数名 | 类型 | 必填 | 说明 | 69| ---------- | -------------------------- | ---- | ------------------------------- | 70| type | string | 是 | 事件类型,当前只支持”key“。 | 71| keyOptions | [KeyOptions](#keyoptions) | 是 | 组合键选项。 | 72| callback | Callback<KeyOptions> | 否 | 需要取消订阅的回调函数,若无此参数,则取消当前应用的组合键选项已订阅的所有回调函数。 | 73 74**示例:** 75 76```js 77let leftAltKey = 2045; 78let tabKey = 2049; 79// 取消订阅单个回调函数 80let callback = (keyOptions: inputConsumer.KeyOptions) => { 81 console.log(`keyOptions: ${JSON.stringify(keyOptions)}`); 82} 83let keyOption: inputConsumer.KeyOptions = {preKeys: [leftAltKey], finalKey: tabKey, isFinalKeyDown: true, finalKeyDownDuration: 0}; 84try { 85 inputConsumer.on("key", keyOption, callback); 86 inputConsumer.off("key", keyOption, callback); 87 console.log(`Unsubscribe success`); 88} catch (error) { 89 console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 90} 91``` 92```js 93let leftAltKey = 2045; 94let tabKey = 2049; 95// 取消订阅所有回调函数 96let callback = (keyOptions: inputConsumer.KeyOptions) => { 97 console.log(`keyOptions: ${JSON.stringify(keyOptions)}`); 98} 99let keyOption: inputConsumer.KeyOptions = {preKeys: [leftAltKey], finalKey: tabKey, isFinalKeyDown: true, finalKeyDownDuration: 0}; 100try { 101 inputConsumer.on("key", keyOption, callback); 102 inputConsumer.off("key", keyOption); 103 console.log(`Unsubscribe success`); 104} catch (error) { 105 console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 106} 107``` 108 109 110## KeyOptions 111 112组合键选项。 113 114**系统能力:** SystemCapability.MultimodalInput.Input.InputConsumer 115 116| 名称 | 类型 | 可读 | 可写 | 说明 | 117| --------- | ------ | ---- | ---- | ------- | 118| preKeys | Array\<number> | 是 | 否 | 前置按键集合,数量范围[0, 4],前置按键无顺序要求。 | 119| finalKey | number | 是 | 否 | 最终按键,此项必填,最终按键触发上报回调函数。 | 120| isFinalKeyDown | boolean | 是 | 否 | 最终按键状态。 | 121| finalKeyDownDuration | number | 是 | 否 | 最终按键保持按下持续时间,为0时立即触发回调函数,大于0时,当isFinalKeyDown为true,则最终按键按下超过此时长后触发回调函数,当isFinalKeyDown为false,则最终按键按下到抬起时间小于此时长时触发回调函数。 | 122