LinuxSir.cn,穿越时空的Linuxsir!

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

fcitx2.1.0简短评测及问题

[复制链接]
发表于 2004-5-22 11:47:25 | 显示全部楼层
hutigers测试得真仔细。我在Red Hat Enterprise Linux AS release 3成功装上了fcitx并做好了rpm包。看起来还不错就没深入测试了。
hutigers兄说的所有问题都是存在的。
另外,我在fcitx的rpm加入了一段脚本。可以检测是否存在IIif服务,如果有,则关闭这一服务。另外,针对redhat修改/etc/X11/xinit/xinitrc.d/xinput 中所有的字串Chinput(chinput)为fcitx,针对Mandrake修改/etc/X11/xinit/XIM和/etc/sysconfig/i18n所有的字串chinput为fcitx 并在这两种发行版中把/etc/profile.d/input.sh(上个版本fcitx带有这个脚本)删除。而在其它发行版内保留这个脚本以保证能自动启动fcitx
不知大家对我这种做法看法如何?
附:两段脚本:
fcitx rpm内部脚本:

  1. %{_bindir}/gtk-query-immodules-2.0 > %{_sysconfdir}/gtk-2.0/gtk.immodules
  2. if [ -f %{_sysconfdir}/redhat-release ] && ! [ -f %{_sysconfdir}/mandrake-release ] ; then
  3.         rm -f %{_sysconfdir}/profile.d/input.sh
  4.         if service IIim status > /dev/null 2>&1 ; then
  5.                 /sbin/service IIim stop >/dev/null 2>&1
  6.                 /sbin/chkconfig --del IIim
  7.                 /usr/sbin/userdel htt 2>/dev/null 2>&1
  8.         fi
  9.         if [ -f %{_sysconfdir}/X11/xinit/xinitrc.d/xinput ] ; then
  10.                 if ! grep -i "fcitx" %{_sysconfdir}/X11/xinit/xinitrc.d/xinput >/dev/null 2>&1 ; then
  11.                         echo "/etc/X11/xinit/xinitrc.d/xinput be saved /etc/X11/xinit/xinitrc.d/xinput.rpmsave"
  12.                         cp -f %{_sysconfdir}/X11/xinit/xinitrc.d/xinput %{_sysconfdir}/X11/xinit/xinitrc.d/xinput.rpmsave
  13.                         sed -e 's/Chinput/fcitx/' \
  14.                             -e 's/chinput/fcitx/' \
  15.                         %{_sysconfdir}/X11/xinit/xinitrc.d/xinput > %{_sysconfdir}/X11/xinit/xinitrc.d/xinput.tmp
  16.                         mv -f %{_sysconfdir}/X11/xinit/xinitrc.d/xinput.tmp %{_sysconfdir}/X11/xinit/xinitrc.d/xinput
  17.                         chmod 755 %{_sysconfdir}/X11/xinit/xinitrc.d/xinput
  18.                        
  19.                 fi
  20.         fi
  21. elif [ -f %{_sysconfdir}/mandrake-release ] ; then
  22.         rm -f %{_sysconfdir}/profile.d/input.sh
  23.         if [ -f %{_sysconfdir}/X11/xinit/XIM ] ; then
  24.                 if ! grep -i "fcitx" %{_sysconfdir}/X11/xinit/XIM >/dev/null 2>&1 ; then
  25.                         echo '/etc/X11/xinit/XIM be saved /etc/X11/xinit/XIM.rpmsave'
  26.                         cp -f %{_sysconfdir}/X11/xinit/XIM %{_sysconfdir}/X11/xinit/XIM.rpmsave
  27.                         sed -e 's/Chinput/fcitx/' \
  28.                             -e 's/chinput/fcitx/' \
  29.                         %{_sysconfdir}/X11/xinit/XIM > %{_sysconfdir}/X11/xinit/XIM.tmp
  30.                         mv -f %{_sysconfdir}/X11/xinit/XIM.tmp %{_sysconfdir}/X11/xinit/XIM
  31.                         chmod 755 %{_sysconfdir}/X11/xinit/XIM
  32.                 fi
  33.         fi
  34. fi
复制代码


脚本:/etc/profile.d/input.sh

  1. INPUT=fcitx
  2. export XMODIFIERS=@im=$INPUT
  3. export XIM=$INPUT
  4. export XIM_PROGRAM=$INPUT
  5. if [ -f $HOME/.kde ] ; then
  6.         if ! [ -f $HOME/.kde/Autostart/$INPUT ] ; then
  7.                 ln -sf /usr/bin/$INPUT $HOME/.kde/Autostart/
  8.         fi
  9. fi
  10. if [ -f $HOME/.gnome2 ] ; then
  11.         if [ -f $HOME/.gnome2/session-manual ] && grep -i "RestartCommand=$INPUT" $HOME/.gnome2/session-manual > /dev/null 2>&1  ; then
  12.                 exit 1
  13.         else
  14.         if [ -f $HOME/.gnome2/session-manual ] && ! grep -i "RestartCommand=$INPUT" $HOME/.gnome2/session-manual > /dev/null 2>&1 ; then
  15.                 mv -f $HOME/.gnome2/session-manual $HOME/.gnome2/session-manual.old
  16.         fi
  17.                 cat > $HOME/.gnome2/session-manual << EOF
  18. [Default]
  19. num_clients=1
  20. 0,RestartStyleHint=3
  21. 0,Priority=50
  22. 0,RestartCommand=$INPUT
  23. EOF
  24. fi
  25. fi
复制代码
发表于 2004-5-22 12:00:51 | 显示全部楼层
把fcitx rpm内部脚本分离成可直接执行的脚本如下:


  1. #!/bin/bash
  2. /usr/bin/gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
  3. if [ -f /etc/redhat-release ] && ! [ -f /etc/mandrake-release ] ; then
  4.         rm -f /etc/profile.d/input.sh
  5.         if service IIim status > /dev/null 2>&1 ; then
  6.                 /sbin/service IIim stop >/dev/null 2>&1
  7.                 /sbin/chkconfig --del IIim
  8.                 /usr/sbin/userdel htt 2>/dev/null 2>&1
  9.         fi
  10.         if [ -f /etc/X11/xinit/xinitrc.d/xinput ] ; then
  11.                 if ! grep -i "fcitx" /etc/X11/xinit/xinitrc.d/xinput >/dev/null 2>&1 ; then
  12.                         echo "/etc/X11/xinit/xinitrc.d/xinput be saved /etc/X11/xinit/xinitrc.d/xinput.rpmsave"
  13.                         cp -f /etc/X11/xinit/xinitrc.d/xinput /etc/X11/xinit/xinitrc.d/xinput.rpmsave
  14.                         sed -e 's/Chinput/fcitx/' \
  15.                             -e 's/chinput/fcitx/' \
  16.                         /etc/X11/xinit/xinitrc.d/xinput > /etc/X11/xinit/xinitrc.d/xinput.tmp
  17.                         mv -f /etc/X11/xinit/xinitrc.d/xinput.tmp /etc/X11/xinit/xinitrc.d/xinput
  18.                         chmod 755 /etc/X11/xinit/xinitrc.d/xinput
  19.                        
  20.                 fi
  21.         fi
  22. elif [ -f /etc/mandrake-release ] ; then
  23.         rm -f /etc/profile.d/input.sh
  24.         if [ -f /etc/X11/xinit/XIM ] ; then
  25.                 if ! grep -i "fcitx" /etc/X11/xinit/XIM >/dev/null 2>&1 ; then
  26.                         echo '/etc/X11/xinit/XIM be saved /etc/X11/xinit/XIM.rpmsave'
  27.                         cp -f /etc/X11/xinit/XIM /etc/X11/xinit/XIM.rpmsave
  28.                         sed -e 's/Chinput/fcitx/' \
  29.                             -e 's/chinput/fcitx/' \
  30.                         /etc/X11/xinit/XIM > /etc/X11/xinit/XIM.tmp
  31.                         mv -f /etc/X11/xinit/XIM.tmp /etc/X11/xinit/XIM
  32.                         chmod 755 /etc/X11/xinit/XIM
  33.                 fi
  34.         fi
  35. fi
复制代码
 楼主| 发表于 2004-5-22 21:53:57 | 显示全部楼层
不懂。

帮你顶一下
发表于 2004-5-22 22:09:31 | 显示全部楼层

关于哈斑竹的代码

http://www.linuxsir.cn/forum.php?mod=viewthread&tid=109559
最下面,不知哈斑竹有没有看:

rpm内部脚本关于redhat的这一段:
cp -f %{_sysconfdir}/X11/xinit/xinitrc.d/xinput %{_sysconfdir}/X11/xinit/xinitrc.d/xinput.rpmsave
把xinput备份在xinitrc.d内,应该是不对的。

我看了一下/etc/X11/xinit/xinitrc文件,有这么一段:
# run all system xinitrc shell scripts.
for i in /etc/X11/xinit/xinitrc.d/* ; do
if [ -x "$i" ]; then
. "$i"
fi
done
这说明:/etc/X11/xinit/xinitrc.d/下的所有可执行文件都会被xinitrc调用,包括xinput ,也包括xinput的备分文件,这样肯定发生冲突了。

input.sh脚本可能也有问题,特别是它修改或建立的.gnome2/session-manual文件,很多gnome启动慢或gnome崩溃的情况都跟这个文件有关,而这个文件都是斑竹的fcitx-2.XXX.rpm或是美化包内的input.sh脚本建立、修改的。具体原因我也不太清楚,看情况是权限问题。
发表于 2004-5-24 08:44:19 | 显示全部楼层

谢谢

字体的问题我再查查。
可以自定义打开/关闭输入法的热键(最多两个),只是默认只是ctrl+SPACE。
同样可以自定义翻页键,也是两个,默认只是-/=。
这个还不能指定禁用某个输入法,下一个版本吧。

另外,拼音应该是不会在第二个位置猜测词组的,第二个应该是已经输入过的用户词组或系统词组
最初由 hutigers 发表
下午刚刚收到南北传来的fcitx2.1.0。

在gentoo kernel 2.6.5 gnome2.6.0下编译通过。
下面讲一下我自己的感受。
[PHP]
1 界面的吸取了早期版本1.8.5的优点,可以用两种方法,简洁(类似1.85)和豪华(类似2.0.x)
两种。输入法包含了拼音、五笔、双拼、二笔两种,可以通过界面上的锁定图标来决定是否开启ctrl+shift切换各种输入法的功能。(锁定后,仍可以通过鼠标点击图标直接切换)
2 内部的设置选项变多拉。值得注意的是,拼音自动组词后,默认不会进行保存。(不知道是否有其它的基于词频的保存方法)我自己调成了自动保存。
3 拼音更加智能,fcitx的拼音除在第一位置上进行猜测组词,还会在第二位置上猜测组词,更为多样。
[/PHP]
bug及建议
1 初步测试发现,config文件中的字体似乎无效。
我有以下一些字体。
[PHP]hutigers@tux hutigers $ ls /usr/share/fonts/ttf/zh_CN/
encodings.dir  fonts.scale       FZKT_GB18030.TTF  gbsn00lp.ttf
fonts.cache-1  FZFS_GB18030.TTF  FZST_GB18030.TTF  gkai00mp.ttf
fonts.dir      FZHT_GB18030.TTF  FZSY_GB18030.TTF  simsun.ttc[/PHP]
我在字体部分指定simsun或者FZSY_GB18030均无效。

2ctrl+shift不能调出输入法了。只能通过ctrl+space调出。这在gnumeric下很不方便。(因为gnumeric的ctrl+space有它用)

3标点与选词之间不够健壮。例如
[PHP]输入woshiyipilaizibeifangdelang之后,如果你误按了标点键,则会自动选择第一组词,之后出现标点。而不是忽略按键等待选择。(我觉得后种更符和规律)。

4如果不使用fcitx的其它输入法,是否能够在配置文件中禁用一些输入法的调用呢?(一点建议)
[/PHP]

刚刚使用,如有不对之处,请指正。
 楼主| 发表于 2004-5-24 09:15:59 | 显示全部楼层
原来可以通过ctrl+del删除自定义的词的,现在好像不可以拉。

新的方法是如何删除呢?:ask
 楼主| 发表于 2004-5-24 09:23:57 | 显示全部楼层

回复: 谢谢

最初由 Yuking 发表
字体的问题我再查查。
可以自定义打开/关闭输入法的热键(最多两个),只是默认只是ctrl+SPACE。
同样可以自定义翻页键,也是两个,默认只是-/=。
这个还不能指定禁用某个输入法,下一个版本吧。

另外,拼音应该是不会在第二个位置猜测词组的,第二个应该是已经输入过的用户词组或系统词组


我想设成ctrl+shift的形式。

可是,我发现无论我设置成
[PHP]打开/关闭输入法=CTRL_SPACE CTRL_SHIFT[/PHP]
还是
[PHP]打开/关闭输入法=CTRL_SPACE CTRL_L_SHIFT[/PHP]

都无法调出输入法。

[PHP]是不是与锁定的功能冲突了呢?因为各个输入法之间也用ctrl+shift切换。[/PHP]
发表于 2004-5-24 09:28:21 | 显示全部楼层

回复: 回复: 谢谢

最初由 hutigers 发表
我想设成ctrl+shift的形式。

可是,我发现无论我设置成
[PHP]打开/关闭输入法=CTRL_SPACE CTRL_SHIFT[/PHP]
还是
[PHP]打开/关闭输入法=CTRL_SPACE CTRL_L_SHIFT[/PHP]

都无法调出输入法。

[PHP]是不是与锁定的功能冲突了呢?因为各个输入法之间也用ctrl+shift切换。[/PHP]


应该是CTRL_LSHIFT,你再设设试试
发表于 2004-5-24 10:05:03 | 显示全部楼层
还是不要把这个脚本和fcitx打包
应该分开。
就说mandrake吧,
该了系统默认的输入法后,有些程序就出问题了
比如rxvt(当然解决也不难)
而官方整合的chinput整可以正常工作。

最初由 哈蜜瓜 发表
把fcitx rpm内部脚本分离成可直接执行的脚本如下:


  1. #!/bin/bash
  2. /usr/bin/gtk-query-immodules-2.0 > /etc/gtk-2.0/gtk.immodules
  3. if [ -f /etc/redhat-release ] && ! [ -f /etc/mandrake-release ] ; then
  4.         rm -f /etc/profile.d/input.sh
  5.         if service IIim status > /dev/null 2>&1 ; then
  6.                 /sbin/service IIim stop >/dev/null 2>&1
  7.                 /sbin/chkconfig --del IIim
  8.                 /usr/sbin/userdel htt 2>/dev/null 2>&1
  9.         fi
  10.         if [ -f /etc/X11/xinit/xinitrc.d/xinput ] ; then
  11.                 if ! grep -i "fcitx" /etc/X11/xinit/xinitrc.d/xinput >/dev/null 2>&1 ; then
  12.                         echo "/etc/X11/xinit/xinitrc.d/xinput be saved /etc/X11/xinit/xinitrc.d/xinput.rpmsave"
  13.                         cp -f /etc/X11/xinit/xinitrc.d/xinput /etc/X11/xinit/xinitrc.d/xinput.rpmsave
  14.                         sed -e 's/Chinput/fcitx/' \
  15.                             -e 's/chinput/fcitx/' \
  16.                         /etc/X11/xinit/xinitrc.d/xinput > /etc/X11/xinit/xinitrc.d/xinput.tmp
  17.                         mv -f /etc/X11/xinit/xinitrc.d/xinput.tmp /etc/X11/xinit/xinitrc.d/xinput
  18.                         chmod 755 /etc/X11/xinit/xinitrc.d/xinput
  19.                        
  20.                 fi
  21.         fi
  22. elif [ -f /etc/mandrake-release ] ; then
  23.         rm -f /etc/profile.d/input.sh
  24.         if [ -f /etc/X11/xinit/XIM ] ; then
  25.                 if ! grep -i "fcitx" /etc/X11/xinit/XIM >/dev/null 2>&1 ; then
  26.                         echo '/etc/X11/xinit/XIM be saved /etc/X11/xinit/XIM.rpmsave'
  27.                         cp -f /etc/X11/xinit/XIM /etc/X11/xinit/XIM.rpmsave
  28.                         sed -e 's/Chinput/fcitx/' \
  29.                             -e 's/chinput/fcitx/' \
  30.                         /etc/X11/xinit/XIM > /etc/X11/xinit/XIM.tmp
  31.                         mv -f /etc/X11/xinit/XIM.tmp /etc/X11/xinit/XIM
  32.                         chmod 755 /etc/X11/xinit/XIM
  33.                 fi
  34.         fi
  35. fi
复制代码
 楼主| 发表于 2004-5-24 11:37:39 | 显示全部楼层

回复: 回复: 回复: 谢谢

最初由 KanKer 发表
应该是CTRL_LSHIFT,你再设设试试


OK。可以拉。谢谢。

不过,为什么帮助里面不是这么写的呢?:ask :ask

                                                                                
#除了“中英文快速切换键”外,其它的热键均可设置为两个,中间用空格分隔
[热键]
打开/关闭输入法=CTRL_SPACE CTRL_LSHIFT
#中英文快速切换键 可以设置为L_CTRL R_CTRL L_SHIFT R_SHIFT
中英文快速切换键=L_CTRL
GBK支持=CTRL_M
联想支持=CTRL_L
全半角=SHIFT_SPACE
中文标点=CTRL_.
上一页=- ,
下一页== .
第二三候选词选择键=SHIFT


我就是参考了这个才用L_SHIFT的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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