fcitx5 下 Emacs 无法切换输入法的排查

💡 原文中文,约4900字,阅读约需12分钟。
📝

内容提要

在 Emacs 中无法切换输入法的问题是由于 XIM 服务器名称不匹配。检查发现,Emacs 的 XMODIFIERS 设置为 "@im=fcitx",而实际的 XIM 服务器名为 "@server=fcitx5"。修改 emacs.service 中的 XMODIFIERS 为 "@im=fcitx5" 后重启服务,问题得到解决。

🎯

关键要点

  • Emacs 无法切换输入法的问题是由于 XIM 服务器名称不匹配。
  • Emacs 的 XMODIFIERS 设置为 '@im=fcitx',而实际的 XIM 服务器名为 '@server=fcitx5'。
  • 通过检查环境变量,发现 Emacs 是通过 systemd 服务启动的,环境变量与 .xinitrc 不同。
  • XMODIFIERS 的值必须与 XIM 服务器的注册名一致,才能正常使用输入法。
  • 修改 emacs.service 中的 XMODIFIERS 为 '@im=fcitx5' 后重启服务,问题得到解决。

延伸问答

Emacs 无法切换输入法的原因是什么?

原因是 XIM 服务器名称不匹配,Emacs 的 XMODIFIERS 设置为 '@im=fcitx',而实际的 XIM 服务器名为 '@server=fcitx5'。

如何解决 Emacs 无法切换输入法的问题?

修改 emacs.service 中的 XMODIFIERS 为 '@im=fcitx5',然后重启 Emacs 服务。

XMODIFIERS 环境变量的作用是什么?

XMODIFIERS 环境变量告诉 X11 应用程序通过 XIM 协议连接指定的输入法服务器。

为什么 Emacs 的环境变量与 .xinitrc 不同?

因为 Emacs 是通过 systemd 服务启动的,环境变量来自于 systemd service 文件,而不是 .xinitrc。

fcitx5-diagnose 的建议为什么会导致问题?

fcitx5-diagnose 建议将 XMODIFIERS 改为 '@im=fcitx',但这与实际注册的 XIM 服务器名不匹配,导致无法找到输入法服务器。

如何确认 Emacs 使用的是 XIM 协议?

可以通过检查 Emacs 的构建特性,确认是否包含 XIM 支持,使用命令 'emacs --batch --eval '(princ (format "%s " system-configuration-features))''。

➡️

继续阅读