中国总决赛
全球总决赛
学习进度
完成
省赛
能力分类
主要子系统
能力模型
输入设备类型及输入事件格式

多模输入


Input Kit(多模输入Kit)为多种输入设备提供服务,如触控板、触摸屏、鼠标、键盘等。通过对这些输入设备上报驱动事件的归一化处理,确保不同输入设备与用户交互体验统一和流畅。除基础的输入事件服务,多模子系统还支持获取设备列表,以及改变鼠标光标样式等。
Input Kit除了提供基础的输入事件服务之外,还提供了获取输入设备列表,改变鼠标光标样式等功能和接口。
notion image
 

运作机制

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

约束与限制

(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;
取消监听输入设备的热插拔事件。

虚拟键盘弹出检测

当用户需要输入文本时,输入法会根据当前是否插入了物理键盘来决定是否弹出虚拟键盘,开发者可以通过监听设备热插拔,判断是否有物理键盘插入。

开发步骤

  1. 调用getDeviceList方法查询所有连接的输入设备,调用getKeyboardType方法遍历所有连接的设备,判断是否有物理键盘,若有则标记已有物理键盘连接,该步骤确保监听设备热插拔之前,检测所有插入的输入设备。
  1. 调用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;
查询鼠标光标样式。
 

开发步骤

  • 设置鼠标光标隐藏
用户在全屏观看视频时,可以调用鼠标光标的隐藏接口设置鼠标光标不可见,提升用户体验。
  1. 应用切换到全屏播放。
  1. 在应用中调用鼠标光标隐藏接口隐藏光标。
  1. 应用退出全屏播放。
  1. 在应用中调用鼠标光标显示接口显示光标。
 
  • 设置鼠标光标样式
当开发者设计取色器特性时,可以将鼠标光标样式切换为取色器样式,完成取色后,设置鼠标光标样式为默认样式,该接口设置和查询当前应用内指定窗口的光标样式,总共可设置39种光标样式。
  1. 开发者使能取色功能。
  1. 调用窗口实例获取对应的窗口id。
  1. 设置鼠标光标样式为取色器样式。
  1. 取色结束。
  1. 设置鼠标光标样式为默认样式。
 

输入监听


输入监听提供监听按键,触控板特殊手势等能力。使用场景例如:当用户需要应用在触控板三指上划实现特定功能时,开发者可以通过监听三指上划判断特定功能是否启用。
 

导入模块

  • 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
取消监听旋转事件。
 

开发步骤

  • 设置鼠标光标隐藏
当应用需要根据鼠标按键按下状态变化样式时。调用on监听鼠标按键事件,调用off取消监听鼠标按键事件。
 

注入事件


注入事件提供注入输入事件功能,比如注入鼠标点击事件,键盘组合键等。使用场景例如:当用户需要验证应用的组合键功能时,开发者可以通过注入组合键事件判断功能是否生效。
 

导入模块

  • 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
获取屏蔽按键拦截是否生效。
 

开发步骤

使用特定组合按键的应用开启时调用on方法订阅组合键,当应用 应用关闭时再用off方法取消组合键订阅。
 

快捷键


快捷键可以设置快捷键拉起Ability的延迟时间,比如按下快捷键五秒后截屏等。
 

导入模块

  • import { inputEventClient } from '@kit.InputKit';
 

接口说明

接口名称
描述
setKeyDownDuration(businessKey: string, delay: number, callback: AsyncCallback): void
setKeyDownDuration(businessKey: string, delay: number, callback: AsyncCallback): void
 
Loading...
Koreyoshi
Koreyoshi
一个无可救药的乐观主义者
Latest posts
软件测试:集成测试
2025-3-25
软件测试:控制流测试
2025-3-25
软件测试:系统测试
2025-3-25
软件测试:数据流测试
2025-3-25
软件测试:测试驱动开发
2025-3-25
软件工程:面向对象的概念和记号
2025-3-24
Announcement
🎉写给自己的2025心愿🎉
保研
国奖
完善博客
学一门乐器
发表一篇论文
拍摄人生照片
去3个城市旅游
专业课知识视频
拍摄毕业季视频
----- 2025 ------
👏希望我们一起变好👏