1# @ohos.multimodalInput.inputConsumer-sys (组合按键)(系统接口)
2
3组合按键订阅模块,用于处理组合按键的订阅。
4
5> **说明:**
6>
7> - 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> - 本模块接口为系统接口。
10
11## 导入模块
12
13```js
14import { inputConsumer } from '@kit.InputKit';
15```
16
17## inputConsumer.on
18
19on(type: 'key', keyOptions: KeyOptions, callback: Callback<KeyOptions>): void
20
21订阅组合按键,当满足条件的组合按键输入事件发生时,使用Callback异步方式上报组合按键数据。
22
23**系统能力:** SystemCapability.MultimodalInput.Input.InputConsumer
24
25**参数:**
26
27| 参数名         | 类型                         | 必填   | 说明                                       |
28| ---------- | -------------------------- | ---- | ---------------------------------------- |
29| type       | string                     | 是    | 事件类型,目前仅支持'key'。                       |
30| keyOptions | [KeyOptions](#keyoptions)  | 是    | 组合键选项。                 |
31| callback   | Callback<KeyOptions> | 是    | 回调函数,当满足条件的组合按键输入事件发生时,异步上报组合按键数据。 |
32
33**示例:**
34
35```js
36let leftAltKey = 2045;
37let tabKey = 2049;
38let keyOptions: inputConsumer.KeyOptions = {
39  preKeys: [ leftAltKey ],
40  finalKey: tabKey,
41  isFinalKeyDown: true,
42  finalKeyDownDuration: 0
43};
44let callback = (keyOptions: inputConsumer.KeyOptions) => {
45  console.log(`keyOptions: ${JSON.stringify(keyOptions)}`);
46}
47try {
48  inputConsumer.on("key", keyOptions, callback);
49} catch (error) {
50  console.log(`Subscribe failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
51}
52```
53
54
55## inputConsumer.off
56
57off(type: 'key', keyOptions: KeyOptions, callback?: Callback<KeyOptions>): void
58
59取消订阅组合按键。
60
61**系统能力:** SystemCapability.MultimodalInput.Input.InputConsumer
62
63**参数:**
64
65| 参数名         | 类型                         | 必填   | 说明                              |
66| ---------- | -------------------------- | ---- | ------------------------------- |
67| type       | string                     | 是    | 事件类型,当前仅支持 'key'。              |
68| keyOptions | [KeyOptions](#keyoptions)  | 是    | 组合键选项。             |
69| callback   | Callback<KeyOptions> | 否    | 需要取消订阅的回调函数。若不填,则取消当前应用组合键选项已订阅的所有回调函数。 |
70
71**示例:**
72
73```js
74let leftAltKey = 2045;
75let tabKey = 2049;
76// 取消订阅单个回调函数
77let callback = (keyOptions: inputConsumer.KeyOptions) => {
78  console.log(`keyOptions: ${JSON.stringify(keyOptions)}`);
79}
80let keyOption: inputConsumer.KeyOptions = {preKeys: [leftAltKey], finalKey: tabKey, isFinalKeyDown: true, finalKeyDownDuration: 0};
81try {
82  inputConsumer.on("key", keyOption, callback);
83  inputConsumer.off("key", keyOption, callback);
84  console.log(`Unsubscribe success`);
85} catch (error) {
86  console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
87}
88```
89```js
90let leftAltKey = 2045;
91let tabKey = 2049;
92// 取消订阅所有回调函数
93let callback = (keyOptions: inputConsumer.KeyOptions) => {
94  console.log(`keyOptions: ${JSON.stringify(keyOptions)}`);
95}
96let keyOption: inputConsumer.KeyOptions = {preKeys: [leftAltKey], finalKey: tabKey, isFinalKeyDown: true, finalKeyDownDuration: 0};
97try {
98  inputConsumer.on("key", keyOption, callback);
99  inputConsumer.off("key", keyOption);
100  console.log(`Unsubscribe success`);
101} catch (error) {
102  console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
103}
104```
105
106## inputConsumer.setShieldStatus<sup>11+</sup>
107
108setShieldStatus(shieldMode: ShieldMode, isShield: boolean): void
109
110设置屏蔽按键拦截状态。
111
112**需要权限**: ohos.permission.INPUT_CONTROL_DISPATCHING
113
114**系统能力:** SystemCapability.MultimodalInput.Input.InputConsumer
115
116**参数:**
117
118| 参数名         | 类型                         | 必填   | 说明                                       |
119| ---------- | -------------------------- | ---- | ---------------------------------------- |
120| shieldMode       | ShieldMode                     | 是    | 屏蔽类型,目前仅支持'FACTORY_MODE'。                       |
121| isShield | boolean  | 是    | 屏蔽类型生效状态,true代表屏蔽类型生效,flase代表不生效。              |
122
123**示例:**
124
125```js
126let FACTORY_MODE = 0;
127try {
128  inputConsumer.setShieldStatus(FACTORY_MODE,true);
129  console.log(`set shield status success`);
130} catch (error) {
131  console.log(`set shield status failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
132}
133
134```
135
136## inputConsumer.getShieldStatus<sup>11+</sup>
137
138getShieldStatus(shieldMode: ShieldMode): boolean
139
140获取屏蔽按键拦截是否生效。
141
142**需要权限**: ohos.permission.INPUT_CONTROL_DISPATCHING
143
144**系统能力:** SystemCapability.MultimodalInput.Input.InputConsumer
145
146**参数:**
147
148| 参数名         | 类型                         | 必填   | 说明                                       |
149| ---------- | -------------------------- | ---- | ---------------------------------------- |
150| shieldMode       | ShieldMode                    | 是    | 屏蔽类型,目前仅支持'FACTORY_MODE'。                       |
151
152**返回值:**
153
154| 参数         |  说明                                       |
155| ---------- |  ---------------------------------------- |
156| boolean                    | 屏蔽类型生效状态,true代表屏蔽类型生效,flase代表不生效。                       |
157
158**示例:**
159
160```js
161try {
162  let FACTORY_MODE = 0;
163  let shieldstatusResult:Boolean =  inputConsumer.getShieldStatus(FACTORY_MODE);
164  console.log(` get shield status result:${JSON.stringify(shieldstatusResult)}`);
165} catch (error) {
166  console.log(`Failed to get shield status, error: ${JSON.stringify(error, [`code`, `message`])}`);
167}
168```
169
170## KeyOptions
171
172组合键选项。
173
174**系统能力:** SystemCapability.MultimodalInput.Input.InputConsumer
175
176| 名称        | 类型   | 可读   | 可写   | 说明      |
177| --------- | ------ | ---- | ---- | ------- |
178| preKeys    | Array\<number>   | 是    | 否 | 前置按键集合,数量范围[0, 4],前置按键无顺序要求。<br>如组合按键Ctrl+Alt+A中,Ctrl+Alt称为前置按键。 |
179| finalKey             | number  | 是    |  否 | 最终按键,此项必填,最终按键触发上报回调函数。<br>如组合按键Ctrl+Alt+A中,A称为最终按键按键。 |
180| isFinalKeyDown       | boolean | 是    |  否 | 最终按键状态。<br>ture表示按键按下,false表示按键抬起。 |
181| finalKeyDownDuration | number  | 是    |  否 | 最终按键保持按下持续时间,单位为微秒(μs)。<br>当finalKeyDownDuration为0时,立即触发回调函数。<br>当finalKeyDownDuration大于0时,isFinalKeyDown为true,则最终按键按下超过设置时长后触发回调函数;isFinalKeyDown为false,则最终按键按下到抬起时间小于设置时长时触发回调函数。   |
182| isRepeat<sup>14+</sup>  | boolean  | 是      | 否      | 是否上报重复的按键事件。true表示上报,false表示不上报,若不填默认为true。 |
183
184## shieldMode<sup>11+</sup>
185
186屏蔽类型。
187
188**系统能力:** SystemCapability.MultimodalInput.Input.InputConsumer
189
190| 名称                        | 类型  | 可读 | 可写 | 说明           |
191| ------------------------------ | ----------- | ---------------- | ---------------- | ---------------- |
192| FACTORY_MODE | number | 是 | 否 | 屏蔽类型,屏蔽所有快捷键。 |