Difference between revisions of "FAQ/zh-hans"

From Fcitx
Jump to navigation Jump to search
(Created page with "当你抱怨输入法无法正常工作前,请先阅读这个页面。")
 
(77 intermediate revisions by 5 users not shown)
Line 3: Line 3:
 
当你抱怨输入法无法正常工作前,请先阅读这个页面。
 
当你抱怨输入法无法正常工作前,请先阅读这个页面。
  
Since 4.2.7, fcitx provides a command called fcitx-diagnose, it will try to detect some common problem and give some advice.
+
4.2.7 开始,Fcitx 提供了一个 fcitx-diagnose 的命令,它可以检测一些常见的问题并且给出一些建议。
  
[[Special:MyLanguage/Hall of Shame for Linux IME Support|Hall of Shame for Linux IME Support]]
+
[[Special:MyLanguage/Hall of Shame for Linux IME Support|Linux 输入法支持耻辱堂]]
  
== When use Ctrl + Space, Fcitx cannot be triggered on ==
+
== 使用 Ctrl + Space 时无法激活 Fcitx ==
  
Check the application you want to type.
+
检查你要输入文字的应用程序。
  
=== Only one specific app has problem? ===
+
=== Wayland ===  
* The most possible reason for this is Ctrl+Space occupied by some hotkey, please change to another trigger key and try again. This usually happens in some editor, since many ide use Ctrl+Space as default key binding for Completion.
 
  
=== All Gtk Apps have problem? ===
+
参考 [[Special:MyLanguage/Using Fcitx 5 on Wayland|在 Wayland 上使用 fcitx5]]。
* Please open a traditional Gtk App (traditional Gtk App means, it cannot be Firefox, Libreoffice, which only use Gtk as a UI style). Gedit is a good choice. Right click at the input box, there will be a menu named "Input Method", please make sure there is "Fcitx" in it and being choosed.
 
  
* If there is "Fcitx", but it still not works. Please try to restart Fcitx, if it will works at this time, please check your DBus settings, or make Fcitx start later. You can read [[Special:MyLanguage/Configure (Other)|Configure (Other)]] if you're using a custom startup script.
+
=== 这是唯一一个有问题的程序吗? ===
 +
* 最可能的原因是某个快捷键占用了 Ctrl Space,请修改另一个快捷键并重试。这常见于编辑器中,因为很多集成开发环境默认使用 Ctrl+Space 作为补全的快捷键。
  
* If there is Fcitx but not being choosed by default, and please select it and you can immediately try again in this app. If not works, please read the entry above. For permanent fix (To use Fcitx by default), please read Configure part in [[Special:MyLanguage/Install And Configure|Install And Configure]].
+
=== 所有 Gtk 程序都有问题? ===
 +
* 请打开一个传统意义上的Gtk程序(所谓传统,就是它不应该是Firefox,Libreoffice这种仅仅是是使用Gtk样式作为界面的程序)。Gedit是一个不错的选择。右键点击输入框,将会弹出一个“输入法”菜单,请确认“Fcitx”被选中。
  
* If there is no Fcitx, you should check your install first. Usually, the package name contains fcitx and gtk. If you [[Special:MyLanguage/Compile from source|compile fcitx from source]], please make sure you have enable GTK{2,3}_IM_MODULE option. If you're sure about this, please read [[Special:MyLanguage/Input method related environment variables|Input method related environment variables]] for how to update some cached file for gtk.
+
* 如果菜单中确实有Fcitx,但是还是无法正常工作,请先尝试重新启动Fcitx,如果这次就可以工作了,那么请检查你的DBus设置,或者延长Fcitx的启动时间。如果你使用自定义的启动脚本,你可以参考[[Special:MyLanguage/Configure (Other)|配置 (其他)]]
  
* If you are using Ubuntu and upgrade to 12.04 recently, or something werid happens to your system (Due to packager careless, or buggy package manager which can not do upgrade in correct order, for example, [https://bugs.archlinux.org/task/32764 pacman]), you might notice that gtk.immodules related files doesn't generate correctly during upgrade. Try uninstall {{package ubuntu|fcitx-frontend-gtk2}}, {{package ubuntu|fcitx-frontend-gtk3}} or coressponding package on your system and re-install them to trigger the file generate. Then recheck the input method menu to see whether it have "Fcitx" in the menu or not.
+
* 如果Fcitx没有默认选中,那么请先尝试选中它,并且立刻试试可否输入。如果不行,请参见上面一条。为了永久性的修复这个问题(默认选中 Fcitx ),请阅读[[Special:MyLanguage/Install and Configure|安装和配置]]中的配置部分。
  
=== All Qt Apps have problem? ===
+
* 如果没有 Fcitx这项,那么请首先检查你的安装,你所需要的包名包含了fcitx和gtk。如果你是[[Special:MyLanguage/Compile from source|从源码编译的Fcitx]],请确认你启用了GTK2,GTK3的输入法模块选项。如果你确认这点的话,请阅读[[Special:MyLanguage/Input method related environment variables|输入法相关的环境变量]]中的如何更新Gtk的缓存文件。
* Run qtconfig (might have different name on your distribution, it might be qtconfig-qt4), and go to the third tab, make sure fcitx is in the "Default Input Method" combo-box. If not, please check your install.
 
* Above solution can also applies if you want use XIM, but still we highly recommend you to use im module. See Also [[Special:MyLanguage/Input method related environment variables|Input method related environment variables]].
 
  
=== Is it Java, Xterm, wine, or some other non-Gtk/Qt Application? ===
+
* 如果你正在使用 Ubuntu,并且刚刚升级到 12.04,或者发生了什么不好的事情 (由于打包者的疏忽,或者有问题的包管理器无法按照正确顺序更新包,例如 pacman) 你可能会注意到 gtk.immodules 相关的文件并未在升级时正确生成。试试卸载{{package ubuntu|fcitx-frontend-gtk2}}, {{package ubuntu|fcitx-frontend-gtk3}} 或者你发行版对应的包,然后重新安装这两个包来触发文件的生成。然后重新检查输入法菜单里面是否有“Fcitx”。
There are also some very rare case, that you're using a embedded linux or mini-linux distro, in which you must use XIM, the X server might missing some locale file. The file is usually needed to be under /usr/share/X11/locale/.
 
  
And When you must use XIM, please make sure, your locale '''must NOT''' be C or POSIX and need to be a valid locale (no matter which language), and need to be generated if you are using glibc (locale-gen). When you are using im module, there is no such limitation.
+
=== 所有Qt程序都有问题? ===
 +
* 运行qtconfig (名称可能根据你的发行版有所不同,他可能是 qtconfig-qt4 ),选择第三个标签,确认fcitx是在默认输入法组合框中。如果没有,请检查你的安装。
 +
* 以上解决方案也可以类似解决XIM的问题,但我们强烈建议你使用输入法模块。参见 [[Special:MyLanguage/Input method related environment variables|输入法相关环境变量]]。
 +
 
 +
==== Telegram Desktop ====
 +
一些发行版的telegram desktop使用了qt6。这时候要确保系统上安装了Qt6的输入法模块。(对于fcitx4而言,在archlinux上要安装fcitx-qt6软件包)
 +
 
 +
=== Chromium或者任何基于chromium的浏览器(例如,Microsoft Edge)===
 +
对于在 X11 下运行的 Chromium,如果使用没有设置 DBUS_SESSION_BUS_ADDRESS 选项的 startx 启动图形用户界面,可能会遇到 [https://gitlab.freedesktop.org/xorg/app/xinit/-/issues/9 这个问题],它会导致基于 Chromium 的浏览器无法正确使用 dbus。为了解决这种情况,可以这么做:
 +
 
 +
1. 在 ~/.xinitrc 中自己导出 DBUS_SESSION_BUS_ADDRESS(或者如果您使用的是基于 debian 的系统,则更改为使用 ~/.xsession)。
 +
 
 +
2. 或者使用像sddm、gdm、lightdm这样的显示管理器替代startx。
 +
 
 +
对于在 wayland 下原生运行的 Chromium,唯一支持的原生 wayland 输入法协议是text-input-v1,只有 weston 支持。或者,也可以使用 Gtk4 的 im 模块,需要使用以下标志 (---enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4) 来使其启用 Gtk im 模块,但是除非使用 kimpanel + GNOME,否则在光标位置弹出候选词窗口的功能就完全坏掉了。
 +
 
 +
=== 是 Java、Xterm、wine 还是其他一些非 Gtk/Qt 应用程序? ===
 +
还有一些非常罕见的情况,在使用嵌入式 linux 或 mini-linux 发行版,而又必须在其中使用 XIM 时,X 服务器可能会丢失一些语言环境(locale)文件。该文件通常需要被放在 /usr/share/X11/locale/ 目录下。
 +
 
 +
并且当你必须使用 XIM 的时候,请确认你的 locale '''不能'''被设置为 C 或者 POSIX,并且需要被设置为一个可用的 locale (语言无所谓),并且如果你使用的是 glibc,你需要生成对应的locale的文件(locale-gen)。当你使用 im module 的时候,并无这个限制。
 +
 
 +
=== 是捆绑了自己的 Qt 库的 Qt 应用程序吗?===
 +
捆绑的 Qt 库通常使用自己的插件目录,这与系统的 Qt 不同。通常,他们也使用与系统 Qt 不同的 Qt,如果您只是复制系统的 fcitx-qt 文件,这也会使其不兼容。但无论如何,您可以开始检查它是否使用以下环境变量加载您复制的文件。 根据 XIM 应用程序的编写方式,它可能需要找到特定的字体才能使其工作。 在 Archlinux 上,需要 xorg-mkfontscale 来生成正确的字体目录文件。 安装后,您需要重新启动 X Server 才能使其工作。
 +
 
 +
QT_DEBUG_PLUGINS=1 QT_LOGGING_RULES="*.debug=true"
 +
 
 +
在尝试解决所有不兼容错误的时候。通常,ubuntu 的 fcitx-frontend-qt5 和 libfcitxqt5-1 是针对特定 qt 版本构建 fcitx-qt5 的良好来源。例如,DraftSight 2017S0 [https://groups.google.com/forum/#!topic/fcitx/9e4TI39_4sk] 可能适用于 xenial 的 fcitx-qt5。
  
 
=== Emacs ===
 
=== Emacs ===
Try
+
试试
  
 
  LC_CTYPE=zh_CN.UTF-8 emacs
 
  LC_CTYPE=zh_CN.UTF-8 emacs
  
Don't forget to check your locale -a contains that. See also [[Special:MyLanguage/Input method related environment variables|Input method related environment variables]].
+
别忘记检查你的 locale -a 确实包含了locale,参见 [[Special:MyLanguage/Input method related environment variables|输入法相关环境变量]]
 +
 
 +
Emacs 将使用 `-*-*-*-r-normal--<some font size>-*-*-*-*-*-*-*' 作为基础字体 (在 src/xfns.c 中),如果你没有匹配的字体,和输入法相关的代码将不会运行。安装某些字体包可能有帮助(对于需要的字体,xorg-fonts-misc 可能是正确的那个包,但你也可以试试别的 xorg-fonts-* 包。)。
 +
 
 +
=== 非 Gtk/Qt Wayland 应用程序(Alacritty、kitty 等)===
 +
有可能您使用的软件根本不支持输入法,因为它们需要有相关的代码来实现。即使这些软件有相关代码实现,合成器(compositer)也有很大可能不支持输入法。只有 GNOME Shell 和 KWin 具有完整的 text-input-v3 支持。截至 2022/05/07,sway 仍然没有完整的zwp_input_method_v2 支持来支持输入法界面(input surface)。对于 KWin,需要 Plasma 5.24+ 和 Fcitx 5.0.14+,并让 KWin 启动 Fcitx 5。并且需要用户转到虚拟键盘 KCM 并在 KCM 中选择 Fcitx 5。
 +
 
 +
== 在 wayland 下使用 Fcitx 5 时选词窗口闪烁 ==
 +
这主要是由于wayland输入法整体状态不佳。现有的 wayland 输入法协议并没有得到 compositor 的广泛支持。尽管 fcitx 5 支持这些协议,但应用程序和合成器的糟糕支持使它们无法使用。更不用说协议中的某些设计缺陷了。
 +
 
 +
为了使输入法可以与“当前”可用且广泛采用的技术一起使用,Fcitx 5 实现了一种称为“客户端输入面板”的机制,基本逻辑是要求客户端应用程序绘制输入窗口界面。这是通过 gtk/Qt 的 dbus 和 IM 模块来完成的。该实现需要使用底层 wayland 协议 xdg_popup 来显示窗口。不幸的是,只有新版本的 xdg_popup 协议支持“移动”可见的弹出窗口,而这部分在 Gtk3 和 Qt5 中并“没有”实现。更糟糕的是,Gtk3 和 Qt5 都将停止开发了(end of life, 缩写EOL),这意味着在 Gtk3/Qt5 中将不可能获得这种新的协议支持。问题是输入法可能需要在调整大小和移动非常频繁的窗口上显示。为了缓解这个问题,Fcitx 5 IM 模块实现了一个 hack,当我们需要移动窗口时,它会先隐藏窗口,然后再显示窗口。不幸的是,这会导致一定程度的闪烁。这种hack可能会导致在某些硬件和合成器组合中看起来非常糟糕。
 +
 
 +
有一些可能的解决方法。
 +
 
 +
1、在GNOME shell下使用kimpanel,使候选窗口以完全不同的机制呈现,不会出现闪烁。
  
Emacs will use `-*-*-*-r-normal--14-*-*-*-*-*-*-*' as basefont(in src/xfns.c), if you do not have one matched(like terminus、or 75dpi things, you can look the output of `xlsfonts'), XIM can not be activated.  
+
2.在KWin下禁用淡入淡出效果。KWin 似乎比某些合成器更能容忍这种闪烁。
  
== Problem in Firefox and Google Docs ==
+
== Firefox 中的 Google Docs 有问题 ==
  
You might want to toggle preedit off temporarily, which is Ctrl+Alt+P.
+
可以暂时关掉预编辑文本,默认快捷键为Ctrl+Alt+P。
  
== Cannot use Fcitx in flash ==
+
== 无法在 Flash 中使用 Fcitx ==
  
Please read [[Special:MyLanguage/Hall of Shame for Linux IME Support|Hall of Shame for Linux IME Support]], and use im module.
+
请阅读 [[Special:MyLanguage/Hall of Shame for Linux IME Support|Linux输入法支持耻辱堂]],并使用输入法模块。
  
== Cannot type English after updating to fcitx newer than 4.2.4 ==
+
== 更新至新于 4.2.4 的版本之后,无法输入英文 ==
  
Make sure you have add "[[Special:myLanguage/Keyboard|Keyboard]]" to the input method list. You can use [[Special:myLanguage/Integrate with Desktop#Configuration tool|Configuration tool]].
+
请确认你将“[[Special:myLanguage/Keyboard|键盘]]”加入了输入法列表。你可以使用[[Special:myLanguage/Integrate with Desktop#Configuration tool|配置工具]]来修改和查看。
  
And you may want to move "Keyboard" to the first one.
+
并且你可能希望将“键盘”移至第一项。
  
== Unexpected keyboard layout change ==
+
== 非预期的键盘布局变化 ==
  
Use [[Special:myLanguage/Integrate with Desktop#Configuration tool|Configuration tool]], to bind specific keyboard layout to the specific input method.
+
[[Special:myLanguage/Integrate with Desktop#Configuration tool|配置工具]]来为特定的输入法绑定特定的键盘布局。
  
== xmodmap settings being overwritten ==
+
== xmodmap 的设置被覆盖 ==
  
Fcitx now control keyboard layout and when switch layout, xmodmap setting will be overwritten. So fcitx-xkb provides an option to specify the xmodmap script and let fcitx loads it for you whenever keyboard layout changes. Or disable fcitx-xkb addon is also a solution for you, or if your requirement is simply, for example, switching Caps Lock and Esc, which is provided by xkb option, you can just set it with your desktop keyboard configuration tool (Gnome and KDE all support such configuration).
+
Fcitx 现在可以控制键盘布局,并且在键盘布局切换时,xmodmap的设置将被覆盖。因此 fcitx-xkb 提供了一个选项来指定xmodmap脚本的位置,并且可以让fcitx来在键盘布局变化时加载这个配置。直接禁用 fcitx-xkb 也是一种选择,或者如果您的需求很简单,例如只是想交换 Caps Lock Esc 的位置,部分选项可以由xkb选项来提供,您可以通过您桌面的键盘配置工具来设置这些选项 (Gnome KDE 都支持这类配置)
  
For more detailed explanation, xmodmap is a very low level tool, that doesn't aware keyboard layout. For X11, keyboard layout is built on a set of profile, when such profile is loaded, anything you changed with xmodmap will be overwritten, this isn't specific to fcitx, but all tool that support keyboard layout configuration. Xkb option is a set of profile that can do some pre-defined change over keyboard layout, including many thing that people usually do with xmodmap, for example, defining where dead key is, switching Caps Lock and Esc, and so on. Unless you have special requirements, xkb layout and xkb option is recommended.
+
选项具体的细节解释如下,xmodmap是一个非常底层的工具,并不了解键盘布局的设置,对X11来说,键盘布局是建立在一组预设文件上,当预设文件加载时,所有通过xmodmap加载的配置都将被覆盖,这并不是只针对fcitx而言如此,所有进行键盘布局设置的工具都是如此。Xkb 选项是一组可以按照预定义设置来修改键盘布局的选项,涵盖了绝大多数一般人想用xmodmap进行的设置,例如死键的位置,交换 Caps Lock Esc 等等。除非您有特殊需求,推荐使用 xkb 布局和 xkb 选项。
  
Since 4.2.7, Fcitx will try to load ~/.Xmodmap if it exists.
+
4.2.7 起,如果 ~/.Xmodmap 存在,Fcitx 将会尝试自动加载。
  
== Configure user interface, font, vertical list ==
+
== 配置用户界面,字体,纵向列表 ==
  
Use [[Special:myLanguage/Integrate with Desktop#Configuration tool|Configuration tool]], Addon Configuration -> Classic UI.
+
使用[[Special:myLanguage/Integrate with Desktop#Configuration tool|配置工具]],附加组件配置 -> 经典界面。
  
If you are using [[Special:myLanguage/Configtool|fcitx-configtool]] newer than 0.4.5 or [[Special:myLanguage/Kcm|kcm-fcitx]] newer 0.4.1, you can directly configure those from the first level tab.
+
如果您使用的 [[Special:myLanguage/Configtool|Gtk 配置工具]] 新于 0.4.5,或者 [[Special:myLanguage/Kcm|Kcm]] 新于 0.4.1,您可以直接在顶层标签配置界面。
  
== Possible issue for GNOME 3.6 ==
+
== GNOME 3.6 可能的问题 ==
  
 
[[Note for GNOME Later than 3.6]]
 
[[Note for GNOME Later than 3.6]]
  
== [[Special:MyLanguage/ClassicUI|Classic UI]] is not transparent ==
+
== [[Special:MyLanguage/ClassicUI|经典界面]]不透明 ==
  
* This problem might NOT exist any more since 4.2.6 with a different approach for detect composite manager.
+
* 这个问题已经通过用不同的方式检测混成管理器而不在 4.2.6 之后的版本中存在了。 请先重启 Fcitx,如果这时没问题了,那么可能是你的窗口管理器的Bug。Gnome-Shell,xcompmgr 已知存在这样的Bug。你可以尝试延迟启动来绕过这个问题。
* Restart Fcitx first, if it's ok then, it might be a bug in your Window manager. Gnome-Shell, xcompmgr is known to have this bug. You can try to set the delay start to walkaround this problem.
+
* 如果重启Fcitx没有解决这个问题,请检查你的窗口管理器是否支持混成,以及是否启用了混成。
* If restart Fcitx doesn't solve this problem, you should check whether your window manager supports composite or it's enabled or not.
 
 
=== Kwin ===
 
=== Kwin ===
  
Enable desktop effects.
+
启用桌面特效。
 +
 
 
=== Metacity before GNOME3 ===
 
=== Metacity before GNOME3 ===
  
Line 92: Line 129:
 
=== Xfce ===
 
=== Xfce ===
  
Xfwm support composite, but need to be enabled by hand.
+
支持混成,但需要手动启用。
 
=== Compiz ===
 
=== Compiz ===
  
0.9 series compiz can disable composite. You can use ccsm to configure it.
+
0.9 系列可以禁用混成,你可以用ccsm来配置。
=== Other window manager ===
+
=== 其他窗口管理器 ===
  
You can use xcompmgr, cairo-compmgr as composite manager for them.
+
你可以用 xcompmgr, cairo-compmgr 来作为混成管理器。
  
 
== Minecraft ==
 
== Minecraft ==
  
Original Minecraft under linux doesn't support input method, what make it worse is, XIM will conflict with its key event processing, one way to work around is, set a wrong environment variable on purpose for minecraft, then start up it. You can use following script to do that
+
原版 Minecraft 在 Linux 下不支持输入,更糟的是,XIM 还和它的按键事件处理冲突,一个绕过的办法是,故意设置一个错误的环境变量然后启动它。你可以使用下面的脚本:
  
 
<pre>#!/bin/sh
 
<pre>#!/bin/sh
Line 110: Line 147:
 
java -Xmx1024M -Xms512M -cp minecraft.jar net.minecraft.LauncherFrame</pre>
 
java -Xmx1024M -Xms512M -cp minecraft.jar net.minecraft.LauncherFrame</pre>
  
This way can be also used, if you don't want fcitx to work on some application which is using XIM.
+
这个方法也可以不想在一些 XIM 的程序下面用 fcitx 的时候使用。
  
There is a mod can be used to support input under Linux, called [http://forum.minecraftuser.jp/viewtopic.php?t=6279 NihongoMOD], 1.2.2 with minecraft 1.5.2 can work with Fcitx without upper hack.
+
有一个名为 [http://forum.minecraftuser.jp/viewtopic.php?t=6279 NihongoMOD] 的 mod 可以在 Linux 下支持输入,1.2.2 minecraft 1.5.2 测试和 Fcitx 不需要 hack 就可以输入。
  
== Root application under normal user X ==
+
== 在一般用户的 X 下 运行 Root 权限的程序 ==
Root application under X normal user session is always broken (in general, not specific to fcitx), due to the fact that dbus is a user session only process. The only way to type in root application with normal fcitx is to use XIM, set GTK_IM_MODULE=xim and QT_IM_MODULE=xim before you start your application.
+
Root 运行的程序在一般用户的 X 会话下总是有问题的(一般意义上,并不只针对 fcitx),这是因为 dbus 是一个仅限用户会话的进程。唯一在root程序中的办法使用 fcitx 的办法是通过 XIM,需要启动程序前设置 GTK_IM_MODULE=xim QT_IM_MODULE=xim。
  
== Cursor Following problem ==
+
= 光标跟随问题 =
There is a common misunderstanding that it's input method's fault that input window could not follow the cursor, which is simply wrong. This is how cursor following works: Application send the position to Input method, then input method move the input window. So if application do not send the position, the position would be wrong. This behavior is controlled by application, but not input method. So if you meet any problem, please ask application to fix it, don't ask input method to do anything. Actually, input method could do nothing with this.
+
一个常见的误解是由于输入法的问题导致无法光标跟随,但这是错的。光标跟随的原理是:程序将光标位置发送给输入法,输入法移动输入框。因此如果程序不发送位置的话,位置就会是错误的。这个行为是由程序控制的,而不是输入法。因此当你遇见任何问题的时候,请要求程序来修复这个问题,不要要求输入法做任何事。实际上,输入法做不了任何额外的事情。
  
Although there is some walkaround for specific problem, bug is still in application, not in input method.
+
尽管可能存在一些能够绕过特定问题的办法,但是bug还是在程序而不是输入法中。
  
* Opera, enable on the spot for [[Special:MyLanguage/XIM|XIM]].
+
* Opera,在 [[Special:MyLanguage/XIM|XIM]] 中启用 on the spot 。
* Firefox, enable preedit.
+
* Firefox,启用预编辑文本。
  
 
[[Category:How-to]]
 
[[Category:How-to]]

Latest revision as of 04:04, 18 April 2023

Other languages:
English • ‎中文(简体)‎

当你抱怨输入法无法正常工作前,请先阅读这个页面。

从 4.2.7 开始,Fcitx 提供了一个 fcitx-diagnose 的命令,它可以检测一些常见的问题并且给出一些建议。

Linux 输入法支持耻辱堂

使用 Ctrl + Space 时无法激活 Fcitx

检查你要输入文字的应用程序。

Wayland

参考 在 Wayland 上使用 fcitx5

这是唯一一个有问题的程序吗?

  • 最可能的原因是某个快捷键占用了 Ctrl Space,请修改另一个快捷键并重试。这常见于编辑器中,因为很多集成开发环境默认使用 Ctrl+Space 作为补全的快捷键。

所有 Gtk 程序都有问题?

  • 请打开一个传统意义上的Gtk程序(所谓传统,就是它不应该是Firefox,Libreoffice这种仅仅是是使用Gtk样式作为界面的程序)。Gedit是一个不错的选择。右键点击输入框,将会弹出一个“输入法”菜单,请确认“Fcitx”被选中。
  • 如果菜单中确实有Fcitx,但是还是无法正常工作,请先尝试重新启动Fcitx,如果这次就可以工作了,那么请检查你的DBus设置,或者延长Fcitx的启动时间。如果你使用自定义的启动脚本,你可以参考配置 (其他)
  • 如果Fcitx没有默认选中,那么请先尝试选中它,并且立刻试试可否输入。如果不行,请参见上面一条。为了永久性的修复这个问题(默认选中 Fcitx ),请阅读安装和配置中的配置部分。
  • 如果没有 Fcitx这项,那么请首先检查你的安装,你所需要的包名包含了fcitx和gtk。如果你是从源码编译的Fcitx,请确认你启用了GTK2,GTK3的输入法模块选项。如果你确认这点的话,请阅读输入法相关的环境变量中的如何更新Gtk的缓存文件。
  • 如果你正在使用 Ubuntu,并且刚刚升级到 12.04,或者发生了什么不好的事情 (由于打包者的疏忽,或者有问题的包管理器无法按照正确顺序更新包,例如 pacman) 你可能会注意到 gtk.immodules 相关的文件并未在升级时正确生成。试试卸载fcitx-frontend-gtk2, fcitx-frontend-gtk3 或者你发行版对应的包,然后重新安装这两个包来触发文件的生成。然后重新检查输入法菜单里面是否有“Fcitx”。

所有Qt程序都有问题?

  • 运行qtconfig (名称可能根据你的发行版有所不同,他可能是 qtconfig-qt4 ),选择第三个标签,确认fcitx是在默认输入法组合框中。如果没有,请检查你的安装。
  • 以上解决方案也可以类似解决XIM的问题,但我们强烈建议你使用输入法模块。参见 输入法相关环境变量

Telegram Desktop

一些发行版的telegram desktop使用了qt6。这时候要确保系统上安装了Qt6的输入法模块。(对于fcitx4而言,在archlinux上要安装fcitx-qt6软件包)

Chromium或者任何基于chromium的浏览器(例如,Microsoft Edge)

对于在 X11 下运行的 Chromium,如果使用没有设置 DBUS_SESSION_BUS_ADDRESS 选项的 startx 启动图形用户界面,可能会遇到 这个问题,它会导致基于 Chromium 的浏览器无法正确使用 dbus。为了解决这种情况,可以这么做:

1. 在 ~/.xinitrc 中自己导出 DBUS_SESSION_BUS_ADDRESS(或者如果您使用的是基于 debian 的系统,则更改为使用 ~/.xsession)。

2. 或者使用像sddm、gdm、lightdm这样的显示管理器替代startx。

对于在 wayland 下原生运行的 Chromium,唯一支持的原生 wayland 输入法协议是text-input-v1,只有 weston 支持。或者,也可以使用 Gtk4 的 im 模块,需要使用以下标志 (---enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4) 来使其启用 Gtk im 模块,但是除非使用 kimpanel + GNOME,否则在光标位置弹出候选词窗口的功能就完全坏掉了。

是 Java、Xterm、wine 还是其他一些非 Gtk/Qt 应用程序?

还有一些非常罕见的情况,在使用嵌入式 linux 或 mini-linux 发行版,而又必须在其中使用 XIM 时,X 服务器可能会丢失一些语言环境(locale)文件。该文件通常需要被放在 /usr/share/X11/locale/ 目录下。

并且当你必须使用 XIM 的时候,请确认你的 locale 不能被设置为 C 或者 POSIX,并且需要被设置为一个可用的 locale (语言无所谓),并且如果你使用的是 glibc,你需要生成对应的locale的文件(locale-gen)。当你使用 im module 的时候,并无这个限制。

是捆绑了自己的 Qt 库的 Qt 应用程序吗?

捆绑的 Qt 库通常使用自己的插件目录,这与系统的 Qt 不同。通常,他们也使用与系统 Qt 不同的 Qt,如果您只是复制系统的 fcitx-qt 文件,这也会使其不兼容。但无论如何,您可以开始检查它是否使用以下环境变量加载您复制的文件。 根据 XIM 应用程序的编写方式,它可能需要找到特定的字体才能使其工作。 在 Archlinux 上,需要 xorg-mkfontscale 来生成正确的字体目录文件。 安装后,您需要重新启动 X Server 才能使其工作。

QT_DEBUG_PLUGINS=1 QT_LOGGING_RULES="*.debug=true"

在尝试解决所有不兼容错误的时候。通常,ubuntu 的 fcitx-frontend-qt5 和 libfcitxqt5-1 是针对特定 qt 版本构建 fcitx-qt5 的良好来源。例如,DraftSight 2017S0 [1] 可能适用于 xenial 的 fcitx-qt5。

Emacs

试试

LC_CTYPE=zh_CN.UTF-8 emacs

别忘记检查你的 locale -a 确实包含了locale,参见 输入法相关环境变量

Emacs 将使用 `-*-*-*-r-normal--<some font size>-*-*-*-*-*-*-*' 作为基础字体 (在 src/xfns.c 中),如果你没有匹配的字体,和输入法相关的代码将不会运行。安装某些字体包可能有帮助(对于需要的字体,xorg-fonts-misc 可能是正确的那个包,但你也可以试试别的 xorg-fonts-* 包。)。

非 Gtk/Qt Wayland 应用程序(Alacritty、kitty 等)

有可能您使用的软件根本不支持输入法,因为它们需要有相关的代码来实现。即使这些软件有相关代码实现,合成器(compositer)也有很大可能不支持输入法。只有 GNOME Shell 和 KWin 具有完整的 text-input-v3 支持。截至 2022/05/07,sway 仍然没有完整的zwp_input_method_v2 支持来支持输入法界面(input surface)。对于 KWin,需要 Plasma 5.24+ 和 Fcitx 5.0.14+,并让 KWin 启动 Fcitx 5。并且需要用户转到虚拟键盘 KCM 并在 KCM 中选择 Fcitx 5。

在 wayland 下使用 Fcitx 5 时选词窗口闪烁

这主要是由于wayland输入法整体状态不佳。现有的 wayland 输入法协议并没有得到 compositor 的广泛支持。尽管 fcitx 5 支持这些协议,但应用程序和合成器的糟糕支持使它们无法使用。更不用说协议中的某些设计缺陷了。

为了使输入法可以与“当前”可用且广泛采用的技术一起使用,Fcitx 5 实现了一种称为“客户端输入面板”的机制,基本逻辑是要求客户端应用程序绘制输入窗口界面。这是通过 gtk/Qt 的 dbus 和 IM 模块来完成的。该实现需要使用底层 wayland 协议 xdg_popup 来显示窗口。不幸的是,只有新版本的 xdg_popup 协议支持“移动”可见的弹出窗口,而这部分在 Gtk3 和 Qt5 中并“没有”实现。更糟糕的是,Gtk3 和 Qt5 都将停止开发了(end of life, 缩写EOL),这意味着在 Gtk3/Qt5 中将不可能获得这种新的协议支持。问题是输入法可能需要在调整大小和移动非常频繁的窗口上显示。为了缓解这个问题,Fcitx 5 IM 模块实现了一个 hack,当我们需要移动窗口时,它会先隐藏窗口,然后再显示窗口。不幸的是,这会导致一定程度的闪烁。这种hack可能会导致在某些硬件和合成器组合中看起来非常糟糕。

有一些可能的解决方法。

1、在GNOME shell下使用kimpanel,使候选窗口以完全不同的机制呈现,不会出现闪烁。

2.在KWin下禁用淡入淡出效果。KWin 似乎比某些合成器更能容忍这种闪烁。

Firefox 中的 Google Docs 有问题

可以暂时关掉预编辑文本,默认快捷键为Ctrl+Alt+P。

无法在 Flash 中使用 Fcitx

请阅读 Linux输入法支持耻辱堂,并使用输入法模块。

更新至新于 4.2.4 的版本之后,无法输入英文

请确认你将“键盘”加入了输入法列表。你可以使用配置工具来修改和查看。

并且你可能希望将“键盘”移至第一项。

非预期的键盘布局变化

配置工具来为特定的输入法绑定特定的键盘布局。

xmodmap 的设置被覆盖

Fcitx 现在可以控制键盘布局,并且在键盘布局切换时,xmodmap的设置将被覆盖。因此 fcitx-xkb 提供了一个选项来指定xmodmap脚本的位置,并且可以让fcitx来在键盘布局变化时加载这个配置。直接禁用 fcitx-xkb 也是一种选择,或者如果您的需求很简单,例如只是想交换 Caps Lock 和 Esc 的位置,部分选项可以由xkb选项来提供,您可以通过您桌面的键盘配置工具来设置这些选项 (Gnome 和 KDE 都支持这类配置)。

选项具体的细节解释如下,xmodmap是一个非常底层的工具,并不了解键盘布局的设置,对X11来说,键盘布局是建立在一组预设文件上,当预设文件加载时,所有通过xmodmap加载的配置都将被覆盖,这并不是只针对fcitx而言如此,所有进行键盘布局设置的工具都是如此。Xkb 选项是一组可以按照预定义设置来修改键盘布局的选项,涵盖了绝大多数一般人想用xmodmap进行的设置,例如死键的位置,交换 Caps Lock 和 Esc 等等。除非您有特殊需求,推荐使用 xkb 布局和 xkb 选项。

自 4.2.7 起,如果 ~/.Xmodmap 存在,Fcitx 将会尝试自动加载。

配置用户界面,字体,纵向列表

使用配置工具,附加组件配置 -> 经典界面。

如果您使用的 Gtk 配置工具 新于 0.4.5,或者 Kcm 新于 0.4.1,您可以直接在顶层标签配置界面。

GNOME 3.6 可能的问题

Note for GNOME Later than 3.6

经典界面不透明

  • 这个问题已经通过用不同的方式检测混成管理器而不在 4.2.6 之后的版本中存在了。 请先重启 Fcitx,如果这时没问题了,那么可能是你的窗口管理器的Bug。Gnome-Shell,xcompmgr 已知存在这样的Bug。你可以尝试延迟启动来绕过这个问题。
  • 如果重启Fcitx没有解决这个问题,请检查你的窗口管理器是否支持混成,以及是否启用了混成。

Kwin

启用桌面特效。

Metacity before GNOME3

gconftool-2 -s --type bool /apps/metacity/general/compositing_manager true

Xfce

支持混成,但需要手动启用。

Compiz

0.9 系列可以禁用混成,你可以用ccsm来配置。

其他窗口管理器

你可以用 xcompmgr, cairo-compmgr 来作为混成管理器。

Minecraft

原版 Minecraft 在 Linux 下不支持输入,更糟的是,XIM 还和它的按键事件处理冲突,一个绕过的办法是,故意设置一个错误的环境变量然后启动它。你可以使用下面的脚本:

#!/bin/sh
# set a wrong one
export XMODIFIERS="@im=null"
# start minecraft, this might change depends on you're mod, but simply its what you ARE using to start minecraft.
java -Xmx1024M -Xms512M -cp minecraft.jar net.minecraft.LauncherFrame

这个方法也可以不想在一些 XIM 的程序下面用 fcitx 的时候使用。

有一个名为 NihongoMOD 的 mod 可以在 Linux 下支持输入,1.2.2 和 minecraft 1.5.2 测试和 Fcitx 不需要 hack 就可以输入。

在一般用户的 X 下 运行 Root 权限的程序

以 Root 运行的程序在一般用户的 X 会话下总是有问题的(一般意义上,并不只针对 fcitx),这是因为 dbus 是一个仅限用户会话的进程。唯一在root程序中的办法使用 fcitx 的办法是通过 XIM,需要启动程序前设置 GTK_IM_MODULE=xim 和 QT_IM_MODULE=xim。

光标跟随问题

一个常见的误解是由于输入法的问题导致无法光标跟随,但这是错的。光标跟随的原理是:程序将光标位置发送给输入法,输入法移动输入框。因此如果程序不发送位置的话,位置就会是错误的。这个行为是由程序控制的,而不是输入法。因此当你遇见任何问题的时候,请要求程序来修复这个问题,不要要求输入法做任何事。实际上,输入法做不了任何额外的事情。

尽管可能存在一些能够绕过特定问题的办法,但是bug还是在程序而不是输入法中。

  • Opera,在 XIM 中启用 on the spot 。
  • Firefox,启用预编辑文本。