Skip to content

新版0.17.4在gvim中,当执行完gvim中的normal命令后输入法会自动切换为中文状态 #1899

Description

@JFXTK

上报前请检查

  • [* ] 我遇到的问题没有其他人在 issue 里提到过
  • [*] 我的小狼毫版本于 rime/weasel 下载
  • [*] 我在使用小狼毫的最新发布版本,或最新发布版本后的 CI 构建

操作系统信息

  • OS 详细版本: Windows10, 22H2,19045.6546
  • 小狼毫版本: 0.17.4

描述遇到的问题
在0.17.4版的小狼毫的拼音或者五笔输入法中,将ascii_mode的reset设置为1,默认是英文状态
在gvim.exe(9.1.1825)中, 执行完任意一个normal模式下的命令,比如 r 1,或者:w [Enter],输入法就会自动变成中文状态。在0.17.0中,没有这个问题。
如果0.17.4将ascii_mode的reset设置为0,默认是中文状态,也没有这个问题。

我跟踪了一下,如果是在0.17.4中将ascii_mode的reset设置为1,每次执行完gvim的normal命令后,gvim会无缘无故调用一次 HRESULT WeaselTSF::_HandleCompartment(REFGUID guidCompartment) 这个函数,参数为GUID_COMPARTMENT_KEYBOARD_OPENCLOSE,导致小狼毫执行如下代码:
_status.ascii_mode = !_IsKeyboardOpen();
if (_pLangBarButton && _pLangBarButton->IsLangBarDisabled())
_EnableLanguageBar(true);
_HandleLangBarMenuSelect(_status.ascii_mode
? ID_WEASELTRAY_ENABLE_ASCII
: ID_WEASELTRAY_DISABLE_ASCII);
输入法就自动切换成中文了。
0.17.0不管ascii_mode/reset为0还是1,或者0.17.4中把ascii_mode/reset=0, gvim在执行完normal模式下的命令后,就不会调用 HRESULT WeaselTSF::_HandleCompartment(REFGUID guidCompartment)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions