LinuxSir.cn,穿越时空的Linuxsir!

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

[原创]SCIM输入法安装和自动启动设置

[复制链接]
发表于 2004-8-9 18:29:45 | 显示全部楼层 |阅读模式
菜鸟们共享(我是标准的菜鸟^_^),不当之处请大虾们指正。

首先说说我的机器吧:AMD 2500+ 512DDR 装的是Redhat9.0,界面已经用firely提供的美化包美化了(linuxfans.org上有文章说明),X平台是Gnome,安装使用的是中文。

以前有过安装不成功的经历,查了很多有关SCIM的资料后,终于鼓起勇气再试一次。在
http://scim.freedesktop.org/Software/ScimDownload
下载了scim-0.99.5.tar.gz,scim-chinese-0.4.0.tar.gz的源代码,至于用源代码而不用二进制包(.rpm),是因为看了苏大侠的文章说
“目前仅提供基于 GCC 3.3.x, GLIBC 2.3.x, GTK+ 2.2.x, XFree86 4.3.x 的标准 Linux 系统以及为 UnitedLinux 1.0 编译的二进制包”,
我理解是用二进制包需要满足gcc版本等的要求,新装的RH9.0的gcc版本是3.2.2,可以用gcc -v查看,所以决定用源代码编译了。

在修改任何东西前先来个备份,以免弄错了后来还能补救一下,大虾们说这是好习惯。

一、安装:
1、tar zxvf scim-0.99.5.tar.gz
2、cd scim-0.99.5
3、./configure --prefix=/usr      
//  --prefix=/usr是设定软件的安装路径。
4、make ; make install

5、cd ..  //返回上一目录
假设scim-0.99.5.tar.gz和scim-chinese-0.4.0.tar.gz都在同一文件夹下
键盘上的tab键可以补齐所要输入的文字,象我这样的菜鸟不是一开始就知道的,但这个是蛮有用的
6、tar zxvf scim-chinese-0.4.0.tar.gz
7、cd scim-chinese-0.4.0
8、./configure --prefix=/usr
9、make ; make install

二、设置:
我直接把从网上下载下来的xinput取代了系统的xinput。

10、cp  xinput   /etc/X11/xinit/xinitrc.d/         
即把当前目录下的xinput拷贝到/etc/X11/xinit/xinitrc.d/,当然最好先把/etc/X11/xinit/xinitrc.d/下的xinput备份,且备份文件不要留在这个目录下,这里的文件好像都是要执行的,参见/etc/X11/xinit/xinitrc可知

网上下载的xinput如下,我做了一点点修改,就是把chinput那些语句注释掉了,因为没有卸载minichinput,不知道这样是不是保险一些
下面的脚本可以直接保存为xinput,然后拷贝到/etc/X11/xinit/xinitrc.d/ 下就行:

#---------------------------------------
脚本程序:

#!/bin/sh
# Copyright (C) 1999-2001 Red Hat, Inc.
#
# XIM( X Input Method ) script
#
# Korean part,etc contributed by
#        Won-kyu Park <wkpark@chem.skku.ac.kr>
#

oldterm=$TERM
unset TERM
# Load up the user and system locale settings
if [ -f /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 test x$LC_ALL != x ; then
    tmplang=$LC_ALL
elif test x$LC_CTYPE != x ; then
    tmplang=$LC_CTYPE
elif test x$LANG != x ; then
    tmplang=$LANG
elif [ -e /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
# FIXME: 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 [ x$GDMSESSION = xDefault ]; then
                 PREFERRED=gnome
         elif [ x$GDMSESSION = xGNOME ]; then
                 PREFERRED=gnome
         elif [ x$GDMSESSION = xKDE ]; 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 ] || [ x$1 = xdefault ]; 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.
#
if [ -z "$XIM" ]; then
    case $tmplang in
        ko*)
            if [ -e /usr/bin/ami ]; then
                    XIM="Ami"
            elif [ -e /usr/bin/hanIM ]; then
                    XIM="hanIM"
            fi
        ;;
        ja*)
            if [ -e /usr/X11R6/bin/xwnmo ]; then
                    XIM="_XWNMO"
            elif [ -e /usr/X11R6/bin/kinput2 ]; then
                    XIM="kinput2"
            elif [ -e /usr/X11R6/bin/skkinput ]; then
                    XIM="skkinput"
            fi
        ;;
        zh_CN*)
         #   if [ -e /usr/bin/chinput ]; then
         #       XIM="chinput"
            if [ -e /usr/bin/scim ]; then
                XIM="scim"
            elif [ -e /usr/bin/fcitx ]; then
                XIM="fcitx"
            fi
        ;;
        zh_TW*)
            if [ -e /usr/X11R6/bin/xcin ]; then
                XIM="xcin"
            fi
        ;;
        *)
            XIM="none"
        ;;
    esac
fi

#
# set a proper XIM program with respect to $XIM
#
if [ -f ~/.ime ]; then
  tmpime=$(<~/.ime)
  if which $tmpime;then
    XIM=$tmpime
    tmpime=True
  fi
fi

if [ -z "$XIM_PROGRAM" ]; then
   case "$XIM" in
      Ami)
        case "$PREFERRED" in
           gnome)
                if which ami_applet >/dev/null 2>&1 ; then
                        DELAY_START=2
                        XIM_PROGRAM=ami_applet
                        XIM_ARGS=""
                elif which ami >/dev/null 2>&1 ; then
                        XIM_PROGRAM=ami
                fi
          ;;
          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
        ;;
      hanIM)
        if which hanIM >/dev/null 2>&1 ; then
                XIM_PROGRAM=hanIM
        fi
        ;;
     # chinput
     #  XIM=Chinput
     # XIM_PROGRAM=chinput ;;
      scim)
        LC_ALL=zh_CN
        XIM=SCIM
        XIM_PROGRAM=scim
        XIM_ARGS="-d" ;;
      fcitx)
        XIM_PROGRAM=fcitx ;;
      xcin)
        XIM_PROGRAM=xcin
        XIM_ARGS="-x xcin" ;;
      _XWNMO)
        XIM_PROGRAM=xwnmo
         ;;
      kinput2)
        XIM_PROGRAM=kinput2
        if [ X"`ldd /usr/X11R6/bin/kinput2 | grep libcanna`" = X ] ; then
                XIM_ARGS="-wnnenvrc /etc/FreeWnn/ja/wnnenvrc"
        else
                XIM_ARGS="-canna"
        fi
         ;;
      skkinput)
        XIM_PROGRAM=skkinput
        XIM_ARGS="" ;;
      *)
        XIM_PROGRAM=/bin/true ;;
   esac
fi
if [ ! -f ~/.ime ] || ! $tmpime; then
  echo $XIM_PROGRAM >~/.ime
  unset tmpime
fi
[ -z "$XMODIFIERS" -a -n "$XIM" ] && export XMODIFIERS="@im=$XIM"

# execute XIM_PROGRAM


if test x$DELAY_START != x; then
        #spawn to new process with external shell
  bash -c "
    while [ x\`ps -C panel -o pid=\` == x ]; do
            sleep $DELAY_START
    done
    [ -z "\$XMODIFIERS" -a -n "$XIM" ] && export XMODIFIERS="@im=$XIM"
    sleep $DELAY_START
    which $XIM_PROGRAM > /dev/null 2>&1 && LANG=$tmplang $XIM_PROGRAM $XIM_ARGS &
  " &

else
        which $XIM_PROGRAM > /dev/null 2>&1 && LANG=$tmplang $XIM_PROGRAM $XIM_ARGS &
fi


#---------------------------------------------

11、chmod   +x   /etc/X11/xinit/xinitrc.d/xinput   //把这个文件加上可执行权限

下面要修改i18n以适应输入法:

12、cd  /etc/sysconfig/
13、cp  i18n  i18n.old
14、vi  i18n    //将下面这一段拷贝到i18n里保存即可。

――――――――――――――――――――
LANGUAGE=zh_CN.GB2312:zh_CN:zh
LC_ADDRESS=zh_CN
LC_COLLATE=zh_CN
LC_NAME=zh_CN
XIM=SCIM
LC_NUMERIC=zh_CN
LC_TIME=zh_CN
LC_MEASUREMENT=zh_CN
LANG=zh_CN
LC_MESSAGES=zh_CN
LC_IDENTIFICATION=zh_CN
LC_CTYPE=zh_CN
LC_TELEPHONE=zh_CN
CONSOLE_NOT_LOCALIZED=yes
ENC=gb
LC_MONETARY=zh_CN
XIM_PROGRAM=zh_CN
LC_PAPER=zh_CN
XMODIFIERS="@im=SCIM"
――――――――――――――――――

完成之后可以注销X WINDOWS,重新登录到图形界面。
打开一个终端,输入scim -d试试,如果显示如下,嘿嘿,你成功了90%

――――――――――――――――――――――――――――――――
Smart Common Input Method 0.99.5

Launching a SCIM daemon with Socket FrontEnd...
Loading simple Config module ...
Creating backend ...
Loading IMEngine module: pinyin ...
    Loading IMEngine Factory 0 ... : OK
pinyin IMEngine module is successfully loaded.
Loading IMEngine module: rawcode ...
    Loading IMEngine Factory 0 ... : OK
rawcode IMEngine module is successfully loaded.
Loading IMEngine module: table ...
Failed to load table IMEngine module.
Loading socket FrontEnd module ...
Starting SCIM as daemon ...
Launching a SCIM process with x11...
Loading socket Config module ...
Creating backend ...
Loading IMEngine module: socket ...
    Loading IMEngine Factory 0 ... : OK
    Loading IMEngine Factory 1 ... : OK
    Loading IMEngine Factory 2 ... : OK
socket IMEngine module is successfully loaded.
Loading x11 FrontEnd module ...
Starting SCIM as daemon ...
SCIM has been successfully launched.
――――――――――――――――――――――――――――――――
这时SCIM就可以用了,但是还不能自动启动,也就是最后的10%了。说到自动启动SCIM真是血泪史阿,我几乎把linuxsir上的所有方法都试了一遍,耗费了整整两天,中途还进不了GNOME,只差吐血了。幸好在前面有一篇帖子(作者是adam,感谢哥们)提供了一个很好的方法。

15、通过菜单: 应用程序-->首选项-->更多首选项--->会话-->启动程序(Startup Programs)-->增加(Add)
       输入:scim -d ,保存

16、重启机器,打开任何一个可输入的应用程序按ctrl+space键测试一下,包括OpenOffice、OpenQQ 、gedit 、终端等等。

Oh Yes,我的全部通过。

总结一下,我在Windows下喜欢使用微软拼音输入法,微软拼音输入法倒是蛮像SCIM的,只是用的不久,我打字又慢,输入的拼音字母不能像微软输入法一样自动跟踪光标的移动,眼睛在两个地方转来转去,有点累。不知道是不是我没有设置好,我再看看,可能也是没有用习惯吧。

感谢苏大侠的无私奉献,为喜欢Linux的兄弟姐妹们提供了这么好的中文输入法!

说了这么多,兄弟们不要扔砖头就好了,虽然想要房子,但也没打算收集砖头自己建阿:-)
 楼主| 发表于 2004-8-9 18:42:31 | 显示全部楼层
可以下载这个xinput,以免由于浏览器的问题弄坏了源代码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2004-8-10 08:17:26 | 显示全部楼层
如果你使用gnome,scim不需要设置即可自动启用。如果使用KDE,直接把SCIM添加到AUTOSTART里面,现在看上去不再需要什么配置了。
发表于 2004-8-10 08:26:47 | 显示全部楼层
skim 不需要设置 就可以随 KDE 启动 ;)
 楼主| 发表于 2004-8-10 09:33:20 | 显示全部楼层
最初由 ganloo 发表
如果你使用gnome,scim不需要设置即可自动启用。如果使用KDE,直接把SCIM添加到AUTOSTART里面,现在看上去不再需要什么配置了。



你是说在gnome里安装后就可以使用了么,不需要配置xinput和i18n,?“现在”是指什么版本呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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