1# 多模输入子系统 2 3## 简介 4 5OpenHarmony旨在为开发者提供NUI(Natural User Interface)的交互方式,有别于传统操作系统的输入,在OpenHarmony上,我们将多种维度的输入整合在一起,开发者可以借助应用程序框架、系统自带的UI组件或API接口轻松地实现具有多维、自然交互特点的应用程序。 6 7具体来说,多模输入子系统基于Linux原生驱动和HDF驱动接收设备输入事件,如键盘、鼠标、触摸屏、触摸板等, 对输入事件进行归一化和标准化后通过innerSDK分发到ArkUI框架,ArkUI框架封装事件后转发到应用,或者innerSDK通过JsKit接口直接分发事件到应用。 8 9![](figures/多模架构图.png) 10 11## 目录 12 13``` 14/foundation/multimodalinput/input 15├── common # 公共代码 16├── interfaces # 对外接口存放目录 17│ └── native # 对外native层接口存放目录 18│ └── innerkits # 对系统内部子系统提供native层接口存放目录 19├── service # 服务框架代码 20├── sa_profile # 服务启动配置文件 21├── uinput # 输入事件注入模块 22``` 23 24## 使用 25 26### 接口说明 27 28多模输入目前提供的接口为按键事件注入接口,该接口仅对系统应用开放。 29 30inputEventClient是处理注入事件类。 31 32**表 1** inputEventClient的主要接口 33 34| 功能分类 | 接口名 | 描述 | 35| :------: | :-----------------------------------------------: | :----------------: | 36| 注入按键 | function injectEvent(keyEvent: KeyEvent): number; | 注入按键事件的接口 | 37 38### 使用说明 39 40当前仅提供了BACK按键的事件注入。 41 42当系统应用需要返回上一层时,通过注入接口将BACK键注入到多模服务,多模服务再上传到应用,以实现返回到上一层级目录的效果。使用方式如下所示: 43 44``` 45// 引入提供的js接口库 46import inputEventClient from '@ohos.multimodalInput.inputEventClient'; 47 48// 调用注入事件接口 49let keyEvent = { 50 isPressed: true, // 按键事件的按键类型:true:down false:up 51 keyCode: 2, // 按键对应的keycode, 例如back键的值为2 52 keyDownDuration: 0, // 按键按下到抬起的时长,单位ms 53 isIntercepted: false // 标注按键事件是否检测拦截 54} 55res = inputEventClient.injectEvent({KeyEvent: keyEvent}); 56``` 57 58> **说明:** 新增的接口能力需要兼容原有的能力。 59 60### 设备能力支持 61 62| 设备 | 触摸屏 | 触摸板 | 鼠标 | 键盘 | 63| :---------: | :----: | :----: | :--: | :--: | 64| rk3568 | 是 | 是 | 是 | 是 | 65| hi3516dv300 | 是 | 否 | 否 | 否 | 66 67## 相关仓 68 69**多模输入子系统** 70 71[multimodalinput_input](https://gitee.com/openharmony/multimodalinput_input) 72 73