|
在RH9下装了fcitx后一直用的好好的,知道几天前去抓了个Garnome编译安装后把原来的系统搞乱了。fcitx有时能激活,有时不能,很费解。干脆从英文locale开始。
1. 假设英文环境,如果运行locale, 看到应该是:
LANG=en_US.UTF8
LC_CTYPE=en_US.UTF8
LC_NUMERIC="en_US.UTF8"
LC_TIME="en_US.UTF8"
LC_COLLATE="en_US.UTF8"
LC_MONETARY="en_US.UTF8"
LC_MESSAGES=zh_CN.GB2312
LC_PAPER="en_US.UTF8"
LC_NAME="en_US.UTF8"
LC_ADDRESS="en_US.UTF8"
LC_TELEPHONE="en_US.UTF8"
LC_MEASUREMENT="en_US.UTF8"
LC_IDENTIFICATION="en_US.UTF8"
LC_ALL=
2. 在 ~/.bash_profile 加入:
LC_CTYPE="zh_CN.GB2312"
LC_MESSAGES="zh_CN.GB2312"
XMODIFIERS=@im=fcitx
XIM=fcitx
XIM_PROGRAM=fcitx
export XMODIFIERS XIM XIM_PROGRAM LC_CTYPE LC_MESSAGES
fcitx&
退出logout,重新登陆,是不是fcitx已经运行,ctrl-space应该能激活。locale变量:
LANG=en_US.UTF-8
LC_CTYPE=zh_CN.GB2312
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES=zh_CN.GB2312
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
解释:
1. 基本想法是在尽量保留英文环境的情况下,对中文输入的支持。
2. locale基本上由LANG, LC_ALL, LC_CTYPE, LC_MESSAGES等locale环境变量决定。其中LANG, 和 LC_ALL特殊,设其中任一个,会给所有还没有赋值的变量负上相同的值。为了容易理解,我只设基本的值:
2.1 LC_CTYPE, 内码,设了这个值意味着系统有能力处理中文,必须设
2.2 LC_MESSAGES 菜单等里的字符串。原本意味这个不用设的,坛子里有几位大侠提到可以保留英文环境同时有输入法,偶意味可以,结果我的实验结果,这个也必须设。否则就无法激活。照理说没有设这个变量的必要。也许是我的系统环境有问题。
3. 和XIM有关的几个变量,不用解释了吧。fcitx offical的readme里提到要rpm -e fcitx, 是不是考虑 /etc/X11/xinit/xinitrc.d/xinput 这段script的影响?如果你有输入法,如fcitx, xcin, 中文locale,这段script就会给你自动设LC_CTYPE,XIM变量,反正我是不喜欢。所以建议除了chinput之外,rpm -e xcin (check /usr/bin/xcin 是不是存在)
4. fcitx & 放在.bash_profile就能在x session起来的时候运行一次。
5. 只改动home directory下.bash_profile配置文件,很合理。不需改动系统文件。
6。还有更绝的,如果你中文用的极少,上面这段script可以在你需要中文输入的再运行,开一个终端,设LC_CTYPE, LC_MESSAGES, 三个XIM变量,fcitx&, 紧跟着运行应用程序,比如mozilla, vi等,一样可以输入中文,当然,关掉终端就没有了。
说白了,fcitx真是一个安装使用及其方面的软件,感谢作者出色的工作。 |
|