|
发表于 2003-4-4 23:18:23
|
显示全部楼层
BSD下绝对可以用的,方法如下:
我在RedHat下使用过小企鹅输入法fcitx,挺好用的,在linuxsir上有它的很多信息。那么,在FreeBSD上能不能用它呢?试试看把。我下载了小企鹅输入法的输入法的源代码包fcitx-1.8.2.tar.gz。我对于XIM几乎没有什么了解,但连蒙带唬的编译软件包却是我的特长。先make一下试试,呵呵出错。那就修改一下Makefile吧:
把Makefile中的如下内容
CFLAGS= -O2 -fno-strength-reduce
INC = -I/usr/X11R6/include -I
LIB = -L/usr/X11R6/lib -lX11
修改成
CFLAGS= -O2 -fno-strength-reduce -DSIGUNUSED=32
INC = -I/usr/X11R6/include -I. -I/usr/local/include/
LIB = -L/usr/X11R6/lib -lX11 -L/usr/local/lib -liconv
再make一下,呵呵,当然成功了。但fcitx还是不好使。嗯,研究研究。fcitx源代码写的非常工整,看上去很养眼睛。软件模块划分也非常清楚,因此跟踪起来也非常容易。埃,国内要是多一些这样的程序员就好了。fcitx的作者所在的公司真是好福气。
大致上,我简单修改了fcitx的代码。由于我只是想让它再FreeBSD上运行,因此没有作什么判断,而是暴力修改。
修改文件xim.c,查找关键字IMOpenIM所在的行。删除该行,把它替换成如下内容:
ims = IMOpenIM (dpy,
IMModifiers, "Xi18n",
IMServerWindow, im_window,
IMServerName, imname,
IMLocale, "zh_CN",
IMServerTransport, transport,
IMInputStyles, input_styles,
IMEncodingList, encodings,
IMOnKeysList, on_keys,
IMProtocolHandler, MyProtoHandler,
IMFilterEventMask, filter_mask,
NULL);
该行下面几行,有3个函数调用IMSetIMValues,可以注释掉。当然,不注释掉也行。呵呵,但最后一个IMSetIMValues调用令我非常费解。
现在,fcitx可以正常运行了,但看不到汉字。编辑文件window.c,查找关键字XCreateFontSet,找到第二个匹配。第一个是XFT模式的。在函数XCreateFontSet前加一行:
setlocale (LC_CTYPE, "zh_CN.EUC");
重新make,make install。修改~/.xinitrc 文件,添加如下内容:
export XMODIFIERS=@im=fcitx
fcitx &
重新进入KDE,一切OK。由于我没有仔细看fcitx的源代码,因此上面的修改是否要造成不良后果,我就不知道了。不过这篇文章就是用fcitx在FreeBSD下写的。感谢fcitx的作者。修改了你的代码,你可别生气呀。
详细的文章请阅读:
http://www.linuxsir.cn/forum.php?mod=viewthread&tid=29569
FreeBSD浅度历险{zt} |
|