Fcitx (한국어)
Fcitx는 Linux에서의 환경 독립적인 언어 입력 지원을 목표로 하는 입력기 프레임워크이다. non-CJK 언어를 포함하는 다양한 언어와 입력기 기능을 지원한다.
설치
fcitx 패키지를 설치한다.
IM(Input Method) 엔진
Fcitx는 기본적으로 중국어의 Pinyin과 Wubi 입력을 지원한다. 그 외에도 입력하기를 원하는 언어에 따라 다음 IM 엔진이 제공되고 있다:
중국어
- fcitx-baidupinyinAUR, Baidu Pinyin을 Fcitx 버전.
- fcitx-chewing, 번체 중국어를 주음부호로 입력할 수 있는 libchewing 기반의 IM.
- fcitx-cloudpinyin는 입력 후보를 인터넷에서 불러와 사용한다. 선택된 결과들은 로컬 사전에 등록되어 사용할 수 있게 된다. fcitx-rime를 제외한 모든 fcitx Pinyin 입력에 사용할 수 있다.
- fcitx-googlepinyin, Googlepinyin을 Fcitx 버전.
- fcitx-libpinyin, libpinyin 기반의 Pinyin 입력. fcitx-sunpinyin보다 나은 알고리즘을 사용한다고 알려져 있음.
- fcitx-rime, Rime IME 프로젝트의 스킴에 기반.
- fcitx-sogoupinyinAUR, Sogou input method supporting Jianpin, fuzzy sound, cloud input, English input, and mixed skin.
- fcitx-sunpinyin, based on sunpinyin. It strikes a good balance between speed and accuracy.
일본어
- fcitx-anthy, 대중적인 일본어 입력기. 더 이상 적극적으로 개발되고 있지 않음.
- fcitx-mozc, Google Japanese Input의 오픈 소스 버전인 Mozc 기반.
- fcitx-kkc, libkkc 기반의 Japanese Kana Kanji 입력 엔진.
- fcitx-skk, libskk 기반의 Japanese Kana Kanji 입력 엔진.
기타 언어
- fcitx-hangul, libhangul 기반의 한국어(한글) 입력기.
- fcitx-m17n, M17n에서 제공되는 다른 언어의 입력기.
- fcitx-sayura, 싱할라어 입력기.
- fcitx-unikey, 베트남어 입력기.
IM(Input Method) 모듈
Qt 기반 프로그램과의 더 나은 상성을 위해, 별도로 fcitx-qt4AUR와 fcitx-qt5를 필요에 따라 설치할 수 있다. fcitx-im을 이용하면 fcitx와 fcitx-qt5 패키지를 동시에 설치할 수 있다. 이 모듈이 설치되지 않은 경우에도 대다수의 어플레케이션에서 입력기가 동작할 것이라 예상되지만, 입력기 사용에 있어서 지연 현상이나, 올바르지 않은 위치에 미리보기 창이 표시되는 등 오류가 발생할 수 있다.
하기의 어플리케이션은 GTK/Qt의 입력 모듈을 이용하지 않는다:
- Tk, motif 혹은 xlib을 이용하는 어플리케이션.
- Emacs, Opera, OpenOffice, LibreOffice, Skype, Wine, Java, Xterm, urxvt, WPS
Others
- fcitx-ui-light, light UI for fcitx.
- fcitx-table-extra adds Cangjie, Zhengma, Boshiamy support.
- fcitx-table-other, tables for Latex, Emoji and others.
- #GUI configuration tools
Others packages (including git version) are also available in the AUR. All components of fcitx will requires fcitx to restart after install.
Usage
Desktop Environment Autostart
If you are using any XDG compatible desktop environment such as KDE, GNOME, Xfce, LXDE, after you re-login, the autostart should work out of box. If not run the fcitx executable. To see if fcitx is working correctly, open an application and press Ctrl+Space
(the default shortcut for switching the input method) to invoke fcitx and input some words.
If fcitx failed to start with your desktop automatically or if you want to change the parameters to start fcitx, configure autostart or edit the fcitx-autostart.desktop
file in your ~/.config/autostart/
directory (copy it from /etc/xdg/autostart/
if it does not exist yet).
When other input methods with xim support are also running, fcitx may fail to start due to an xim error. Ensure that no other input methods are running before you start fcitx.
Also please set the following environment variables to prefer IM modules for GTK/Qt applications.
IM 모듈을 위한 환경변수 설정
Define the environment variables to register the input method modules. Without these variables, applications may fallback to XIM protocol, except for qt5 applications which do not have XIM support and require an IM module in place.
As a general recommendation, define the following environment variables in ~/.pam_environment
.
This file will be read by the pam_env module for all logins, including both X11 and Wayland sessions.
See pam_env(8) and pam_env.conf(5) for details of its syntax and usage.
~/.pam_environment
GTK_IM_MODULE DEFAULT=fcitx QT_IM_MODULE DEFAULT=fcitx XMODIFIERS DEFAULT=\@im=fcitx
In case you do not want to define the above variables in ~/.pam_environment
for all your login sessions, please consider adding them to one of the start files for your X11 session.
Most Display manager such as GDM and SDDM will source ~/.xprofile
for X11 sessions (but not for Wayland sessions).
The syntax of ~/.xprofile
may depend on the specific Display manager and your login shell, consider the following example and modify it to suit your shell syntax:
~/.xprofile
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx
For SLiM or startx users, they do NOT source ~/.xprofile
, but instead run ~/.xinitrc
to start your X11 session. Add the export lines to your ~/.xinitrc
before the exec YOUR_WM
line:
~/.xinitrc
export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx ... exec YOUR_WM
XDM sources neither ~/.xprofile
nor ~/.xinitrc
, but rather by default will source ~/.xsession
. The syntax is much the same as for ~/.xinitrc
, except the final line should just be YOUR_WM
instead of exec YOUR_WM
.
Re-login or reboot to make these environment changes effective.
If fcitx process does not start automatically, you might need to add fcitx &
in your ~/.xinitrc
.
If fcitx &
does not start, type sleep 2
after it
- Avoid
.bashrc
for this, see GregsWiki:DotFiles. - If all Qt apps have problem with fcitx, run qtconfig (qtconfig-qt4), and go to the third tab, make sure fcitx is in the Default Input Method combo-box.
XIM
Optionally, you can use the X Input Method (XIM) in your GTK and/or Qt programs without installing the above modules in which case you need to change the corresponding lines above as following:
GTK_IM_MODULE DEFAULT=xim QT_IM_MODULE DEFAULT=xim
If you change it in ~/.xprofile
or ~/.xinitrc
, add export
.
/usr/lib/gtk-2.0/2.10.0/immodules.cache
as immodule cache file since 2.24.20. If you have set GTM_IM_MODULE_FILE
environment variable or do not use install script of official packages to update the cache, please change/clear the environment variable and use /usr/bin/gtk-query-immodules-2.0 --update-cache
to update immodule cache.Configuration
GUI configuration tools
fcitx provides a KDE configuration module (kcm-fcitx) and a GTK3 configuration tool (fcitx-configtool).
Run fcitx-config-gtk3 after fcitx-configtool is installed. Unset Only Show Current Language if you want to enable an input method for a different language.
Stop fcitx manually before changing configuration, or the change may be lost.
In order to enable spell checking, press Ctrl+Alt+h
when fcitx is on an input method provided by fcitx-keyboard.
Input methods configuration
You can add/remove input methods in the GUI tools. Note that the search is case sensitive.
The first set input method is the inactive state, while all the rest will be active states. You generally want the inactive state to be one of the Keyboard options (e.g. "Keyboard - English (US)"). These options just input based on the keyboard layout in the name.
Under Global Config, the Trigger Input Method shortcut will only switch between the inactive and last used active state. The Scroll between Input Methods will by default only scroll between different active states, but can also be set to include the inactive state in the advanced settings. Furthermore, the Scroll between Input Methods shortcut has to be pressed in order, e.g. ALT_SHIFT
will only activate if alt
is pressed before shift
.
Configuration settings for IME's can be found by by setting the keyboard to the desired IME and right-clicking the tray icon.
Change default UI
Fcitx support kimpanel protocol to provide better desktop integration.
- Gnome-Shell: You can install kimpanel from extensions.gnome.org or gnome-shell-extension-kimpanel-gitAUR, which provides a similar user experience as ibus-gjs.
- KDE: kimtoy could use skin from Sogou and fcitx.
Extend pinyin dictionary
Pinyin dictionary is located at ~/.config/fcitx/pinyin
. File pybase.mb
is for single characters and file pyphrase.mb
defines pinyin phrases. To extend them, put your file into /usr/share/fcitx/pinyin
and restart fcitx.
Skins
You can download skins and extract them to one of the following directories, you can create the directory if it does not exist:
/usr/share/fcitx/skin #Global settings ~/.config/fcitx/skin #User settings
Cloud Pinyin configuration
After installing the fcitx-cloudpinyin input method, restart fcitx. If you could not find it in configuration GUI, enable advanced settings. The cloud query result will be added to current input method dictionary automatically.
If your network prevents you from accessing Google, change Cloud Pinyin source to Baidu.
The query result from cloud will list as secondary candidate by default and it is configurable. If the result already exists, only one item is shown.
Tips and tricks
Shortcut keys
Some commonly used default shortcut keys:
- Ctrl + Space - activates the input method
- Left Shift - temporarily switches to English
- Ctrl + Shift - switch between input methods
- -/= - page forward/backward
- Shift + Space - Full-width, half-width switching
Vim
Fcitx를 Vim과 함께 자주 사용한다면, vim-fcitxAUR 플러그인을 설치하거나, 다음 코드를 ~/.vimrc
에 추가함으로써, 입력모드를 벗어날 때 Fcitx를 자동으로 닫도록 설정하는 것을 고려할 수 있다:
"##### auto fcitx ########### let g:input_toggle = 1 function! Fcitx2en() let s:input_status = system("fcitx-remote") if s:input_status == 2 let g:input_toggle = 1 let l:a = system("fcitx-remote -c") endif endfunction function! Fcitx2zh() let s:input_status = system("fcitx-remote") if s:input_status != 2 && g:input_toggle == 1 let l:a = system("fcitx-remote -o") let g:input_toggle = 0 endif endfunction set ttimeoutlen=150 "Exit insert mode autocmd InsertLeave * call Fcitx2en() "Enter insert mode autocmd InsertEnter * call Fcitx2zh() "##### auto fcitx end ######
클립보드
Fcitx는 클립보드를 포함하며, 클립보드를 표시하는 단축키는 Ctrl + ;
이다.
Special symbols
Create ~/.config/fcitx/data/pySym.mb
, the content of the file is as follows:
#The first line with "#" is a comment #Format: coding symbol #Code can only be lowercase letters, after pinyin analysis, the longest is 10 (such as py is 2, pinyin is also 2) #Mathematics symbols sxfh + sxfh - sxfh < sxfh = sxfh > sxfh ± sxfh × sxfh ÷ sxfh ∈ sxfh ∏ sxfh ∑ sxfh ∕ sxfh √ sxfh ∝
Enter a code directly to match the corresponding special symbol.
Clipboard Access
You can use fcitx to input text in you clipboard (as well as a short clipboard history and primary selection). The default trigger key is Ctrl-;
. You can change the trigger key as well as other options in the Clipboard addon configure page.
fcitx-remote
fcitx-remote is a commandline tool that can be used to control the fcitx state. It is installed with the fcitx package.
One option worth elaborating upon here is fcitx-remote -s imname
, which switches to the input method identified by imname
. The correct imname
for an in use input method can be found by executing fcitx-diagnose, and looking under the "## Input Methods:" section.
Input special character
See Fcitx5#Input special character, this content also applies to Fcitx.
Troubleshooting
Disable or change Extra key for trigger input method [sic]
This setting is under the Global Config tab and defaults to SHIFT Both, meaning that pressing either shift key will immediately change input methods. Although it should only apply when a shift key is pressed individually, it tends to randomly interrupt typing capital letters, selecting text with the keyboard, etc. while using standard keyboard input.
In addition, this setting may revert to default without warning at any time. To ensure fcitx's config cannot be modified, you must make fcitx's config file immutable: chattr +i ~/.config/fcitx/config
(as the root user).
Diagnose the problem
If you have problems using fcitx, eg. Ctrl+Space fail to work in all applications, then the first thing you should try is to diagnose using fcitx-diagnose
.
The output of fcitx-diagnose
should contain the clue to most common problems.
Providing the output of it will also help when you consult other people(eg. in IRC or forums).
Emacs
If your LC_CTYPE
is English, you may not be able to use input method in emacs due to an old emacs bug. You can set your LC_CTYPE
to something else such as zh_CN.UTF-8
before emacs starts to get rid of this problem.
Note that the corresponding locale should be generated on your your system.
The default fontset 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. According to FAQ and Fonts, it is likely that xorg-fonts-misc-otbAUR is the one that should be installed since xorg-fonts-misc no longer provides the required fontset.
Emacs Daemon
If you are using emacs daemon/client mode, LC_CTYPE
should be set when starting the daemon. For example, by running emacs daemon with LC_CTYPE=zh_CN.UTF-8 emacs --daemon
.
If starting emacs daemon from systemd, set Environment="LC_CTYPE=zh_CN.UTF-8" "XMODIFIERS=@im=fcitx"
in the unit file.
(XMODIFIERS
may need to be set explicitly here as systemd does not load .xprofile
. Check the initial-environment
variable in emacs to verify both variables are set correctly.)
Ctrl+Space fail to work in GTK programs
This problem sometimes happens especially when the locale is set as English. Please make sure your GTK_IM_MODULE
is set correctly.
See also FAQ
If you have set the *_IM_MODULE
environment variables to fcitx but cannot activate fcitx, please check if you have installed the corresponding input method modules.
Some programs can only use xim, if you are using these programs, please make sure your XMODIFIERS
is set properly and be aware of the problems you may have. These programs include all programs that are not using GTK or Qt (e.g. programs that use tk, motif, or xlib directly), emacs, opera, openoffice, libreoffice, skype.
If you cannot enable fcitx in gnome-terminal under Gnome and the above way does not work, try:
$ gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/IMModule':<'fcitx'>}"
Buildin Chinese Pinyin Default NOT ACTIVE
If your locale is en_US.UTF-8
, fcitx did NOT enable the buildin Chinese Pinyin input method by default. There is only fcitx-keyboard-us
input method enabled. You can get a notice by fcitx-diagnose
command like this:
## Input Methods: 1. Found 1 enabled input methods: fcitx-keyboard-us 2. Default input methods: **You only have one input method enabled, please add a keyboard input method as the first one and your main input method as the second one.**
Then you should add Pinyin
or Shuangpin
input method to actived input methods by the GUI configure tool.
fcitx and KDE
For some reasons, KDE does not handle keyboard layouts properly. For example, if you switch from US (English) to LT (Lithuanian), all numbers on the keyboard should produce Lithuanian letters, but they still produce numbers as the output. This can be fixed by these steps:
- Turn off fcitx if it is running in the background.
- Disable stuff related to KDE:
- At System settings > Input devices > Layouts (tab) make sure that Configure layouts is unchecked.
- At System settings > Input devices > Advanced (tab) make sure that Configure keyboard options is unchecked.
- Start fcitx to start it. You can close the terminal - fcitx will still be running in the background.
- Set up your needed layouts (right click on the system tray icon, then Configure).
- Right click on the system tray icon, then Exit
At this point you should have working layouts, native KDE layouts switch icon should appear and you can switch them by mouse scroll or click on it.
Input method switched to English unintentionally
For instance, in XMind, when the user presses Enter
to create a node, input method is always switched to English, and has to be switched back to Chinese manually.
To fix this issue, open the fcitx GUI configuration tool (provided by fcitx-configtool), switch to tab Global Config, in dropdown menu Share State Among Window, select PerProgram or All.
xmodmap settings being overwritten
fcitx controls keyboard layout, so your xmodmap settings will be overwritten.
Since 4.2.7, Fcitx will try to load ~/.Xmodmap
if it exists.
For more details on how you can save your xmodmap changes see FAQ