# miscservices_inputmethod
**Repository Path**: lovechinamo/miscservices_inputmethod
## Basic Information
- **Project Name**: miscservices_inputmethod
- **Description**: Input Method Framework|输入法框架,主要是拉通应用和输入法,保证应用可以通过输入法进行文本输入
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 457
- **Created**: 2022-04-26
- **Last Updated**: 2024-09-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# miscservices_inputmethod
#### 介绍
输入法框架,主要作用是拉通应用和输入法,保证应用可以通过输入法进行文本输入
**图 1** 子系统架构图

#### 仓路径
/base/miscservices/inputmethod
#### 框架代码介绍
输入法框架目前有四大模块,具体如下:
1. 应用客户端
路径:/base/miscservices/inputmethod/frameworks/inputmethod_controller
作用:实现应用和输入法框架服务交付,包括应用与输入法服务的绑定、应用对输入法的显示和隐藏请求等等
2. 输入法客户端
路径:/base/miscservices/inputmethod/frameworks/inputmethod_ability
作用:实现输入法框架服务与输入法交付的中间桥梁,包括监听输入法当前的状态等等
3. 输入法服务
路径:/base/miscservices/inputmethod/services
作用:作为输入法框架的核心,输入法的主要处理逻辑都是在这里完成
4. 输入法Js接口
路径:/base/miscservices/inputmethod/interfaces/kits/js
作用:暂时对外暴露的js接口,主要是留给输入法进行调用使用的
#### 说明
##### 接口说明
**表 1** InputMethod开放的主要方法
接口名
|
描述
|
on(type: 'keyDown'|'keyUp', callback: (event: KeyEvent) => boolean): void;
|
订阅硬键盘事件,使用callback回调返回按键信息
|
off(type: 'keyDown'|'keyUp', callback?: (event: KeyEvent) => boolean): void;
|
取消订阅硬键盘事件
|
on(type: 'cursorContextChange', callback: (x: number, y:number, height:number) => void): void;
|
订阅光标变化事件,使用callback回调返回光标信息
|
off(type: 'cursorContextChange', callback?: (x: number, y:number, height:number) => void): void;
|
取消订阅光标变化事件
|
on(type: 'selectionChange', callback: (oldBegin: number, oldEnd: number, newBegin: number, newEnd: number) => void): void;
|
订阅文本选择变化事件,使用callback回调返回文本选择信息
|
off(type: 'selectionChange', callback?: (oldBegin: number, oldEnd: number, newBegin: number, newEnd: number) => void): void;
|
取消订阅文本选择变化事件
|
on(type: 'textChange', callback: (text: string) => void): void;
|
订阅文本变化事件,使用callback回调返回当前文本内容
|
off(type: 'textChange', callback?: (text: string) => void): void;
|
取消订阅文本变化事件
|
**表 6** KeyboardController开放的主要方法
接口名
|
描述
|
getForward(length:number, callback: AsyncCallback<string>): void;
|
获取光标前固定长度的文本
|
getForward(length:number): Promise<string>;
|
获取光标前固定长度的文本
|
getBackward(length:number, callback: AsyncCallback<string>): void;
|
获取光标后固定长度的文本
|
getBackward(length:number): Promise<string>;
|
获取光标后固定长度的文本
|
deleteForward(length:number, callback: AsyncCallback<boolean>): void;
|
删除光标前固定长度的文本
|
deleteForward(length:number): Promise<boolean>;
|
删除光标前固定长度的文本
|
deleteBackward(length:number, callback: AsyncCallback<boolean>): void;
|
删除光标后固定长度的文本
|
deleteBackward(length:number): Promise<boolean>;
|
删除光标后固定长度的文本
|
sendKeyFunction(action:number, callback: AsyncCallback<boolean>): void;
|
发送功能键
|
sendKeyFunction(action:number): Promise<boolean>;
|
发送功能键
|
insertText(text:string, callback: AsyncCallback<boolean>): void;
|
插入文本
|
insertText(text:string): Promise<boolean>;
|
插入文本
|
getEditorAttribute(callback: AsyncCallback<EditorAttribute>): void;
|
获取编辑框属性值
|
getEditorAttribute(): EditorAttribute;
|
获取编辑框属性值
|
#### 框架主要支持功能
1.在编辑属性的控件中进行点击操作,即可通过输入法框架调起默认输入法应用
2.通过输入法应用可以进行打字,并上屏输入字符到应用客户端
#### 本框架编译调试方法
1. 编译命令
./build.sh --product-name (填写具体的产品名,如:Hi3516DV300) --build-target inputmethod_native
2. 推送so文件
将工程目录下out\ohos-arm-release\miscservices\inputmethod_native下的libinputmethod_client.z.so libinputmethod_ability.z.so
libinputmethod_service.z.so三大so推送到system/lib,将libinputmethodability.z.so推送到system/lib/module下,并确保四个so至少为可读状态。
3. 重启设备
#### 参与贡献
1. Fork 本仓库
2. 提交代码
3. 新建 Pull Request
4. commit完成即可