LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1234|回复: 11

FC2英文local下输入中文之scim

[复制链接]
发表于 2004-5-22 14:09:21 | 显示全部楼层 |阅读模式
我在FC1下一直用scim,它的确是一个非常好用的输入法。转到FC2后,以前的安装方法已经不起作用了,经过多次摸索,终于在FC2下安装成功。
首先,安装中文字体(不用多说了吧,已经有很多文章讨论过了。)
然后到以下网址下载scim:  http://www.freedesktop.org/~suzhe/download.html
只需两个文件:scim-0.9.7-1.i586.rpm和scim-chinese-0.3.0-1.i586.rpm
如果你想用五笔、仓颉等输入法可以下载scim-tables-zh-0.3.5-1.i586.rpm装上。
接下来主要需要修改一个文件/etc/X11/xinit/xinit/xinitrc.d/xinput
修改后文件内容如下:
#!/bin/bash
# Copyright (C) 1999 - 2004 Red Hat, Inc. All rights reserved. This
# copyrighted material is made available to anyone wishing to use, modify,
# copy, or redistribute it subject to the terms and conditions of the
# GNU General Public License version 2.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# XIM( X Input Method ) script
#
# Original Korean support contributed by:
#        Won-kyu Park <wkpark@chem.skku.ac.kr>
#

oldterm=$TERM
unset TERM
# Load up the user and system locale settings
if [ -r /etc/profile.d/lang.sh ]; then
  . /etc/profile.d/lang.sh
fi
export TERM=$oldterm

tmplang="en_US"
#if test x$GDM_LANG != x ; then
#    tmplang=$GDM_LANG
if [ -n "$LC_ALL" ]; then
    tmplang=$LC_ALL
elif [ -n "$LC_CTYPE" ]; then
    tmplang=$LC_CTYPE
elif [ -n "$LANG" ]; then
    tmplang=$LANG
elif [ -r /etc/sysconfig/i18n ]; then
    . /etc/sysconfig/i18n
    tmplang=$LANG
fi

#
# check to see if the user has a preferred desktop
#

PREFERRED=

# runlevel 5 - checks which session manager it will load
# runlevel 3 - checks which desktop manager it will load
if [ -f /etc/sysconfig/desktop ]; then
# WARNING: This grep regex can be combined when someone has copious spare time.
if grep -q "GNOME" /etc/sysconfig/desktop 2>/dev/null || grep -q "\"\"" /etc/sysconfig/desktop 2>/dev/null; then
         # runlevel 5 with gdm - checks for $GDMSESSION and set the $PREFERRED
         if [ "$GDMSESSION" = "Default" ]; then
                 PREFERRED=gnome
         elif [ "$GDMSESSION" = "GNOME" ]; then
                 PREFERRED=gnome
         elif [ "$GDMSESSION" = "KDE" ]; then
                 PREFERRED=kde
         else
                 # applies if no env and runlevel 3
                 PREFERRED=gnome
         fi
elif grep -q "KDE" /etc/sysconfig/desktop 2>/dev/null; then

        if [ -z $1 -o "$1" = "default" ]; then
                 # applies if no arg passed by kdm and runlevel 3
                 PREFERRED=kde
        else
                 # otherwise assign $PREFERRED from arg
                 PREFERRED=$1
        fi
fi
fi

if [ -z "$PREFERRED" ]; then

        GSESSION=gnome-session
        STARTKDE=startkde

        # by default, we run GNOME.
        if which "$GSESSION" > /dev/null 2>&1; then
                PREFERRED=gnome
        fi

        # if GNOME isn't installed, try KDE.
        if which "$STARTKDE" > /dev/null 2>&1; then
                PREFERRED=kde
        fi
fi


#
# check $XIM and set a default $XIM value.
#

# default to iiim if htt server is running
if [ -z "$XIM" ]; then
    case $tmplang in ( ar* | be* | ja* | ko* | th* | zh* | *_IN* )
        if /sbin/service IIim status 2>/dev/null | /bin/grep -q pid ; then
          XIM=htt
        fi
        ;;
    esac

fi

# otherwise revert to legacy XIM client
if [ -z "$XIM" ]; then
    case $tmplang in
        ja*)
# WARNING: This binary should be in /usr/bin, not in /usr/X11R6/bin, because
# /usr/X11R6/bin is strictly for software supplied as an official part of
# X11R6, not for random applications to drop files in.
            if [ -x /usr/X11R6/bin/xwnmo ]; then
                    XIM="_XWNMO"
            elif [ -x /usr/bin/uim-xim ]; then
                    XIM="uim"
# WARNING: This binary should be in /usr/bin, not in /usr/X11R6/bin, because
# /usr/X11R6/bin is strictly for software supplied as an official part of
# X11R6, not for random applications to drop files in.
            elif [ -x /usr/X11R6/bin/kinput2 ]; then
                    XIM="kinput2"
# WARNING: This binary should be in /usr/bin, not in /usr/X11R6/bin, because
# /usr/X11R6/bin is strictly for software supplied as an official part of
# X11R6, not for random applications to drop files in.
            elif [ -x /usr/X11R6/bin/skkinput ]; then
                    XIM="skkinput"
            fi
        ;;
        ko*)
            if [ -x /usr/bin/nabi ]; then
                    XIM="nabi"
            elif [ -x /usr/bin/ami ]; then
                    XIM="Ami"
            elif [ -x /usr/bin/hanIM ]; then
                    XIM="hanIM"
            fi
        ;;
        zh_CN*)
            if [ -x /usr/bin/chinput ]; then
                XIM="Chinput"
            fi
        ;;
        zh_TW*)
# WARNING: This binary should be in /usr/bin, not in /usr/X11R6/bin, because
# /usr/X11R6/bin is strictly for software supplied as an official part of
# X11R6, not for random applications to drop files in.
            if [ -x /usr/X11R6/bin/xcin ]; then
                XIM="xcin"
            fi
        ;;
        en_US*)
            if [ -x /usr/bin/scim ]; then
                XIM="SCIM"
            fi
        ;;
    esac
fi

#
# set a proper XIM program with respect to $XIM
#
if [ -z "$XIM_PROGRAM" ]; then
   case "$XIM" in
      Ami)
        case "$PREFERRED" in
           kde)
                if which wmami >/dev/null 2>&1 ; then
                        XIM_PROGRAM=wmami
                        XIM_ARGS="-wait"
                elif which ami >/dev/null 2>&1 ; then
                        XIM_PROGRAM=ami
                fi
                ;;
           *)
                if which ami >/dev/null 2>&1 ; then
                        XIM_PROGRAM=ami
                fi
                ;;
        esac
        ;;
      Chinput)
        XIM_PROGRAM=chinput
        ;;
      hanIM)
        if which hanIM >/dev/null 2>&1 ; then
                XIM_PROGRAM=hanIM
        fi
        ;;
      htt)
        XIM_PROGRAM=httx
        ;;
      kinput2)
        XIM_PROGRAM=kinput2
        if [ -z "$XIM_ARGS" ]; then
            if /usr/bin/cannaping 2>/dev/null ; then
                XIM_ARGS="-canna +kinput -xim"
            elif /sbin/service FreeWnn status 2>/dev/null | /bin/grep -q pid
            then
                XIM_ARGS="-wnn +kinput -xim"
            else
                XIM_ARGS="+kinput -xim"
            fi
        fi
        ;;
      nabi)
        XIM_PROGRAM=nabi
        ;;
      skkinput)
        XIM_PROGRAM=skkinput
        ;;
      uim)
        XIM_PROGRAM=uim-xim
        ;;
      _XWNMO)
        XIM_PROGRAM=xwnmo
        ;;
      xcin)
        XIM_PROGRAM=xcin
        XIM_ARGS="-x xcin"
        ;;
      SCIM)
        XIM_PROGRAM=scim
        XIM_ARGS="-d"
        ;;
   esac
fi

# set default gtk IM module
if [ -z "$GTK_IM_MODULE" ]; then
   case "$XIM" in
      htt)
        GTK_IM_MODULE=iiim
         ;;
      SCIM)
        GTK_IM_MODULE=xim
         ;;
   esac
fi
[ -n "$GTK_IM_MODULE" ] && export GTK_IM_MODULE

# setup XMODIFIERS
[ -z "$XMODIFIERS" -a -n "$XIM" ] && export XMODIFIERS="@im=$XIM"

# execute XIM_PROGRAM
which "$XIM_PROGRAM" > /dev/null 2>&1 && LANG="$tmplang" "$XIM_PROGRAM" $XIM_ARGS &

还有一个文件/etc/gtk-2.0/gtk.immodules,这个文件中的很多输入法模块都没用(你在输入文字的地方点右键,会看到Input methods),除了xim模块外全部注释掉(我把它们全删了,省事、方便)。
# GTK+ Input Method Modules file
# Automatically generated file, do not edit
#
# ModulesPath = /root/.gtk-2.0/2.4.0/i386-redhat-linux-gnu/immodules:/root/.gtk-2.0/2.4.0/immodules:/root/.gtk-2.0/i386-redhat-linux-gnu/immodules:/root/.gtk-2.0/immodules:/usr/lib/gtk-2.0/2.4.0/i386-redhat-linux-gnu/immodules:/usr/lib/gtk-2.0/2.4.0/immodules:/usr/lib/gtk-2.0/i386-redhat-linux-gnu/immodules:/usr/lib/gtk-2.0/immodules
#
"/usr/lib/gtk-2.0/2.4.0/immodules/im-xim.so"
"xim" "X Input Method" "gtk20" "/usr/share/locale" "ko:ja:zh"

好了,全部完成,注消一下,scim就可以用了。
不知为甚么,我注消第一次后输入法不能用,注消第二次后才可以。如果你有类似问题,可以试试。
发表于 2004-5-25 13:19:43 | 显示全部楼层
[second@localhost second]$ scim
Smart Common Input Method 0.9.7

Loading simple Config module ...
Creating backend ...
Loading Server module: pinyin ...
    Loading Server Factory 0 ... : OK
pinyin Server module is successfully loaded.
Loading Server module: rawcode ...
    Loading Server Factory 0 ... : OK
rawcode Server module is successfully loaded.
Loading Server module: table ...
    Loading Server Factory 0 ... : OK
    Loading Server Factory 1 ... : OK
    Loading Server Factory 2 ... : OK
    Loading Server Factory 3 ... : OK
    Loading Server Factory 4 ... : OK
    Loading Server Factory 5 ... : OK
    Loading Server Factory 6 ... : OK
    Loading Server Factory 7 ... : OK
    Loading Server Factory 8 ... : OK
    Loading Server Factory 9 ... : OK
    Loading Server Factory 10 ... : OK
table Server module is successfully loaded.
Loading x11 FrontEnd module ...
Starting SCIM ...
scim::FrontEnd: X11 -- failed to connect to the panel daemon!


为什么我用不了?
发表于 2004-5-25 15:51:49 | 显示全部楼层
楼上的是GNOME么,我的就发声这个情况
发表于 2004-5-25 16:00:34 | 显示全部楼层
是的。FC2
发表于 2004-5-25 17:06:35 | 显示全部楼层
me,too!!!!
发表于 2004-5-25 17:45:41 | 显示全部楼层
如果用 FC2 的话,需要重新编译 SCIM。
发表于 2004-5-25 23:28:01 | 显示全部楼层
哦,原来如此,马上去办
发表于 2004-5-26 13:03:12 | 显示全部楼层
plz never only show the xinput file, which will puzzle newbies, for other programs may modify this file, so just overwriting it may cause unknown problem

plz give the procedures you make in the xinput file

thx
发表于 2004-5-26 14:23:21 | 显示全部楼层
最初由 james_su 发表
如果用 FC2 的话,需要重新编译 SCIM。

可以用了。:thank
 楼主| 发表于 2004-5-26 19:32:03 | 显示全部楼层
没有必要编译SCIM,我的就没有。如果用scim-chinese-0.3.0-1.i586.rpm和scim-0.9.7-1.i586.rpm有问题,请换用scim-chinese-0.2.7-1.i586.rpm,问题可能会解决。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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