LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: linuxcpp

想问一下fcitx能不能不依赖LC_CTYPE来工作?

[复制链接]
发表于 2006-8-23 21:48:08 | 显示全部楼层
英文的没有问题 我一直在用
我的locale全都是 en_US.utf8  除了前面的设置外
/etc/gtk-2.0/*/imme* 文件 在 zh:ko:jp 前面加上 en 就可以在程序中调出fcitx了
至于界面乱码的问题
可以 env LC_ALL=zh_CN.utf8 来启动fctix 就没有乱码了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-27 13:14:55 | 显示全部楼层
自己新编译了fcitx3.3
还是不行
To:fakeid
你要注意你的情况是不是跟我的完全一样
我并没有说fcitx在en_US.utf8的locale下不能工作
而是我用的debian在用gdm登陆时后会有问题
我再描述一下我的问题:
我装了好fcitx后,用im-switch来管理用户选择的输入法
比如说可以
$im-switch -c
来列出所以现在用户可用的输入法
  1. $ im-switch -c
  2. There are 8 candidates which provide IM for /home/laris/.xinput.d/zh_CN:
  3.   Selection    Alternative
  4.   -----------------------------------------------
  5.       1        default
  6. *     2        fcitx
  7.       3        fcitx~
  8.       4        fcitx.orig
  9.       5        none
  10. +    6        scim
  11.       7        scim-immodule
  12.       8        th-xim
  13. System wide default for zh_CN (or all_ALL) locale is marked with [+].
  14. Press enter to keep the current selection[*], or type selection number:
复制代码
而现在我的locale是zh_CN.utf8,所以最底下提示的是zh_CN
注意这个locale是在gdm登陆时选择的!
如果我在gdm登陆时选择en_US.utf8的话
当然上面im-switch -c 提示就应该是en_US了

但是问题就是在这里
我在gdm再登陆时选择zh_CN.utf8的locale(按理说先择任何zh_CN*的locale都可的)
fcitx是可以正常启动和使用的
但是
如果我选择en_US.utf8时
在gnome的splash刚刚出现的时候也就是没有完全显示桌面的时候
我能看到fcitx那个一带有小企鹅的工具条
可是等桌面完全显示了
那个工具条就没有了
输入法也不能激活

于是就像我9楼写的那种状况

然而如果我用scim
无论在哪种locale下,只要我用im-switch选择了scim
它就能用
真的搞不懂为什么

如果你用debian sid的话希望能测试一下是不是都是这样

PS:我编译了fcitx 3.3
但是按debian的编译方式有问题
希望看一下我发的帖子
回复 支持 反对

使用道具 举报

发表于 2006-8-30 08:29:07 | 显示全部楼层
请在en_US.utf8模式下,在X下的终端中运行fcitx,看有什么信息
回复 支持 反对

使用道具 举报

发表于 2006-8-31 01:00:44 | 显示全部楼层
  1. $ fcitx
  2. Start FCITX error. Another XIM daemon named fcitx is running?
复制代码
我把fcitx那个进程kill -9 ,然后再手动启动
然后提示条是有了,但是不能输入,按Ctrl+space没有反映
----------------------------------------------------------------
也就是说fcitx已经正常启动了
但是不知道为什么不能用
我怀疑跟fcitx启动后环境变量被什么又给重新设置了而不能用
fcitx3.3编译了也不行
我在debian版转过这篇帖子相关的内容
不过好像没人回应
回复 支持 反对

使用道具 举报

发表于 2006-9-10 10:44:13 | 显示全部楼层
再顶一下再顶一下
回复 支持 反对

使用道具 举报

发表于 2006-9-10 23:34:38 | 显示全部楼层
应该是XMODIFIERS什么的被什么地方改了。在同一个X的终端下先运行fcitx。然后马上运行kwrite/gedit看看能不能用
回复 支持 反对

使用道具 举报

发表于 2006-9-13 07:26:37 | 显示全部楼层
Yeah!
What you said is wright.
Today after i start linux ,i firstly open one qterm and the fcitx can work correctly.
But all gtk's program cannot use fcitx (e.g. firefox /gedit/...)
And i test for freemind (one Java program),and it can work with fcitx.

In one word. I donnot know Why fcitx can work with NON-gtk's program .

Please help me !
Thanks!

My locales:
  1. $ locale
  2. LANG=en_US.UTF-8
  3. LC_CTYPE="en_US.UTF-8"
  4. LC_NUMERIC="en_US.UTF-8"
  5. LC_TIME="en_US.UTF-8"
  6. LC_COLLATE="en_US.UTF-8"
  7. LC_MONETARY="en_US.UTF-8"
  8. LC_MESSAGES="en_US.UTF-8"
  9. LC_PAPER="en_US.UTF-8"
  10. LC_NAME="en_US.UTF-8"
  11. LC_ADDRESS="en_US.UTF-8"
  12. LC_TELEPHONE="en_US.UTF-8"
  13. LC_MEASUREMENT="en_US.UTF-8"
  14. LC_IDENTIFICATION="en_US.UTF-8"
  15. LC_ALL=
复制代码
$ ps aux|grep fcitx

laris     4061  0.0  0.0      0     0 ?        Z    14:55   0:00 [fcitx] <defunct>
laris     4070  0.4  2.4  45480 12672 ?        S    14:55   0:09 /usr/bin/fcitx
laris     4414  0.0  0.1   3620   692 ttyp1    S+   15:28   0:00 grep fcitx
回复 支持 反对

使用道具 举报

发表于 2006-9-15 23:34:27 | 显示全部楼层
顶上来让YuKing看
嘿嘿

sid里有 3.3了
升级了一下
发现还是那样
用gdm选zh_CN* 的locale都没有问题
但是en_us.utf8的locale

只能在qt的程序里和java的程序里用
gtk的都不行
回复 支持 反对

使用道具 举报

发表于 2006-9-16 12:35:55 | 显示全部楼层
如果是en_US.utf8,gtk默认的输入模块不是xim。在GTK程序的编辑框按右键,把输入法改为xim即可。或是在.bash_profile里增加
export GTK_IM_MODULE=xim
不能写成fcitx
回复 支持 反对

使用道具 举报

发表于 2006-9-16 21:29:31 | 显示全部楼层
您的说法我觉得有道理,但不完全能解决问题
我对fcitx和scim都测试了一下
这些都是在gdm登陆时选en_US.UTF-8

一。用im-switch -c选择fcitx输入法如下:

  1. $ im-switch -c

  2. There are 6 candidates which provide IM for /home/laris/.xinput.d/en_US:

  3.   Selection    Alternative
  4.   -----------------------------------------------
  5. +    1        default
  6. *     2        fcitx
  7.       3        none
  8.       4        scim
  9.       5        scim-immodule
  10.       6        th-xim
  11. System wide default for en_US (or all_ALL) locale is marked with [+].
  12. Press enter to keep the current selection[*], or type selection number: 2
复制代码


1。
然后不在如~/.bash_profile 或者~/.bashrc里设置任何有关输入法的环境变量
重新登陆后环境变量如下结果:


  1. $ export|grep XIM
  2. declare -x GTK_IM_MODULE="XIM"
  3. declare -x QT_IM_MODULE="XIM"

  4. $ export|grep XMODIFIERS
  5. declare -x XMODIFIERS="@im=fcitx"
复制代码


2。
把设置放到~/.bashrc里,放到~/.bash_profile里根本不读取
加入如下:
export GTK_IM_MODULE=xim
重新登陆环境变量如下:

  1. $ export|grep xim
  2. declare -x GTK_IM_MODULE="xim"
  3. $ export|grep XIM
  4. declare -x QT_IM_MODULE="XIM"

  5. $ export|grep XMODIFIERS
  6. declare -x XMODIFIERS="@im=fcitx"
复制代码


3。说明
这个时候gtk程序根本不能激活输入法或者根本没有输入法,环境变量如上,我根据您说的看到在能输入文本的编辑器或者Xterm里点右键的确有一个Input Methods。而且里面默认的是“Default",而不是X Input Method (这个也就是XIM吧),原因我也不知道为什么。进一步讨论看完下面scim的测试再说。
二。用im-switch -c选择fcitx输入法如下:

  1. $ im-switch -c

  2. There are 6 candidates which provide IM for /home/laris/.xinput.d/en_US:

  3.   Selection    Alternative
  4.   -----------------------------------------------
  5. +    1        default
  6. *     2        fcitx
  7.       3        none
  8.       4        scim
  9.       5        scim-immodule
  10.       6        th-xim
  11. System wide default for en_US (or all_ALL) locale is marked with [+].
  12. Press enter to keep the current selection[*], or type selection number: 4
复制代码


1。不在如~/.bash_profile 或者~/.bashrc里设置任何有关输入法的环境变量
重新登陆后环境变量如下结果:


  1. $ export |grep XMODI
  2. declare -x XMODIFIERS="@im=SCIM"
  3. $ export |grep XIM
  4. $ export |grep xim
  5. declare -x GTK_IM_MODULE="xim"
  6. declare -x QT_IM_MODULE="xim"
复制代码


2。但是现在scim能用,而且最重要的是所有的能显示X Input Method的地方那里的的选项都已经变成XIM了!(试了一下手动选择SCIM Input Method也是一样的效果,这一个是装上SCIM就有的)。而fcitx就差这一点。然后我比较了一下/etc/X11/xinit/xinput.d下的两个文件:

  1. [xinput.d]$ more fcitx
  2. XIM=fcitx
  3. XIM_PROGRAM=/usr/bin/fcitx
  4. XIM_ARGS=""
  5. GTK_IM_MODULE=XIM
  6. QT_IM_MODULE=XIM
  7. DEPENDS="fcitx"
  8. ================================================

  9. [xinput.d]$ more scim
  10. #
  11. # Use "X input Method" for all applications
  12. #
  13. # Per Ming's Documentation in SCIM, XIM Input Method is activated
  14. # not only for old X-applications but also for GTK and QT appplication.
  15. #
  16. # If a user wish to use, GTK Input Method, (s)he can right-click input
  17. # area and select "Input Methods" and change from "X input Method" to
  18. # "SCIM Input Method".
  19. #

  20. XIM=SCIM
  21. XIM_PROGRAM=/usr/bin/scim
  22. XIM_ARGS="-d"
  23. GTK_IM_MODULE=xim
  24. QT_IM_MODULE=xim
  25. DEPENDS="scim,scim-anthy|scim-canna|scim-chewing|scim-pinyin|scim-hangle|scim-prime|scim-skk|scim-tables-additional|scim-m17n|scim-uim|scim-tables-ja|scim-tables-ko|scim-tables-zh"
  26. =================================================
  27. [xinput.d]$ more scim-immodule
  28. #
  29. # This configuration file for SCIM is deprecated.
  30. #
  31. # Use "X input Method" for standard X applications
  32. # Use "SCIM immodule" for GTK applications
  33. #
  34. # Using this configuration may improve some usability for GTK applications
  35. # such as the location of word selection window.
  36. #

  37. # You still need these XIM settings for non-GTK programs.
  38. XIM=SCIM
  39. XIM_PROGRAM=/usr/bin/scim
  40. XIM_ARGS="-d"
  41. GTK_IM_MODULE=scim
  42. # Qt immodule is not ready
  43. #QT_IM_MODULE=scim
  44. DEPENDS="scim,scim-gtk2-immodule,scim-anthy|scim-canna|scim-chewing|scim-pinyin|scim-hangle|scim-prime|scim-skk|scim-tables-additional|scim-m17n|scim-uim|scim-tables-ja|scim-tables-ko|scim-tables-zh"


复制代码

看起来三个文件没有什么太多差别啊。换句话说是根本没有差别。

另外/etc/X11/xinit/xinput.d/default里所有设置都为空。

所以断定根本问题是不知道为什么启动输入法后环境变量和设置都正确,但gtk里XIM里的设置的问题。也就是为什么fcitx不能自动自动设定为XIM(或者像scim那样单独设置一个SCIM Input Method),而SCIM却能自动设置成XIM!

在gtk程序选择XIM的菜单里有很多选项,但是有三个是最重要的,一个Default,一个XIM,而如果装了scim的话还会多出一个SCIM Input Method。我不知道跟这个有没有关系,但我觉得这不是主要原因吧。因为qt程序里好像就没有这么多选项,只有一个XIM。


所以,我觉得还是fcitx的问题,在什么地方设置跟debian的gnome不怎么配合,当然我指的是特定情况,但是scim就考虑到了这一点或者说什么地方的设置跟fcitx的原理不一样或者方法不一样,所以才造成现在这种情况。
我不太了解输入法的深层原理,但还是想请YuKing考虑一下研究研究这个到底是怎么回事。或者看一下scim到底是做了什么使这个设置会有问题。
因为还是想用fcitx,所以写了这么多,有什么写的不对的还请明指。

谢谢:)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表