在Emacs中无法使用fcitx5,gnome on wayland桌面下

近来因为smart-input-source 打算切换回系统输入法。但无法在Emacs中使用fcitx5,而它在其他软件中都是可以使用的。 我的输入法切换键是Ctrl-Shift-F8,在emacs中按会被emacs捕获,显示C-f8 is not defined,该怎么把这个键传给系统而不是emacs呢?

我使用emacs 28.0.50,由Arch Linux的emacs-git包提供。我试过emacs 26和emacs 27也有这个问题。大概两个月前是没有这个问题的,那时我的输入法切换键是Ctrl-Shift-l,这跟具体哪个键有关系吗?之后的一次编译后出现了这个问题。 我搜了网络上已有的很多相关问答,locale的运行结果是:

LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

跟im有关的变量也已设置好: image

wayland图形环境下fcitx和fcitx5的输入法变量好像是要在/etc/environment里吧?

我也设置了啊

而且其他软件都可以正常用fcitx5,就说明是emacs的问题吧

我在KDE中也遇到了相似的问题,其他软件都可以用fcitx,就emacs不行,我的解决方法是: 在 /etc/profile中加入

GTK_IM_MODULE=fcitx5
QT_IM_MODULE=fcitx5
XMODIFIERS=@im=fcitx5

楼主可以试试

那就参考这里 应该能解决了

感谢回复,但我不是从systemd启动emacs的,而且我在emacs 中查看相关的三个IM变量都是fcitx,locale变量如LANG和LC_CTYPE也都设成了中文的。

感谢回复,我之前的确没有在/etc/profile中设置这三个变量,但试了下也没有用 :slight_smile:

我发现问题的关键在于:即便在系统中激活了fcitx5,emacs却会关掉它,我是在emacs中运行shell命令fcitx5-remote ,看到结果是0 发现这个现象的。而且就算我在emacs中的终端模拟器中使用fcitx5-remote启动fcitx5,它还是close的状态,简直就像emacs跟fcitx5是仇人一样:

换到 Wayland 试了一下没啥问题

我的设置:

export XIM=fcitx
export XIM_PROGRAM=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SDL_IM_MODULE=fcitx5

感谢。我只前没有设置XIM和SDL有关的变量,但设置后,重启,还是无法使用。 根本的问题还是上面提到的fcitx5在emacs中法激活吧。

你装了 fcitx5-gtk 没有

装了。除emacs外的软件都可以正常用fcitx5啊

我也有这个问题,其他地方都正常,就是在Emacs下Fcitx5无法启动。

还是用emacs-rime吧,别折腾了,也稳定很多。等 @goumao 添加emacs-rime的支持。

smart-input-source
最新完成的是补上了TUI下光标颜色和获焦/失焦的支持。
backlog现在排到 emacs-rime 了。

我还没用过emacs-rime呢~~
从本地安装emacs-rime开始。

有一个风险,
就是emacs-rime可能有些功能和smart-input-source 冲突
那样的话,就需要作者加一些开关,用户把冲突的功能关闭。

1赞

打开 emacs 后执行 qdbus org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.DebugInfo 的输出是什么呢?

1赞
Error in private config: edit.el, (void-function default-input-method)

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace.

got it. 要在 :custom 中启用,不是 :config

还要自己编译?

我看说明上,macos下直接下载就行了啊。

====更新====

搞定了

@Vitaly @yqu212

我简单配置了一下,
smart-input-source-emacs 本身未做任何修改,
就把emacs-rime挂上了。

现征集使用反馈,见下帖:

1赞

是这样的(好厉害): qdbus org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1.DebugInfo

Group [wayland:] has 46 InputContext(s)
  IC [b0b40da3cb664d7c8f0f2bb6c55c0976] program:thunderbird frontend:dbus
  IC [40176b404d0f4e70ad86ea646728a1db] program:thunderbird frontend:dbus
  IC [810737512c8c445390067fd1ae1d495c] program:gnome-terminal-server frontend:dbus
  IC [395e4a7f5fd9458d904bd5c529b75439] program:thunderbird frontend:dbus
  IC [2a7bd62924824d08880ad5d82a10fcd7] program:gnome-terminal-server frontend:dbus
  IC [5d1b4babd1f3408e992c8d38963c85fd] program:firefoxdeveloperedition frontend:dbus
  IC [6ef25dc3698c4f20a86fa772e886e9df] program:firefoxdeveloperedition frontend:dbus
  IC [928d56f4739e4f6a93a10a692202bd99] program:gnome-tweaks frontend:dbus
  IC [7dd295a669a542ccb5a229f8ab212118] program:gnome-tweaks frontend:dbus
  IC [f54436f9f7174ddd9b3039d9cbac60ae] program:guake frontend:dbus
  IC [0770b7faba9c404b9fe3419d855e7a25] program:gnome-tweaks frontend:dbus
  IC [bc9405f80eb7416e9927bddc7ae4aad6] program:firefoxdeveloperedition frontend:dbus
  IC [d50549e0adba410688954306ee15d85e] program:thunderbird frontend:dbus
  IC [0b84f73b8bae4b819192ffa4476742d3] program:guake frontend:dbus
  IC [b105473eac114f58a13bbef6bdf83234] program:gnome-tweaks frontend:dbus
  IC [6e0926f4d3484fd586f7e626ac82b0cd] program:guake frontend:dbus
  IC [50b222c1b41345a49ee461bad7abad90] program:gnome-tweaks frontend:dbus
  IC [1fbc09eb0b8e479dbfbf6ea0435932de] program:guake frontend:dbus
  IC [7cc910b5014f40f7a6d18b72ac4704d9] program:Nutstore frontend:dbus
  IC [15c275db9c1f4201aeebd98727226b8d] program:guake frontend:dbus
  IC [9a75d12fa33a48f39afb29ba11f843ed] program:firefoxdeveloperedition frontend:dbus
  IC [35073c15193d451f89c515870fb15952] program:guake frontend:dbus
  IC [0d458644533241329dbec705140d96f3] program:gnome-tweaks frontend:dbus
  IC [7d6faa0baf9d4128aba99f0a5b27874d] program:thunderbird frontend:dbus
  IC [71b14ae9b43b4a5f960a84d68e23629c] program:guake frontend:dbus
  IC [e92fa444f75f4032b5bd4842ee99fb20] program:gnome-tweaks frontend:dbus
  IC [31894e6a1a15416e997829c2c525ba97] program:guake frontend:dbus
  IC [162fcbbe0ddb4c6882da32a1928c5c99] program:gnome-terminal-server frontend:dbus
  IC [991008e3e32a46d1a3b5d6edd83ea732] program:gnome-tweaks frontend:dbus
  IC [c59581c42040466fb62e25641036bf7f] program:thunderbird frontend:dbus
  IC [9d1bbf84a0664bf3be64da7dc165e4e4] program:guake frontend:dbus
  IC [8fddf13c990a4543b3ff7c02d328c0ef] program:gnome-tweaks frontend:dbus
  IC [ad6661d1ba4442cd950721dbe925f13a] program:guake frontend:dbus
  IC [2c299b6b62be4765925993fa1a46f719] program:gnome-terminal-server frontend:dbus
  IC [9da2b9fe4926439ab30479a806cfd747] program:firefoxdeveloperedition frontend:dbus
  IC [8ee4efa357bd47048764e082377e3795] program:firefoxdeveloperedition frontend:dbus
  IC [11776fe107574820a87b4c88e88cb8dd] program:gnome-terminal-server frontend:dbus
  IC [b393ee03469e434aacb41a81c0ffcc7f] program:firefoxdeveloperedition frontend:dbus
  IC [de526ccf3f86468da9a25b877bca3ba3] program:gnome-tweaks frontend:dbus
  IC [7041b50e340c489fb2cc3ec7bbe08104] program:firefoxdeveloperedition frontend:dbus
  IC [e84a1cd75bd347a787f92fc848e63310] program:gnome-tweaks frontend:dbus
  IC [2f142d95bce745c5b63b2ef8b20802d4] program:gnome-tweaks frontend:dbus
  IC [260ae63bfb6747318b4ad5e5f2501a77] program:firefoxdeveloperedition frontend:dbus
  IC [63de97466dd949cf83e4aacd82dfbb27] program:gnome-tweaks frontend:dbus
  IC [ad3968a9e0fa48ba8a2b6d14bd5afe69] program:gnome-tweaks frontend:dbus
  IC [d576d19722db4b348095ad616c2bd5f2] program:gnome-tweaks frontend:dbus
Group [x11::0] has 6 InputContext(s)
  IC [c1c76c77ae934c6291b219638ef62c3a] program:zulip frontend:dbus
  IC [a150f270c68b431bb1f69b7003fd7bd4] program:google-chrome frontend:dbus
  IC [9a79fea5ca7549cc95d726e27068c081] program:telegram-desktop frontend:dbus
  IC [8ab7e308fffe4af48040a2fda3b8d062] program:slack frontend:dbus
  IC [bfc4b63d3e9243aa8ffb3aa99ca6f8d1] program:telegram-desktop frontend:dbus
  IC [7084f795448d4097b94169e5e7a3689e] program:electron frontend:dbus

这里面看不到emacs,这是问题的根源吗