中国总决赛
√
全球总决赛
√
学习进度
完成
省赛
√
能力分类
主要子系统
能力模型
输入设备类型及输入事件格式
多模输入
Input Kit(多模输入Kit)为多种输入设备提供服务,如触控板、触摸屏、鼠标、键盘等。通过对这些输入设备上报驱动事件的归一化处理,确保不同输入设备与用户交互体验统一和流畅。除基础的输入事件服务,多模子系统还支持获取设备列表,以及改变鼠标光标样式等。
Input Kit除了提供基础的输入事件服务之外,还提供了获取输入设备列表,改变鼠标光标样式等功能和接口。

运作机制
多模输入能力作为系统为应用提供的一种基础服务,通过处理上报的输入设备驱动事件,完成输入事件管理,接收,预处理,分发,通过inner SDK与JSkit上报应用,具体运行机制如下。

约束与限制
(1)在使用下列函数时,开发者需要请求相应的权限。
接口名称 | 描述 | 权限 |
setShieldStatus(shieldMode: ShieldMode, isShield: boolean): void | 设置屏蔽按键拦截状态。 | ohos.permission.INPUT_CONTROL_DISPATCHING |
getShieldStatus(shieldMode: ShieldMode): boolean | 获取屏蔽按键拦截是否生效。 | ohos.permission.INPUT_CONTROL_DISPATCHING |
(2) 组合按键、注入事件、输入监听、快捷键模块接口为系统接口,其中输入监听模块接口接口需要 ohos.permission.INPUT_MONITORING权限。
输入设备
输入设备管理提供设备热插拔监听、查询指定设备的键盘类型等能力。使用场景例如:当用户需要输入文本时,输入法会根据当前是否插入了物理键盘来决定是否弹出虚拟键盘,开发者可以通过监听设备热插拔判断是否有物理键盘插入。
导入模块
- import inputDevice from '@ohos.multimodalInput.inputDevice';
接口说明
实例名 | 接口名 | 说明 |
inputDevice | function getDeviceList(): Promise<Array<number>>; | 获取输入设备列表。 |
inputDevice | function getKeyboardType(deviceId: number): Promise<KeyboardType>; | 获取输入设备的键盘类型。 |
inputDevice | function on(type: "change", listener: Callback<DeviceListener>): void; | 监听输入设备的热插拔事件。 |
inputDevice | function off(type: "change", listener?: Callback<DeviceListener>): void; | 取消监听输入设备的热插拔事件。 |
虚拟键盘弹出检测
当用户需要输入文本时,输入法会根据当前是否插入了物理键盘来决定是否弹出虚拟键盘,开发者可以通过监听设备热插拔,判断是否有物理键盘插入。
开发步骤
- 调用getDeviceList方法查询所有连接的输入设备,调用getKeyboardType方法遍历所有连接的设备,判断是否有物理键盘,若有则标记已有物理键盘连接,该步骤确保监听设备热插拔之前,检测所有插入的输入设备。
- 调用on接口监听输入设备热插拔事件,若监听到有物理键盘插入,则标记已有物理键盘连接;若监听到有物理键盘拔掉,则标记没有物理键盘连接。
鼠标光标
鼠标光标控制提供对鼠标光标显示隐藏、光标样式查询设置的能力。使用场景例如:用户在全屏观看视频时,开发者可以控制鼠标光标的显示隐藏;当用户执行取色时,开发者可以将鼠标光标样式切换为取色器样式。
导入模块
- import pointer from '@ohos.multimodalInput.pointer';
接口说明
实例名 | 接口名 | 说明 |
pointer | function isPointerVisible(callback: AsyncCallback<boolean>): void; | 获取鼠标指针显示或隐藏状态。 |
pointer | function setPointerVisible(visible: boolean, callback: AsyncCallback<void>): void; | 设置鼠标指针显示或隐藏状态,该接口会影响全局鼠标光标的显示状态。 |
pointer | function setPointerStyle(windowId: number, pointerStyle: PointerStyle, callback: AsyncCallback<void>): void; | 设置鼠标光标样式,该接口会影响指定窗口鼠标光标样式。 |
pointer | function getPointerStyle(windowId: number, callback: AsyncCallback<PointerStyle>): void; | 查询鼠标光标样式。 |
开发步骤
- 设置鼠标光标隐藏
用户在全屏观看视频时,可以调用鼠标光标的隐藏接口设置鼠标光标不可见,提升用户体验。
- 应用切换到全屏播放。
- 在应用中调用鼠标光标隐藏接口隐藏光标。
- 应用退出全屏播放。
- 在应用中调用鼠标光标显示接口显示光标。
- 设置鼠标光标样式
当开发者设计取色器特性时,可以将鼠标光标样式切换为取色器样式,完成取色后,设置鼠标光标样式为默认样式,该接口设置和查询当前应用内指定窗口的光标样式,总共可设置39种光标样式。
- 开发者使能取色功能。
- 调用窗口实例获取对应的窗口id。
- 设置鼠标光标样式为取色器样式。
- 取色结束。
- 设置鼠标光标样式为默认样式。
输入监听
输入监听提供监听按键,触控板特殊手势等能力。使用场景例如:当用户需要应用在触控板三指上划实现特定功能时,开发者可以通过监听三指上划判断特定功能是否启用。
导入模块
- import { inputMonitor } from '@kit.InputKit';
接口说明
接口名称 | 描述 |
on(type: ‘mouse’, receiver: Callback): void | 监听鼠标事件。 |
on(type: ‘touch’, receiver: TouchEventReceiver): void | 监听触屏事件。 |
on(type: ‘pinch’, receiver: TouchEventReceiver): void | 监听捏合事件。 |
on(type: ‘threeFingersSwipe’, receiver: Callback): void | 监听三指上划事件。 |
on(type: ‘threeFingersTap’, receiver: Callback): void | 监听三指清点事件。 |
on(type: ‘fourFingersSwipe’, receiver: Callback): void | 监听四指滑动事件。 |
on(type: ‘rotate’, fingers: number, receiver: Callback): void | 监听旋转事件。 |
off(type: ‘mouse’, receiver: Callback): void | 取消监听鼠标事件。 |
off(type: ‘touch’, receiver: TouchEventReceiver): void | 取消监听触屏事件。 |
off(type: ‘pinch’, receiver: TouchEventReceiver): void | 取消监听捏合事件。 |
off(type: ‘threeFingersSwipe’, receiver: Callback): void | 取消监听三指上划事件。 |
off(type: ‘threeFingersTap’, receiver: Callback): void | 取消监听三指清点事件。 |
off(type: ‘fourFingersSwipe’, receiver: Callback): void | 取消监听四指滑动事件。 |
off(type: ‘rotate’, fingers: number, receiver: Callback): void | 取消监听旋转事件。 |
开发步骤
- 设置鼠标光标隐藏
注入事件
注入事件提供注入输入事件功能,比如注入鼠标点击事件,键盘组合键等。使用场景例如:当用户需要验证应用的组合键功能时,开发者可以通过注入组合键事件判断功能是否生效。
导入模块
- import { inputEventClient } from '@kit.InputKit';
接口说明
接口名称 | 描述 |
injectEvent({KeyEvent: KeyEvent}): void | 按键(包括单个按键和组合键)注入。 |
injectMouseEvent(mouseEvent: MouseEventData): void | 鼠标/触摸板事件注入。 |
injectTouchEvent(touchEvent: TouchEventData): void | 触摸屏事件注入。 |
开发步骤
应用调用Home键返回桌面,测试是可以调用injectEvent注入Home按键,查看应用中Home按键功能是否生效。
组合按键
组合按键提供订阅组合按键、设置屏蔽按键拦截状态等能力。使用场景例如:当用户需要组合按键实现快捷功能时,开发者可以通过订阅组合按键,通过组合按键启用快捷功能。
导入模块
- import { inputEventClient } from '@kit.InputKit';
接口说明
接口名称 | 描述 |
on(type: ‘key’, keyOptions: KeyOptions, callback: Callback): void | 订阅组合按键。 |
off(type: ‘key’, keyOptions: KeyOptions, callback?: Callback): void | 取消订阅组合按键。 |
setShieldStatus(shieldMode: ShieldMode, isShield: boolean): void | 设置屏蔽按键拦截状态。 |
getShieldStatus(shieldMode: ShieldMode): boolean | 获取屏蔽按键拦截是否生效。 |
开发步骤
快捷键
快捷键可以设置快捷键拉起Ability的延迟时间,比如按下快捷键五秒后截屏等。
导入模块
- import { inputEventClient } from '@kit.InputKit';
接口说明
接口名称 | 描述 |
setKeyDownDuration(businessKey: string, delay: number, callback: AsyncCallback): void | setKeyDownDuration(businessKey: string, delay: number, callback: AsyncCallback): void |