1# 组合按键开发指导 2 3## 场景介绍 4 5组合按键提供订阅组合按键、设置屏蔽按键拦截状态等能力。使用场景例如:当用户需要组合按键实现快捷功能时,开发者可以订阅组合按键,通过组合按键启用快捷功能。 6 7## 导入模块 8 9```js 10import { inputConsumer } from '@kit.InputKit'; 11``` 12 13## 接口说明 14 15组合按键管理常用接口如下表所示,接口详细介绍请参考[ohos.multimodalInput.inputConsumer-sys文档](../../reference/apis-input-kit/js-apis-inputconsumer-sys.md)和[ohos.multimodalInput.inputConsumer文档](../../reference/apis-input-kit/js-apis-inputconsumer.md)。 16 17| 接口名称 | 描述 | 18| ------------------------------------------------------------ | -------------------------- | 19| on(type: 'key', keyOptions: KeyOptions, callback: Callback\<KeyOptions>): void | 订阅组合按键。 | 20| off(type: 'key', keyOptions: KeyOptions, callback?: Callback\<KeyOptions>): void | 取消订阅组合按键。 | 21| setShieldStatus(shieldMode: ShieldMode, isShield: boolean): void | 设置屏蔽按键拦截状态。 | 22| getShieldStatus(shieldMode: ShieldMode): boolean | 获取屏蔽按键拦截是否生效。 | 23| getAllSystemHotkeys(): Promise\<Array\<HotkeyOptions>> | 获取所有系统组合按键。 | 24| on(type: 'hotkeyChange', hotkeyOptions: HotkeyOptions, callback: Callback\<HotkeyOptions>): void | 订阅全局组合按键。 | 25| off(type: 'hotkeyChange', hotkeyOptions: HotkeyOptions, callback?: Callback\<HotkeyOptions>): void | 取消订阅全局组合按键。 | 26 27## 开发步骤 28 29特定组合按键的应用开启时调用[on](../../reference/apis-input-kit/js-apis-inputconsumer-sys.md#inputconsumeron)方法订阅组合键,应用关闭时再用[off](../../reference/apis-input-kit/js-apis-inputconsumer-sys.md#inputconsumeroff)方法取消组合键订阅。 30 31```js 32let leftAltKey = 2045; 33let tabKey = 2049; 34let callback = (keyOptions: inputConsumer.KeyOptions) => { 35 console.log(`keyOptions: ${JSON.stringify(keyOptions)}`); 36} 37//应用开启 38let keyOption: inputConsumer.KeyOptions = {preKeys: [leftAltKey], finalKey: tabKey, isFinalKeyDown: true, finalKeyDownDuration: 0}; 39try { 40 inputConsumer.on("key", keyOption, callback);//订阅组合键 41} catch (error) { 42 console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 43} 44//应用关闭 45try { 46 inputConsumer.off("key", keyOption, callback);//取消订阅组合键 47 console.log(`Unsubscribe success`); 48} catch (error) { 49 console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 50} 51 52let leftCtrlKey = 2072; 53let zKey = 2042; 54let hotkeyCallback = (hotkeyOptions: inputConsumer.HotkeyOptions) => { 55 console.log(`keyOptions: ${JSON.stringify(hotkeyOptions)}`); 56} 57let hotkeyOption: inputConsumer.HotkeyOptions = {preKeys: [leftCtrlKey], finalKey: zKey, isRepeat: false}; 58//在订阅全局组合键之前,需要先获取所有系统组合键,查询需要订阅的组合键是否存在于系统组合键列表中,避免冲突 59inputConsumer.getAllSystemHotkeys().then((data: Array<inputConsumer.HotkeyOptions>) => {//获取所有系统组合键 60 console.log(`List of system hotkeys : ${JSON.stringify(data)}`); 61}); 62//应用开启 63try { 64 inputConsumer.on("hotkeyChange", hotkeyOption, hotkeyCallback);//订阅全局组合键 65} catch (error) { 66 console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 67} 68//应用关闭 69try { 70 inputConsumer.off("hotkeyChange", hotkeyOption, hotkeyCallback);//取消订阅全局组合键 71 console.log(`Unsubscribe success`); 72} catch (error) { 73 console.log(`Execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`); 74} 75```