• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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