山东大学软件工程应用与实践——WeaselIME(一)

2021SC@SDUSC


从这一篇开始分析WeaselIME包的关键代码。
在这里我们先简单了解一下IME。

IME概述

IME是指Input Method Editors输入法编辑器,它是一种专门的应用程序, 用来输入代表东亚地区书面语言文字的不同字符。
一个IMF结构中包含三个主要的部分:

  • input method manager(IMM):管理各部分的交互。它是一个客户端API,存在于各个应用程序的context中,用来沟通管理所有进程间交互的全局系统服务。
  • input method(IME):实现一个允许用户生成文本的独立交互模块。系统绑定一个当前的输入法。使其创建和生成,决定输入法何时隐藏或者显示它的UI。同一时间只能有一个IME运行。
  • client application:通过输入法管理器控制输入焦点和IME的状态。一次只能有一个 客户端使用IME。

IME工作原理

在这里插入图片描述
结合IME转换接口进行简单说明:

  • 输入法初始化:
    ImeInquire : 刚选择某输入法时,IMM调用此函数,获得输入法相关信息,并根据用户界面类UICLASSNAME,自动创建用户界面。
    ImeSelect : 打开或关闭输入法时被调用,在此函数中对输入法上下文进行初始化或恢复释放

  • IMM将键盘消息传递给IME:
    IMM 通过IME 转换接口ImeProcessKey 将键盘消息发动到IME此函数对键盘消息进行筛选处理,用以判断此消息是发送给IME 还是直接发送给应用程序。如果返回TRUE 则发送给IME 否则,直接发送给应用程序

  • IME将键盘消息转换为相应汉字:
    IME 通过ImeToAsciiEx 函数来处理ImeProcessKey发送过来的键盘消息,并最终转换为输出的结果串

  • IME 将汉字以字符消息的形式返回给IMM:
    IME将使用WM_IME_CHAR或 WM_IME_COMPOSITION/GCS_RESULT消息把组合好的字符发送给窗体中的应用程序。如果应用程序没有处理这些消息,DefWindowProc函数会把它们翻译成一条或多条WM_CHAR消息

IME命令

命令格式:
ime< command >
命令列表:

命令 功能 实现方法
list 获取所有输入法 getInputMethodList
enable ID 设置输入法可用 setInputMethodEnabled
disable ID 设置输入法不可用 setInputMethodENabled
set ID 设置默认输入法 setInputMethod

IME示例

MakeResultString 将转换结果保存在输入上下文中将GenerateMessage 发送WM_IME_COMPOSITION/GCS_RESULT消息给应用程序,从而使得应用程序获得结果串。

    BOOL MakeResultString(BOOL fFlag) 
    {
    
        HIMC                hIMC; 
        LPINPUTCONTEXT      lpIMC           = NULL; 
        LPCOMPOSITIONSTRING lpIMECompStr    = NULL; 
        LPTSTR          lpResultStr         = NULL; 
        GENEMSG         GnMsg               
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值