英文locale解决fcitx5漏字、误删等问题

如题。

fcitx5的漏字问题让我印象深刻。昨天重装系统,在尚更改系统语言为中文的情况下安装了fcitx5+rime+雾凇拼音,因为是hyprland所以仅设置了XIM的环境变量。用code测试输入法时发现没有出现任何异常。但是我没有做任何设置,code这样的electron应用应该至少会出现漏字情况才对。疑惑的时候突发奇想,我的locale是英文,这是唯一的变量,难道是因为locale?

测试一:

将/etc/locale.conf设置为LANG=zh_CN.UTF-8,code出现漏字问题。再次改回en_US.UTF-8,漏字问题小时。

测试二:

通过~/.config/locale.conf修改locale,情况复现。

测试三:

全局locale设置为中文。使用LANG=en_US.UTF.8环境变量启动code,漏字异常消失。

测试四:

用qq和typora进行上述操作,复现成功。

测试五:

从hyprland更换为niri,复现成功。

所以,当locale为英文时输入法不会出现任何异常。与之相对,常规的设置IM_MODULE变量或者设置–ozone-platform=wayland启动参数的解决办法能解决漏字问题,但依旧会出现错位、无法删除最后一个字母、删除输入的字母时误删光标右侧字符之类的异常。

有人有更深入的想法吗?这是为什么。

2 Likes

原来和locale有关?我说怎么看论坛这么多漏字的, 有的和我一样的使用场景, 我都没遇到过, 我一直用的en_US.UTF.8

CEF程序走的都是GTK输入模块,有装fcitx5-gtk吗,然后在~/.config/gtk-3.0/settings.ini里面加入了gtk-im-module=fcitx吗?(不要在全局环境变量加,这个会出现Fcitx Fallback X11)

试了下,你说的方法和启动的时候设置GTK_IM_MODULE环境变量是一样的效果,还是会出现漏字以外的异常。