找回密码
 注册
查看: 4078|回复: 4

gentoo中文输入法自动加载解决办法!

[复制链接]
发表于 2004-10-20 16:11:27 | 显示全部楼层 |阅读模式
首先把下面的内容保存为xinputrc放到/usr/local/bin
[code:1]
#!/bin/bash
#Gentoo Linux Chinese Portage Group
#http://gentoo.linuxsir.org
#Author sunmoon1997
#oct 20, 2004

CONF="/etc/conf.d/xinput.conf"
USER_CONF="${HOME}/.xinput.conf"
PROGRAM=""
XIM=""
XIM_PROGRAM=""
XMODIFIERS=""
GTK_IM_MODULE=""
QT_IM_MODULE=""

unset realserver
unset program
unset parameters
unset delay_time
unset setxlocale

if [ -f "$USER_CONF" ];then
echo "using configure file $USER_CONF"
source $USER_CONF
else
if [ -f "$CONF" ];then
  source $CONF
  echo "using configure file $CONF"
else
  echo "You SYSTEM miss the Xinput configure file \'$CONF\'"
  exit 1
fi
fi

if [ -z `type -p $program` ];then
echo "$program cannot be found in \'$PATH\'"
exit 1
fi

PROGRAM=`awk -v i=$program 'BEGIN{print toupper(i)}'`
XIMSERVER="$PROGRAM"

if [ "x$realserver" != "x" ];then
XIMSERVER=`awk -v i=$realserver 'BEGIN{print toupper(i)}'`
echo "setting XIMSERVER to $XIMSERVER($realserver)"
fi

if [ "x$qt_im_module" = "x" ];then
QT_IM_MODULE="XIM"
echo "setting QT_IM_MODULE to XIM!"
else
QT_IM_MODULE=`awk -v i=$qt_im_module 'BEGIN{print toupper(i)}'`
echo "setting QT_IM_MODULE to $QT_IM_MODULE"
fi

if [ "x$gtk_im_module" = "x" ];then
GTK_IM_MODULE="XIM"
echo "setting GTK_IM_MODULE to XIM!"
else
GTK_IM_MODULE=`awk -v i=$gtk_im_module 'BEGIN{print toupper(i)}'`
echo "setting GTK_IM_MODULE to $GTK_IM_MODULE"
fi

if [ "$XIMSERVER" = "SKIM" ];then
echo "You should set realserver to scim!"
XIMSERVER="SCIM"
fi

XIM="$XIMSERVER"
XIM_PROGRAM="$program"
XIM_ARGS="$parameters"
XMODIFIERS="@im=$XIMSERVER"

export XIM XIM_PROGRAM XMODIFIERS GTK_IM_MODULE QT_IM_MODULE

if [ "x$setxlocale" = "xtrue" ];then
LANGUAS=$XLANGUAS
LANG=$XLANG
LC_ALL=$XLC_ALL
LC_CTYPE=$XLC_CTYPE
LC_NUMERIC=$XLC_NUMERIC
LC_TIME=$XLC_TIME
LC_COLLATE=$XLC_COLLATE
LC_MONETARY=$XLC_MONETARY
LC_MESSAGES=$XLC_MESSAGES
LC_PAPER=$XLC_PAPER
LC_NAME=$XLC_NAME
LC_ADDRESS=$XLC_ADDRESS
LC_TELEPHONE=$XLC_TELEPHONE
LC_MEASUREMENT=$XLC_MEASUREMENT
LC_IDENTIFICATION=$XLC_IDENTIFICATION

export  LANGUAS LANG LC_ALL LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY
export  LC_MESSAGES LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION
fi

#start xim server
if [ "x$delay_time" != "x" ]; then
#spawn to new process with external shell
bash -c "
while [ x\`ps -C panel -o pid=\` == x ];
do
  sleep $delay_time
done
sleep $delay_time
$XIM_PROGRAM $XIM_ARGS &
" &
else
$XIM_PROGRAM $XIM_ARGS &
fi
[/code:1]
再执行
#chmod a+x /usr/local/bin/xinputrc

给脚本加上可执行属性。
然后
#ln -s /usr/local/bin/xinputrc /etc/X11/xinit/xinitrc.d/100xinputrc

另外还需要一个配置文件xinput.conf, 默认的位置为/etc/conf.d/,个人配置文件为~/.xinput.conf
参考内容如下:
[code:1]#x input mathod program
#fcitx, scim, skim
#any of your favourite im.
program="skim"

#x input mathod program parameters
#if you use fcitx, just set it to none.
#scim & scim need a addtion option `d' to
#tell them run as daemon.
parameters="-d"

#real xinput mothod server
#some times the im program is not the real im server
#so it's necessary to  tell 'xinputrc' who is the real sever.
#but now 'xinputrc' know the skim's im server is scim
#instead of skim, you can comment out the following line
#it will be work too.
realserver="scim"

#delay a few seconds to load xinput mothod server
#to prevent freeze your desktop enviroment while run xim program before
#loading it in some case.
#delay_time=0

#im module setting for gtk & qt
#set both of them to xim by default.
gtk_im_module="scim"
qt_im_module="scim"

#use another locale instead of default settings
#you should not use any LC_* enviroment variable here.
#setxlocale='true' | 'false'
#XLANGUAS="zh_CN.GB18030"
#XLANG="zh_CN"
#XLC_ALL=zh_CN.GB18030
#XLC_CTYPE="zh_CN.GB18030"
#XLC_NUMERIC="zh_CN.GB18030"
#XLC_TIME="zh_CN.GB18030"
#XLC_COLLATE="zh_CN.GB18030"
#XLC_MONETARY="zh_CN.GB18030"
#XLC_MESSAGES="zh_CN.GB18030"
#XLC_PAPER="zh_CN.GB18030"
#XLC_NAME="zh_CN.GB18030"
#XLC_ADDRESS="zh_CN.GB18030"
#XLC_TELEPHONE="zh_CN.GB18030"
#XLC_MEASUREMENT="zh_CN.GB18030"
#XLC_IDENTIFICATION="zh_CN.GB18030"
[/code:1]

好了,到这里就大功造成了。
发表于 2004-10-20 18:40:54 | 显示全部楼层
呵呵, 看看我的办法是不是简单一点点 (限于 gnome 用户, 其他 DE 我没用过, 最后一步
改改应该就一样)

1. vi /etc/env.d/99local (gentoo 专门用以设置全局用户自定义环境变量的文件)
加入三行:
[code:1]
XMODIFIERS="@im=fcitx"
XIM="fcitx"
XIM_PROGRAM="fcitx"
[/code:1]

2. 运行 env-update, 这些环境变量立即生效

3. 在 gnome 里: 应用程序 -> 桌面首选项 -> 高级 -> 会话 里点 "启动程序", 然后点
"添加", 输入要启动的输入法, 如我用 fcitx. 关闭, 注销再进来就可以了
回复

使用道具 举报

发表于 2004-10-20 18:51:31 | 显示全部楼层
我用的rhcl把Cure兄的三行加在用户家目录的.bashrc里就可以了,适用于kde但是对于xfce4不合适。
回复

使用道具 举报

 楼主| 发表于 2004-10-20 19:40:43 | 显示全部楼层
我的方法在kde,gnome, xfce4,都测试通过。用kdm, gdm, startx都行~
完善之后,还可以让X使用和系统不同的locale, 而设置也会将非常方便~
回复

使用道具 举报

发表于 2004-10-21 10:20:04 | 显示全部楼层
嗯, 要适用性好就得多花功夫, 俺的就管 gnome, 还得单独给每个账号都加一次
自动启动, 幸好机器上就两个账号, hoho
回复

使用道具 举报

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

本版积分规则

GMT+8, 2025-2-13 14:47 , Processed in 0.063928 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

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