美文网首页
处理windows的IME

处理windows的IME

作者: 行走的代码 | 来源:发表于2021-06-27 22:10 被阅读0次

输入法工作原理

参考文档:
https://blog.csdn.net/shuilan0066/article/details/6883629
https://blog.csdn.net/new_smile/article/details/51097366

IME消息定义

参考文档:https://blog.csdn.net/danxuezx/article/details/4509965

cef中关于IME的源码

窗口模式:代码在src\ui\base\ime目录下,win端可以查看imm32_manager.cc文件。
无窗口模式:cef提供的测试示例中,有监听IME事件,处理输入法窗口位置、光标等的方法,可以参照这个例子实现修改。示例代码路径:src\cef\tests\cefclient\browser\osr_window_win.cc

LRESULT CALLBACK OsrWindowWin::OsrWndProc(HWND hWnd,
                                          UINT message,
                                          WPARAM wParam,
                                          LPARAM lParam) {
  CEF_REQUIRE_UI_THREAD();

  OsrWindowWin* self = GetUserDataPtr<OsrWindowWin*>(hWnd);
  if (!self)
    return DefWindowProc(hWnd, message, wParam, lParam);

  // We want to handle IME events before the OS does any default handling.
  switch (message) {
    case WM_IME_SETCONTEXT:
      self->OnIMESetContext(message, wParam, lParam);
      return 0;
    case WM_IME_STARTCOMPOSITION:
      self->OnIMEStartComposition();
      return 0;
    case WM_IME_COMPOSITION:
      self->OnIMEComposition(message, wParam, lParam);
      return 0;
    case WM_IME_ENDCOMPOSITION:
      self->OnIMECancelCompositionEvent();
      // Let WTL call::DefWindowProc() and release its resources.
      break;

一些接口说明

ImmGetContext:获取输入窗口对应的输入法环境上下文。
中文输入法设置位置注意事项:
如果用户打开 TSF and CUAS:通过::ImmSetCandidateWindow()的CFS_CANDIDATEPOS属性,设置输入位置;
如果关闭:通过SetCaretPos设置位置。(来自cef源码注释)

一些问题反馈

问题1:Osr模式下输入法位置不对
这个问题反馈的人很多,cef很多版本都存在这个问题,例如下面这个官网帖子:https://bitbucket.org/chromiumembedded/cef/issues/1675/inline-ime-support-nstextinput-protocol-in
一个靠谱的解决方案帖子:https://www.shuzhiduo.com/A/gAJG9YQbdZ/
很疑惑,这个问题存在了很久,为什么cef源码一直没有修复?

问题2:IME 候选窗口遮挡文本
还没有遇到这个问题,只是看到一个帖子,顺便记录下来。
https://sourceforge.net/p/scintilla/bugs/2120/

相关文章

  • 处理windows的IME

    输入法工作原理 参考文档:https://blog.csdn.net/shuilan0066/article/de...

  • 输入法编程参考

    Windows 95中文输入法编辑器(IME) 微软 翻译:TBsoft Software Studio ...

  • Android Input 3

    写这篇笔记记录一下APP与IME的一些处理流程 如果IME是第三方公司的写的,这对于调试来说非常痛苦,因为没有源码...

  • JavaScript 实现 input 标签只能输入数字(且不能

    ime-mode的语法解释如下: ime-mode : auto | active | inactive | di...

  • 新习得的几个命令

    输入法相关的命令 Android输入法相关的命令是ime,具体的用法如下: usage: ime list [-a...

  • IME输入

    自然语言处理的输入法作业成品没有做出来,但不想再在蛋疼的Win32上面耗费时间了,整理文档,记录一下心得,新手再来...

  • sublime text3使用

    安装插件: control package IME markdownPreview markdownEditing...

  • T-ime

    时间 短点,在慢点 时间 长点,在

  • 输入框edittext,改变键盘enter文字

    actionUnspecified 未指定,对应常量EditorInfo.IME_ACTION_UNSPECIFI...

  • 2018-12-14

    安装了百度IME日语输入法。

网友评论

      本文标题:处理windows的IME

      本文链接:https://www.haomeiwen.com/subject/secfultx.html