# 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** 子系统架构图 ![](figures/subsystem_architecture_zh.png "子系统架构图") #### 仓路径 /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开放的主要方法

接口名

描述

getInputMethodController(): InputMethodController;

获取客户端实例InputMethodController

getInputMethodSetting(): InputMethodSetting;

获取客户端设置实例InputMethodSetting

**表 2** InputMethodController开放的主要方法

接口名

描述

stopInput(callback: AsyncCallback<boolean>): void;

隐藏输入法

stopInput(): Promise<boolean>;

隐藏输入法

**表 3** InputMethodSetting开放的主要方法

接口名

描述

listInputMethod(callback: AsyncCallback<Array<InputMethodProperty>>): void;

查询已安装的输入法列表

listInputMethod(): Array<InputMethodProperty>;

查询已安装的输入法列表

displayOptionalInputMethod(callback: AsyncCallback<void>): void;

显示输入法选择对话框

displayOptionalInputMethod(): Promise<void>;

显示输入法选择对话框

**表 4** InputMethodEngine开放的主要方法

接口名

描述

getInputMethodEngine(): InputMethodEngine;

获取服务端实例

createKeyboardDelegate(): KeyboardDelegate;

获取客户端监听实例

on(type: 'inputStart', callback: (kbController: KeyboardController, textInputClient: TextInputClient) => void): void;

订阅输入法绑定成功事件,使用callback回调返回输入法操作相关实例

off(type: 'inputStart', callback?: (kbController: KeyboardController, textInputClient: TextInputClient) => void): void;

取消订阅输入法绑定成功事件

on(type: 'keyboardShow'|'keyboardHide', callback: () => void): void;

订阅输入法事件

off(type: 'keyboardShow'|'keyboardHide', callback?: () => void): void;

取消订阅输入法事件

**表 5** KeyboardDelegate开放的主要方法

接口名

描述

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开放的主要方法

接口名

描述

hideKeyboard(callback: AsyncCallback<void>): void;

隐藏输入法

hideKeyboard(): Promise<void>;

隐藏输入法

**表 7** TextInputClient开放的主要方法

接口名

描述

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完成即可