和这个一样 bug#71711: 30.0.50; w32-get-ime-open-status always return t
w32-get-ime-open-status 不正常,w32-set-ime-open-status 正常
和这个一样 bug#71711: 30.0.50; w32-get-ime-open-status always return t
w32-get-ime-open-status 不正常,w32-set-ime-open-status 正常
目前情况就是这个功能暂时没人维护了,只有windows+CJK用户才用的到但是现在emacs没有windows+CJK的开发人员
The
w32-get-ime-open-status
will alway return t.
但我的此函数一直返回的nil
。
GNU Emacs 31.0.50 (build 1, x86_64-w64-mingw32) of 2024-11-20
版本 Windows 11 企业版 版本号 23H2 安装日期 2024/8/29 操作系统版本 22631.4541 体验 Windows 功能体验包 1000.22700.1055.0
而且我能在client里正常使用sis
有大佬想维护一下这个功能吗?我5年前写的。现在不用windows,没法在摸鱼时间来查原因,重新配置一遍windows上的编译和debug好麻烦。
我测试了一下,Windows 10 家庭中文版(22H2
)和最新的emacs 30.0.93
(2024.12.20编译的pretest版本),w32-get-ime-open-status
有时候的返回是正确的,但是在切换回英文状态,就是(w32-set-ime-open-status nil)
后就不正确了,一直不变,可能是nil或者t,原因不详。
另外我用evil是只设置输入法状态,不调用w32-get-ime-open-status
函数,所以没什么影响。
这个问题我测试下来是和新版本 Windows 的输入法有关,因为使用 Windows 11自带的拼音输入法时,如果开启兼容模式,使用旧版的输入法的话,是正常的。
Rime 目前在 Windows 上也更新到了和 Windows 11 输入法一样的 API,所以也会出现楼主所说的问题。
ImmGetOpenStatus (imm.h)
这个api一直没有变可能是因为在lisp线程调用ImmGetOpenStatus
函数导致的。ImmSetOpenStatus
是要求必须是creator of a specified input method context handle,就是window gui thread才能调用。但是ImmGetOpenStatus
函数在当时开发测试时,直接在lisp thread能正确获取到输入法状态。
如果在window gui thread(图形主线程,就是创建输入法的那个gui thread)中调用,应该能正确获取到输入法状态。
但我这边测试下来 Emacs 28.1 和 Emacs 29.1 都是有问题。以前都是正常的,就是 Windows 改变了什么。
打开了输入法的下面这个选项就都好了。可能是 Windows 新版输入法本身有 Bug。
需要社区大佬解决这个bug。我得等哪天用回windows才有时间看了,估计是不可能,以后都换linux了。
请教下,imbot 是做什么用的,解决什么问题?我看 README 没看明白。
自动切换输入法,和sis类似,只有200行你自己看代码。
我把imbot的输入法状态探测给除掉了,感觉代码反而更简单了,这个linux也是很好用的。不过我不知道这个输入法探测w32-get-ime-open-status和设置函数w32-set-ime-open-status哪个更耗时。
readme需要写细一点,要不然只能去读代码才知道怎么用了。
输入法探测,主要是有两点考虑:
windows下,好多人用WSL吧,这样的话,windows本身无所谓了。
不如去reddit也发个帖子,那边流量大说不定能找到愿意接手的人